ros-industrial / ros_canopen

CANopen driver framework for ROS (http://wiki.ros.org/ros_canopen)
GNU Lesser General Public License v3.0
332 stars 270 forks source link

Not compatible with CombinedRobotHW #409

Open ivan140 opened 3 years ago

ivan140 commented 3 years ago

Hi,

When trying to follow this CombinedRobotHW tutorial I discovered, that ros_canopen is not capable of supporting the necessary class loader plugin. Are there any plans on adding this capability?

The files in question are:

The big advantage of this would be the possibility to add custom CAN devices or even Serial controlled devices to a robot running on the CANopen stack.

mathias-luedtke commented 3 years ago

Are there any plans on adding this capability?

No, this it not planned. For now canopen_motor_node manages the ros_control and not the other way around.

bxc237 commented 3 years ago

Hi @ivan140, I am encountering this issue as well, did you find a way to solve it?

ivan140 commented 3 years ago

@bxc237 I luckily have just a passive rotating joint. To solve the upper mentioned issue I added a simple publisher, which publishes the encoder values to the /joint_states topic. This way I now have two different publishers: CANopen ros_control: [wheel_left, wheel_right]

Custom encoder node: [body_joint]

It seems the robot_state_publisher is handling this setup just fine, so for me it was a good workaround.

mathias-luedtke commented 3 years ago

@ivan140: If you want to improve your setup even further, add a joint_state_publisher in between. This will reduce the load of robot_state_publisher and all other nodes, which consume /joint_states or /tf. This is especially useful for MoveIt, which runs collisions checks on each update.