You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 23, 2025. It is now read-only.
* 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]>
Copy file name to clipboardExpand all lines: rep-0147.rst
+23-24Lines changed: 23 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,8 +46,8 @@ This will allow much better collaboration between projects and allow a reduction
46
46
There are also a lot of interfaces already well developed from other domains which can be brought into the aerial vehicle domain.
47
47
This REP seeks to also integrate as many of those reusable interfaces as well to provide the greatest compatibilty with those other domains.
48
48
49
-
Other interface defintions
50
-
==========================
49
+
Other interface definitions
50
+
===========================
51
51
52
52
There are a lot of messages already defined.
53
53
These messages definitions were used to help define this set.
@@ -60,8 +60,6 @@ These messages definitions were used to help define this set.
60
60
- nav_msgs [#nav_msgs]_
61
61
- trajectory_msgs [#trajectory_msgs]_
62
62
63
-
64
-
65
63
Reference Abstractions
66
64
======================
67
65
@@ -75,6 +73,7 @@ Control Abstractions
75
73
76
74
For controlling an aerial vehicle we will use the following terms for the interfaces.
77
75
76
+
78
77
.. raw:: html
79
78
80
79
<divclass="mermaid">
@@ -149,7 +148,7 @@ Trajectory Control Interface
149
148
For sending trajectories in 3D space there already exists a message used for free space planning.
150
149
This message used is ``trajectory_msgs/MultiDOFJointTrajectory`` [#multidoftraj]_ and is actively used by planning frameworks already.
151
150
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.
153
152
The complexity of the message parsing is traded off against supporting a relatively compact representations.
@@ -212,19 +211,19 @@ The datatype is not timestamped or externally referenced as it is not intended t
212
211
float64 z
213
212
214
213
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.
217
216
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.
219
218
220
219
This is replacing ``mav_msgs/AttitudeThrust`` [#attitudethrust]_ and ``mav_msgs/RollPitchYawrateThrust`` [#rpythrust]_.
221
220
222
221
Acceleration Interface
223
222
,,,,,,,,,,,,,,,,,,,,,,
224
223
225
224
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.
@@ -263,7 +262,7 @@ This is the standard message used throughout ROS systems already, many modules a
263
262
However there are many use cases for aerial vehicles when the estimation of the acceleration is important.
264
263
So an additional message will be defined which provides acceleration in addition to position and velocity already defined.
265
264
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.
267
266
268
267
* Datatype: ``nav_msgs/Odometry`` [#odometry]_
269
268
* Topic: ``odom``
@@ -273,7 +272,7 @@ For backwards compatibility all systems will publish both.
273
272
# This represents an estimate of a position and velocity in free space.
274
273
# The pose in this message should be specified in the coordinate frame given by header.frame_id.
275
274
# 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
277
276
string child_frame_id
278
277
geometry_msgs/PoseWithCovariance pose
279
278
geometry_msgs/TwistWithCovariance twist
@@ -286,7 +285,7 @@ For backwards compatibility all systems will publish both.
286
285
# This represents an estimate of a position, velocity, and acceleration in free space.
287
286
# The pose in this message should be specified in the coordinate frame given by header.frame_id.
288
287
# 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
290
289
string child_frame_id
291
290
geometry_msgs/PoseWithCovariance pose
292
291
geometry_msgs/TwistWithCovariance twist
@@ -327,7 +326,7 @@ A standard way to communicate goals will also be important following the mavlink
327
326
328
327
float64 latitude
329
328
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
331
330
geometry_msgs/Twist velocity
332
331
geometry_msgs/Twist acceleration_or_force
333
332
float32 yaw
@@ -364,7 +363,7 @@ Missions
364
363
Currently there are quite a few varieties of missions data formats that are available.
365
364
The most prominent is the mavlink mission protocol. [#mavlinkmission]_
366
365
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.
368
367
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.
369
368
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.
370
369
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
416
415
417
416
Drones have quite a few flight modes. For example the PX4 Flight Modes number between 9 and 12 for different configurations. [#px4flight]_
418
417
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.
420
419
Without the need for these extra modes we will reduce the state diagram significantly.
421
420
The autopilot itself is expected to be in Offboard control mode for most configurations using ROS.
422
421
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
646
645
---------------------
647
646
648
647
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.
650
649
651
650
- ``SET_HOME_POSITION``
652
651
- ``HOME_POSITION``
@@ -688,20 +687,20 @@ Related mavlink messages include:
688
687
Time
689
688
----
690
689
691
-
It is recommended to use the stadard ROS time abstraction.
690
+
It is recommended to use the standard ROS time abstraction.
692
691
693
692
- ``SYSTEM_TIME``
694
693
695
694
Connectivity Checks
696
695
-------------------
697
696
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.
699
698
Also the ``bond`` libraries from ROS1 have heartbeat logic.
700
699
701
700
- ``PING``
702
701
- ``HEARTBEAT``
703
702
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.
705
704
706
705
- ``COMMAND_ACK``
707
706
@@ -805,7 +804,7 @@ This is a specific message for displaying into a HUD, it’s aggregating and dup
805
804
Component specific debug Messages
806
805
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
807
806
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.
809
808
810
809
- ``ESTIMATOR_STATUS``
811
810
@@ -817,8 +816,8 @@ These are messages that can share the state of controllers but is only valid for
817
816
Mission Management
818
817
,,,,,,,,,,,,,,,,,,
819
818
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.
822
821
However that’s not to say that the mission concept should be eliminated.
823
822
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.
824
823
They should be parsed and simply generate the REP 147 compliant trajectory that the drone can follow.
0 commit comments