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

CANopen NMT broadcast (using NodeId 0) support

asked 2016-03-17 14:30:47 -0500

JochenLg gravatar image

I am wondering if there is a way to send NMT commands to all CANopen-nodes at once using NodeId = 0x00 (zero) as broadcast.

At first I thought canopen::NodeChain would do that but eg. canopen::NodeChain::start() is also iterating over its Node-objects calling start() for each node seperately.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

answered 2016-03-17 18:09:36 -0500

Mathias Lüdtke gravatar image

The ros_canopen ROS nodes do not support NMT broadcasts. Each ROS node is just responsible for its configured CANopen nodes. This limitation simplifies the management logic and enables to run multiple ROS nodes on the same bus (SharedMaster plugin). This way each CANopen node can be configured and managed individually.

If you really need NMT broadcasting you can inherit from RosChain::ChainNode and customize its behaviour. However, the NMT message class is not exposed by intention: I don't see a benefit from broadcasting and it might not be safe to broadcast to a CAN bus without knowing the state of the CANopen nodes. (Maybe I should even consider sending a stop to all configured node before initializing them.)

Feel free to open an issue on github with a more specific request and some explanations on your use case. We could then figure out if some NMT interfaces could be exposed for easier customisation.

edit flag offensive delete link more

Question Tools



Asked: 2016-03-17 14:30:47 -0500

Seen: 420 times

Last updated: Mar 17 '16