Closed ndehio closed 3 weeks ago
As already state by Christoph in the Franka Community, the problem here is that you control everything in one thread, so I would not consider that as a bug of libfranka
.
To elaborate on this a bit more: The FCI control loop operates at 1kHz, so we need every millisecond a control command. The time you have on the libfranka
side is even far lower, as the network delay, processing and checking of your commands, etc. takes time. Late control commands are considered as lost, we check that through the sequence number which is sent out in the robot state and received by a control command. There is no buffering of your commands happening, we will just interpolate depending on your previous commands or stop the robot if the control_command_success_rate
is too low.
The problem now of having two robots controlled in one thread is that the internal FCI clock is not synchronized between the robots (how should they). So the cycles between robot 1 and robot 2 are shifted by a (random) delta
(with 0 <= delta < 1ms
). In your code you wait for the robot states after each other, what only works when delta
is near 0. If delta
is nearer to 1ms all packets for one robot arrive late at the FCI and are dropped.
You can use our ROS implementation or I would be happy reviewing a PR for a libfranka implementation (example).
There is soon coming something for FR3s and ROS 2 :partying_face:
Hi, I am trying to control two panda-robots via libfranka (without ros). The robots are directly connected to my network card. I set IP addresses "172.16.0.2" and "172.16.1.2" and can ping them both. I can control them individually without any problem. Unfortunately, I did not find an example for multi-panda control, so I wrote my own one, see below. The following test program is able to control a single robot, but fails when controlling two robots. The
control_command_success_rate
received is always zero for the first robot and drops to zero for the second robot after approximately 40-60 iterations. Note that themotion_id
received is identical for both pandas. Is this a problem? Could you please provide a running example? kind regards Niels