Skip to content

Proposal - New nav_msgs/Trajectory message type #275

@SteveMacenski

Description

@SteveMacenski

Description

In line with having sharp, pointed tools, I think we need a nav_msgs/Trajectory message to augment nav_msgs/Path to include time series information from modern controllers like MPC and Reinforcement Learning.

The Path only includes geometry_msgs/PoseStamped for each via point and we also need to be able to communicate velocity, acceleration, and possibly force/torque.

Motivation

See description above.

Design / Implementation Considerations

There already exists today the trajectory_msgs package, but these broadly apply to manipulators or multi-joint actuation systems. I don't believe that in the theme of conversations we've had recently on Goals vs PoseStampedArray that reusing that for a vasting different application is the maintainer's intent.

I am creating temporary versions of these in nav2_msgs so we can keep moving forward, but given the dominance of MPC-based techniques (and RL, others) that have time-varying trajectory outputs, I think this is an important general standard for ROS interfaces

Additional Information

I propose the following, which make full use of standard geometry_msgs fields for each data type, with some similar structural analogs to the trajectory_msgs definitions:

nav_msgs/Trajectory

# An array of trajectory points that represents a trajectory for a robot to follow.

# Indicates the frame_id of the trajectory.
std_msgs/Header header

# Array of trajectory points to follow.
TrajectoryPoint[] points

nav_msgs/TrajectoryPoint

# Trajectory point state

# Desired time from the trajectory start to arrive at this trajectory sample.
builtin_interfaces/Duration time_from_start

# Pose of the trajectory sample.
geometry_msgs/Pose pose

# Velocity of the trajectory sample.
geometry_msgs/Twist velocity

# Acceleration of the trajectory (optional).
geometry_msgs/Accel acceleration

# Force/Torque to apply at trajectory sample (optional).
geometry_msgs/Wrench effort

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions