[Notice] Nav2 Migrated to TwistStamped to replace Twist for cmd_vel Topics

Hi all,

Your Friendly Neighborhood Navigator here!

I wanted to announce a key breaking change in Nav2: We have now migrated away from Twist in favor of TwistStamped for all cmd_vel and related topics!

This was a change motivated for several reasons, including the Aerial community’s interest in working with command velocities in various reference frames, as well as AMR applications wanting a stamp to reject stale velocity commands in the header.

We started this process earlier this year, but selected to not make it default in Nav2 for Jazzy due to its LTS nature. Since Kilted is non-LTS, this is a nice staging distribution to … break … folks and start the Nav2 adjacent and robot hardware packages’ migrations.

If you are one such broken item, the migration is very straight forward. Good news! We have some utility functions you can leverage that we use across Nav2 that makes it easy to switch: a Twist Publisher and Twist Subscriber. It then also sets a standard parameter name (enable_stamped_cmd_vel) that is used across the board for toggling between Twist and Twist Stamped messages. In the migration, we simple switched them from false to true and made the appropriate updates in the simulation / hardware cmd_vel subscriptions. At some point in the distant future, we may depreciate Twist in favor of solely TwistStamped, but that would be many years away.

I have also filed tickets in the related ecosystem packages I could think of:

If I missed anyone, please let them know! We’ve also updated Nav2’s documentation on this in our Migration Guide with examples of how to migrate Gazebo (spoiler: easy). If you would not like to use TwistStamped, you can set enable_stamped_cmd_vel: false for all nodes in Nav2 and it should continue to use Twist.

Let us know if you have any issues, questions, or comments!

Happy twisting!

Steve Macenski

9 Likes

The toggle is a great idea!

1 Like