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

Revision history [back]

click to hide/show revision 1
initial version

Thank you for your response Mathias.

"I would not use forward controllers with the synchronous modes. ROS topic are not real-time safe, neither is the ros_canopen implementation."

I think i understand what you mean. In cyclic synchronous position mode, ramps are not computed by the controller, and therefore the trajectory points need to be provided by the master at fixed intervals. Because of this, ros_canopen would not perform well because it is not real-time safe. Is my understanding correct?

In PP mode, absolute target specifications are given to the motor controller as well, but not at fixed intervals. They are sent whenever. When a target specification is sent to the motor controller, the motor controller computes the ramp to get to that position. So even though ros-canopen is not real-time safe, it does not affect the performance of your system because the motor controller handles the ramp computation. Are these statements correct?

I have some further questions:

In PP mode, if i am using PDO to send the absolute target position to the motor controller, i have two options: (1) Synchronous PDO, and (2) Asynchronous PDO.

In (1), the PDO is automatically sent at every SYNC interval. Say my motor is at position B. I want to move it to position A. I have to publish position A to <joint_name>/command at the next update() of my ros-controller, with a certain rate specification of x hz. this rate has to be greater than the sync rate, so the next sync interval retreives the most recent command.

In (2), Asynchronous PDOs are event-controlled. This means that when at least one of the process variables mapped in a PDO is altered, for example an input value, the PDO is immediately transmitted. if i am using (2) (async. PDOs), in the update() of my controller, when i write a new value to /command, is the PDO immediately updated in the motor controller? If i do not want to actuate my joint, i would have to continually write the last command at every update, so that the lack of change does not trigger a PDO transmission?

Thank you for your help, Jad