-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Feature request
Add optional support of TwistStamped to replace Twist publishers of velocity control data.
Feature description
I'm working with @pedro-fuoco on integrating NAV2 and ArduPilot for his Google Summer of Code project. More info here:
https://discuss.ardupilot.org/t/gsoc-2023-gps-denied-autonomous-exploration-with-ros-2/101121
Over the past 6 months, I've added MicroROS support to ArduPilot that removes the need to use MavROS, which added a layer of abstraction, complexity, and confusion for many ROS users. Now, ArduPilot directly supports standard ROS messages like sensor_msgs/msg/NavSatFix.
I've been following REP-147 for the velocity control, which we now have a draft working in ArduPilot here.
REP-147 says to use TwistStamped for velocity control, and I would like NAV2 to support that. ArduPilot supports controls in a few different frames already; the use of a frame_id will allow ArduPilot to select the correct frame to control about. Currently, NAV2 uses Twist for the control message, so I would like to request a way to support TwistStamped
Proposal
- Add a new parameter to all nodes that publish velocity control data, something like
is_vel_control_stamped, default toFalse, which preserves the current behavior - On the calls to
create_publisher, that parameter will now change which messages are published. - NAV2 can hard code the frame as
base_linkin compliance with rep-105 because NAV2 always controls in the body frame. - For aerial users following REP-147 control recommendations, if using NAV2, they should set
is_vel_control_stampedtoTrue. - NAV2 can start timestamping the controls data when it's published as
TwistStamped, which can be used by the low-level controllerArduPilotto discard stale data and enter a recovery behavior (Loiter, RTL, etc)
Implementation considerations
- Preserve existing behavior for NAV2, so that this feature can be merged into
humble, which is the version of ROS 2 that ArduPilot has selected for its 4.5 release (Oct/Nov 2023) or so.
Note: I can do the work, I'd just like feedback on the proposal.