Skip to content
This repository was archived by the owner on Oct 23, 2025. It is now read-only.

Commit 0622e02

Browse files
Ryanf55clalancette
andauthored
Add minor updates to REP-147 (#391)
* Add minor updates to REP-147 * Clarify timestamping for some messages * Fix all spelling * Ran the doc through spellcheck Signed-off-by: Ryan Friedman <[email protected]> Co-authored-by: Chris Lalancette <[email protected]>
1 parent 02bfa14 commit 0622e02

File tree

1 file changed

+23
-24
lines changed

1 file changed

+23
-24
lines changed

rep-0147.rst

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ This will allow much better collaboration between projects and allow a reduction
4646
There are also a lot of interfaces already well developed from other domains which can be brought into the aerial vehicle domain.
4747
This REP seeks to also integrate as many of those reusable interfaces as well to provide the greatest compatibilty with those other domains.
4848

49-
Other interface defintions
50-
==========================
49+
Other interface definitions
50+
===========================
5151

5252
There are a lot of messages already defined.
5353
These messages definitions were used to help define this set.
@@ -60,8 +60,6 @@ These messages definitions were used to help define this set.
6060
- nav_msgs [#nav_msgs]_
6161
- trajectory_msgs [#trajectory_msgs]_
6262

63-
64-
6563
Reference Abstractions
6664
======================
6765

@@ -75,6 +73,7 @@ Control Abstractions
7573

7674
For controlling an aerial vehicle we will use the following terms for the interfaces.
7775

76+
7877
.. raw:: html
7978

8079
<div class="mermaid">
@@ -149,7 +148,7 @@ Trajectory Control Interface
149148
For sending trajectories in 3D space there already exists a message used for free space planning.
150149
This message used is ``trajectory_msgs/MultiDOFJointTrajectory`` [#multidoftraj]_ and is actively used by planning frameworks already.
151150

152-
This message is not the most straight forward to parse as it has a lot of optional fields which increases the complexity and requires consistent labelling and filling.
151+
This message is not the most straight forward to parse as it has a lot of optional fields which increases the complexity and requires consistent labeling and filling.
153152
The complexity of the message parsing is traded off against supporting a relatively compact representations.
154153

155154
* Datatype: ``trajectory_msgs/MultiDOFJointTrajectory`` [#multidoftraj]_
@@ -190,7 +189,7 @@ Rate Interface
190189

191190
The message to send a velocity command is ``geometry_msgs/TwistStamped`` [#twiststamped]_.
192191
This is the standard way to command ROS vehicles.
193-
The datatype is not timestamped or externally referenced as it is not intended to be used in an open loop control system.
192+
The datatype is not intended to be used in an open loop control system.
194193

195194
* Datatype: ``geometry_msgs/TwistStamped`` [#twiststamped]_
196195
* Topic: ``command_velocity``
@@ -212,19 +211,19 @@ The datatype is not timestamped or externally referenced as it is not intended t
212211
float64 z
213212

214213
The command is a body relative set of velocities in linear and angular space.
215-
This diverges from the common ``geometry_msgs/Twist`` [#twist]_ used by ground robots.
216-
A pure ``Twist`` based inteface could be provided for backwards compatability as well.
214+
This diverges from the common ``geometry_msgs/Twist`` [#twist]_ used by some ground robots.
215+
A pure ``Twist`` based interface could be provided for backwards compatibility as well.
217216
It was chosen to diverge here since this is a much more powerful inteface for the vehicles and does not require all commands to be reverse calculated for the instantaneous attitude of the vehicle.
218-
217+
Furthermore, the timestamp field allows for improved timeout behavior due to stale command data.
219218

220219
This is replacing ``mav_msgs/AttitudeThrust`` [#attitudethrust]_ and ``mav_msgs/RollPitchYawrateThrust`` [#rpythrust]_.
221220

222221
Acceleration Interface
223222
,,,,,,,,,,,,,,,,,,,,,,
224223

225224

226-
The message to send a velocity command is ``geometry_msgs/Twist`` [#twiststamped]_.
227-
The datatype is not timestamped or externally referenced as it is not intended to be used in an open loop control system.
225+
The message to send a velocity command is ``geometry_msgs/TwistStamped`` [#twiststamped]_.
226+
The datatype is not intended to be used in an open loop control system.
228227

229228
* Datatype: ``geometry_msgs/TwistStamped`` [#twiststamped]_
230229
* Topic: ``command_acceleration``
@@ -263,7 +262,7 @@ This is the standard message used throughout ROS systems already, many modules a
263262
However there are many use cases for aerial vehicles when the estimation of the acceleration is important.
264263
So an additional message will be defined which provides acceleration in addition to position and velocity already defined.
265264
This additional message will be published in parallel.
266-
For backwards compatibility all systems will publish both.
265+
For backwards compatibility all systems should publish both.
267266

268267
* Datatype: ``nav_msgs/Odometry`` [#odometry]_
269268
* Topic: ``odom``
@@ -273,7 +272,7 @@ For backwards compatibility all systems will publish both.
273272
# This represents an estimate of a position and velocity in free space.
274273
# The pose in this message should be specified in the coordinate frame given by header.frame_id.
275274
# The twist in this message should be specified in the coordinate frame given by the child_frame_id
276-
Header header
275+
std_msgs/Header header
277276
string child_frame_id
278277
geometry_msgs/PoseWithCovariance pose
279278
geometry_msgs/TwistWithCovariance twist
@@ -286,7 +285,7 @@ For backwards compatibility all systems will publish both.
286285
# This represents an estimate of a position, velocity, and acceleration in free space.
287286
# The pose in this message should be specified in the coordinate frame given by header.frame_id.
288287
# The twist and acceleration in this message should be specified in the coordinate frame given by the child_frame_id
289-
Header header
288+
std_msgs/Header header
290289
string child_frame_id
291290
geometry_msgs/PoseWithCovariance pose
292291
geometry_msgs/TwistWithCovariance twist
@@ -327,7 +326,7 @@ A standard way to communicate goals will also be important following the mavlink
327326

328327
float64 latitude
329328
float64 longitude
330-
float32 altitude # in meters, AMSL or above terrain
329+
float32 altitude # in meters, AMSL or above terrain depending on coordinate_frame value
331330
geometry_msgs/Twist velocity
332331
geometry_msgs/Twist acceleration_or_force
333332
float32 yaw
@@ -364,7 +363,7 @@ Missions
364363
Currently there are quite a few varieties of missions data formats that are available.
365364
The most prominent is the mavlink mission protocol. [#mavlinkmission]_
366365
These missions are heavily used and often customized.
367-
A ROS equivalent could be defined but the current mission protocol is both relatively complicated and only provides relatively simple primative constructs with which to compose a mission.
366+
A ROS equivalent could be defined but the current mission protocol is both relatively complicated and only provides relatively simple primitive constructs with which to compose a mission.
368367
It is expected that mission planners can dynamically construct lower level controls for the vehicle that can then be executed upon by the vehicle controller.
369368
The simplest of these mission planners would generate a target waypoint for the vehicle to fly to and send a new one when there's a new position to fly to.
370369
A slightly more complex flight mission might send a series of waypoints which the vehicle will follow until the end.
@@ -416,7 +415,7 @@ Flight Modes
416415

417416
Drones have quite a few flight modes. For example the PX4 Flight Modes number between 9 and 12 for different configurations. [#px4flight]_
418417
Many of these different modes are modifying which user inputs are used and/or how they are interpreted.
419-
For working with ROS it is expected that the user inputs will be modulated and recieved through the ROS system and that the system will be in control the whole time including implementing fallback and recovery behaviors.
418+
For working with ROS it is expected that the user inputs will be modulated and received through the ROS system and that the system will be in control the whole time including implementing fallback and recovery behaviors.
420419
Without the need for these extra modes we will reduce the state diagram significantly.
421420
The autopilot itself is expected to be in Offboard control mode for most configurations using ROS.
422421
In theory all of the states could be eliminated and the arming, takeoff, landing, and return to land logic could be fully implemented, but we will keep those states which are related to safety system already implemented.
@@ -646,7 +645,7 @@ Custom Waypoint Logic
646645
---------------------
647646

648647
This is mostly encoding specific messages related to autopilot implementation behaviors.
649-
It is recommended to be caputred by a generic waypoint communicated on a specific topic or service instead of as a dedicated message.
648+
It is recommended to be captured by a generic waypoint communicated on a specific topic or service instead of as a dedicated message.
650649

651650
- ``SET_HOME_POSITION``
652651
- ``HOME_POSITION``
@@ -688,20 +687,20 @@ Related mavlink messages include:
688687
Time
689688
----
690689

691-
It is recommended to use the stadard ROS time abstraction.
690+
It is recommended to use the standard ROS time abstraction.
692691

693692
- ``SYSTEM_TIME``
694693

695694
Connectivity Checks
696695
-------------------
697696

698-
There are many capabilities of DDS to check for livelyness and heartbeats built into the communication layer that can be leveraged.
697+
There are many capabilities of DDS to check for liveliness and heartbeats built into the communication layer that can be leveraged.
699698
Also the ``bond`` libraries from ROS1 have heartbeat logic.
700699

701700
- ``PING``
702701
- ``HEARTBEAT``
703702

704-
It is recommended that acknowlegement of message receipt be embedded into the communication layer using the reilable transport and callbacks if the message does not arrive.
703+
It is recommended that acknowledgment of message receipt be embedded into the communication layer using the reliable transport and callbacks if the message does not arrive.
705704

706705
- ``COMMAND_ACK``
707706

@@ -805,7 +804,7 @@ This is a specific message for displaying into a HUD, it’s aggregating and dup
805804
Component specific debug Messages
806805
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
807806

808-
This is a debug/status message that’s specific to the current estimator desing. The parameters are not right for a particle filter based estimator or another style of implementation.
807+
This is a debug/status message that’s specific to the current estimator design. The parameters are not right for a particle filter based estimator or another style of implementation.
809808

810809
- ``ESTIMATOR_STATUS``
811810

@@ -817,8 +816,8 @@ These are messages that can share the state of controllers but is only valid for
817816
Mission Management
818817
,,,,,,,,,,,,,,,,,,
819818

820-
The current mission definitions are a basic set of primative behaviors.
821-
They are a significant subset of the capabilities of vehicles and those primatives should not be built into a next generation abstraction for drones.
819+
The current mission definitions are a basic set of primitive behaviors.
820+
They are a significant subset of the capabilities of vehicles and those primitives should not be built into a next generation abstraction for drones.
822821
However that’s not to say that the mission concept should be eliminated.
823822
Going forward the current mission structure is easy for operators to think about and that should be retained, but instead of considering the missions a standard interface for the drones.
824823
They should be parsed and simply generate the REP 147 compliant trajectory that the drone can follow.

0 commit comments

Comments
 (0)