frankaemika / libfranka

C++ library for Franka research robots
https://frankaemika.github.io
Apache License 2.0
232 stars 153 forks source link

Expected average package loss for real-time communication loop (UDP) #36

Open markusgft opened 5 years ago

markusgft commented 5 years ago

Using the panda, we get a non-insignificant rate of package loss (according to the test-executable "communication test" that is shipped with libfranka, up to 10% of package loss can be considered a "success", in my own work I normally see 2-4 % of average package loss).

When talking to other Franka panda users, the statements about communication loss rate vary (anything between 0.5 and 5% gets mentioned frequently), but it seems that the community is generally not clear if this is expected behaviour. Of course the package loss using UDP may vary with overall network traffic, hardware performance etc. Still it would be great if someone could elaborate on expected average package loss values on a clean and correctly installed system (using a standard PC).

The topic was originally brought up in this issue, but is more general in scope and should be treated here.

markusgft commented 5 years ago

@sgabl @fwalch pushing this on top of your stack again. Any comments are highly appreciated.

gavanderhoorn commented 5 years ago

I'd be interested in this as well.

jrmout commented 5 years ago

From our experience, our standard office laptops with their integrated Ethernet card are enough for most use cases and are typically in the 1 - 5 % range. If you need the best possible performance we also tried server ethernet cards (we tried for instance Intel's I350-T4), where you reach on average around 0-1%. How much you really need depends on your application. As a rule of thumb:

markusgft commented 5 years ago

Dear @jrmout, thanks a lot for your answers.

We ordered and tested a the I350-T4 network card with our robots, and in fact we can now achieve higher gains and better performance with our custom controllers using the torque interface.

However, I am still wondering how far the ambitions research-driven user can go with the franka torque interface running at 1 kHz with non-insignificant package loss. I assume the default franka cartesian impedance and joint impedance controllers are running on the control PC which is shipped with the robot - does this one internally use a higher controller update rate, e.g. 5 kHz or similar? In other words, even with good network cards and solid software engineering, will it ever be possible for the research-user to match the performance of your default impedance controllers?