ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Control System loop rate using CAN Communication

asked 2019-09-02 01:47:24 -0600

BhanuKiran.Chaluvadi gravatar image

updated 2019-09-02 01:49:26 -0600


We have 9 joints in our robot and following ROS control - joint_velocity_controller and CAN as a communication protocol between controller manager and Real Robot.

It is observed for our robot, the controller "update" function is called at a loop rate of only 20-25 Hz(max) and most of the readings suggests 1kHz loop rate for robots like baxter etc. Not sure if this is the band width limitation of can bus because of 8 joints or some thing with our code.

What is the usual control loop rate that robots have? And how do you achieve Do u use CAN bus too ?

edit retag flag offensive close merge delete


You can see the canbus usage with an pcan dongel really easy. Is also shows collisions and so on. Dou you have an rt Linux? Rt can driver. Have you enough processing power.

duck-development gravatar image duck-development  ( 2019-09-02 13:15:48 -0600 )edit

Hi @duck-development , Currently, we are not using any rt Linux at one stage we tried using Apollo rt-kernel but the improvement was not much / satisfactory. I think we have enough processing power, we are using intel NUC with i5 processor and 16GB RAM. I am more curious about communication protocol used in other robots and loop rated achieved via CAN communication in other robots.

BhanuKiran.Chaluvadi gravatar image BhanuKiran.Chaluvadi  ( 2019-09-02 15:05:03 -0600 )edit

We often drive in a 10ms loop rate on a Rt PLC for an differential drive robot.

For 9 joints one can bus could be critical.

What is the boadrade you are using.

Sopport your can motor driver 1ms control.

As far I know FRANKA usas also 1ms control, but internally it is ethercat.

Look for the schunk lwa p4 or uarm xarm they both use canbus internally.

How meny can telegrams you need to get you status.

If you collect all 9 drive status to get the imput for the next command camds for all drives then you do not achieve you goal. You have to control every drive induvidual.

duck-development gravatar image duck-development  ( 2019-09-03 03:28:33 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-09-02 13:18:12 -0600

duck-development gravatar image

The faster you update, the less is you control error. Less time less change. The faster you can react to errors.

edit flag offensive delete link more


Actually, we are trying to synchronize positions of two joints but the control loop is so slow (20 Hz) it is giving us a very hard time.

BhanuKiran.Chaluvadi gravatar image BhanuKiran.Chaluvadi  ( 2019-09-02 15:07:21 -0600 )edit

Question Tools



Asked: 2019-09-02 01:47:24 -0600

Seen: 287 times

Last updated: Sep 02 '19