roscanopen + cyclic position mode + nanotec controller
Hello all,
I have a nanotec integrated servo controller (the PD6-CB87S048030-E-09), with support for CanOpen in DS402 profile.
I am wondering about the cyclic synchronous position mode, which is described as:
In this mode, the motor controller receives an absolute positional specification at fixed time intervals via the field bus. In this case, the motor controller no longer computes ramps but only follows the specifications. The target position is transfered via PDO, to which the motor controller responds promptly. Note: The target specification is absolute and thus independent of how often it was sent per cycle.
Is the cycle being refered to here the period of the SYNC message, sent by the canopen master? On the ROS side, how often do i publish to <joint_name>/command, if the joint node is registered in cyclic synchronous position mode? Do i publish at a rate that is at least greater than the cycle period?
My application is a wheeled robot, and i'm using this controller for the steering column. My controller translates cmd_vel message to absolute angles for the steering columns in rads and publishes to /command topic on every update() call. Is it better to use profile position here?
Sorry I can't help you but I'm currently tasked with a similar project. I shall control several DB42M03 Motors using the CL3-E Controller. In the documentation they show the structure of the needed CAN message but not how to create them. Can you provide a code example how to control a motor via ros?
ros_canopen only needs to be configured as shown in the wiki, using the manufacturer eds file ros_canopen also exposes a ros-control interface for the joints of your robot, so write a ros-controller that publishes to the /command topic of the joint interface, ros-canopen handles writing the canbus.