Run ros2 topic info on cmd_vel. It must show a publisher and a subscriber, with the same message type.
What the message means
Navigation and teleop nodes publish velocity commands. If the base driver listens on a different name, type or namespace, nothing moves.
Fix it in this order
- Run ros2 topic list and find the velocity topic your base driver uses.
- Run ros2 topic info for it and check counts and types.
- Remap the topic in the launch file so publisher and subscriber match.
- Echo the topic while you send a command, to see the messages.
- Check the base driver is running and connected to the motor controller.
- Use the stamped or the plain message type your ROS 2 version expects.
Why it happens
A topic connects only when the name, the message type and the quality-of-service settings are compatible. Newer ROS 2 releases use geometry_msgs/msg/TwistStamped for some velocity inputs, while older ones and many drivers expect plain Twist, so the names match and the types do not. ros2 topic info with the verbose flag shows both the types and the QoS of each side.
Namespaces matter too. A driver started under a namespace listens on a different full name from the one your teleop node publishes to, which a remap in the launch file fixes.
If you see this, do this
| You see | Do this |
|---|---|
| No subscriber listed | Driver not running or other name. |
| Messages arrive, no motion | Check the driver and the motor power. |
Related
topic list empty, Gazebo and ROS 2.
Last reviewed: November 2026. These are the usual causes and the order that finds them fastest. Test on your own board; clones and cables differ.