Force Torque Sensor Frequency

I have a haptic display which runs at 1khz, and I would like to integrate it with the xArm7 with force-torque sensor.

As far as I can tell, the measurements from the force-torque sensor are only published at 200Hz on the report socket (port 30000).

Is it possible to get measurements at a higher frequency (ideally 1khz)? Is this a limitation on the software side or the hardware side?

The 200Hz update rate is primarily limited by the communication bandwidth between the xArm 7 robotic arm and its controller. Internally, the force-torque sensor data is transmitted together with joint data over an RS-485 running at 2 Mbps. Although the sensor itself supports a sampling rate of 1000Hz, the controller can only stably receive and forward this data at up to 200Hz due to this bus bandwidth constraint.

Thanks for the explanation. Let me see if I understand.

                                                       
 Robot──────┐┌────────────┐     ┌───────────┐   ┌────┐ 
            └┼ Signal Hub ┼─────┤Control Box┼───┤ PC │ 
  FT ────────┴────────────┘     └───────────┘   └────┘ 
                                                       

The Signal Hub is receiving at 2Mbs. It could comfortably receive joint angles + FT outputs at 1khz. However, the path from Signal Hub ↔ Control Box is limited by the controller sampling rate to 200hz.


We treat the FT sensor as a joint (please check the image, the FT sensor act as joint ID 8) for communication purposes. The limit is the physical RS485 cable connecting the robot arm and control box. The control box gets and sends data for all joints (including the FT sensor) at 200Hz through the RS485 cable. Each frame of data includes joint status, joint angles, joint current values, and other related information.

Since the baud rate of the RS485 is 2M and each data frame is relatively large, the maximum stable frequency for data transmission is 200Hz. To increase the frame rate, the baud rate would need to be increased.

Actually, if you connect the FT sensor directly to your PC using a USB-422 cable, you can receive 1kHz data from the FT sensor.

I see. So each frame must be about 1KB! Meanwhile I estimate that encoding just eight joints with floating point would be about 32 bytes. If you add in motor current, it would still be well under 100 bytes. I’m curious what the other data is?

I’m interested in experimenting with connecting the FT sensor directly to PC as you said. I imagine there is a higher level protocol (modbus?) for talking to the sensor. Do you have any documentation on this?

Hi Mark,
To access the FT sensor directly via USB-to-RS422, you would need to disassemble the sensor and remove its internal driver board, then connect the sensor directly using an RS-422 cable.
However, we do not recommend this approach. Disassembling the sensor will void its warranty, and there’s also a risk that it may be difficult or even impossible to reassemble it properly afterward.

Oh I definitely want to avoid disassembly. But I’m wondering if there is another way. Since RS422 takes four wires, if you let me know which pins are which on the cable, wouldn’t I be able to splice my own connector?

Can you also explain the large data frame size? Again, I calculated under 100 bytes for a frame of 16 floating point values. I’m wondering whether a future firmware update from your side could shrink the data frame and thereby increase the effective data rate.

This would be a huge help since I’m experimenting with a custom admittance controller (previously posted here Xarm7 Admittance Control) and it’s facing difficulty when encountering hard surfaces because of the low control frequency.

Let me figure out a way to let you use the RS-485 to access the FT sensor data.