feat: add lms-nav2-gazebo-vehicle module
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
build/
|
||||||
|
install/
|
||||||
|
log/
|
||||||
|
.colcon/
|
||||||
|
*.log
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
MODULE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
RUNTIME_ROOT="${AUTONOMY_STUDIO_RUNTIME_ROOT:-$HOME/autonomy-studio/runtime/nav2}"
|
||||||
|
exec bash "$RUNTIME_ROOT/docker/docker_build_nav2.sh" "$(dirname "$MODULE_PATH")" "$(basename "$MODULE_PATH")" "${NAV2_DOCKER_IMAGE:-future-nav2-gazebo:humble}" "${ROS_DOMAIN_ID:-0}"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
MODULE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
RUNTIME_ROOT="${AUTONOMY_STUDIO_RUNTIME_ROOT:-$HOME/autonomy-studio/runtime/nav2}"
|
||||||
|
FOLDER_NAME="$(basename "$MODULE_PATH")"
|
||||||
|
CONTAINER_NAME="${FOLDER_NAME#\[}"; CONTAINER_NAME="${CONTAINER_NAME/\]/-}"
|
||||||
|
exec bash "$RUNTIME_ROOT/docker/docker_run_nav2.sh" "$CONTAINER_NAME" "$(dirname "$MODULE_PATH")" "$FOLDER_NAME" "${NAV2_DOCKER_IMAGE:-future-nav2-gazebo:humble}" "${ROS_DOMAIN_ID:-0}" sim_mode:=true platform:=turtlebot3 level:=2d "$@"
|
||||||
Executable
Executable
+50
@@ -0,0 +1,50 @@
|
|||||||
|
DISCLAIMER
|
||||||
|
|
||||||
|
The open-source software for self-driving vehicles, Autoware.AI, Autoware.IO,
|
||||||
|
Autoware.Auto. (collectively, referred to as “Autoware”) will be provided by
|
||||||
|
The Autoware Foundation under the Apache 2.0 License. This “DISCLAIMER” will be
|
||||||
|
applied to all users of Autoware (a “User” or “Users”) with the Apache 2.0
|
||||||
|
License and Users shall hereby approve and acknowledge all the contents
|
||||||
|
specified in this disclaimer below and will be deemed to consent to this
|
||||||
|
disclaimer without any objection upon utilizing or downloading Autoware.
|
||||||
|
|
||||||
|
|
||||||
|
Disclaimer and Waiver of Warranties
|
||||||
|
|
||||||
|
1. AUTOWARE FOUNDATION MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, WITH RESPECT TO PROVIDING AUTOWARE (the “Service”)
|
||||||
|
including but not limited to any representation or warranty (i) of fitness or
|
||||||
|
suitability for a particular purpose contemplated by the Users, (ii) of the
|
||||||
|
expected functions, commercial value, accuracy, or usefulness of the Service,
|
||||||
|
(iii) that the use by the Users of the Service complies with the laws and
|
||||||
|
regulations applicable to the Users or any internal rules established by
|
||||||
|
industrial organizations, (iv) that the Service will be free of interruption or
|
||||||
|
defects, (v) of the non-infringement of any third party's right and (vi) the
|
||||||
|
accuracy of the content of the Services and the software itself.
|
||||||
|
|
||||||
|
2. The Autoware Foundation shall not be liable for any damage incurred by the
|
||||||
|
User that are attributable to the Autoware Foundation for any reasons
|
||||||
|
whatsoever. UNDER NO CIRCUMSTANCES SHALL THE AUTOWARE FOUNDATION BE LIABLE FOR
|
||||||
|
INCIDENTAL, INDIRECT, SPECIAL OR FUTURE DAMAGES OR LOSS OF PROFITS.
|
||||||
|
|
||||||
|
3. A User shall be entirely responsible for the content posted by the User and
|
||||||
|
its use of any content of the Service or the Website. If the User is held
|
||||||
|
responsible in a civil action such as a claim for damages or even in a criminal
|
||||||
|
case, the Autoware Foundation and member companies, governments and academic &
|
||||||
|
non-profit organizations and their directors, officers, employees and agents
|
||||||
|
(collectively, the “Indemnified Parties”) shall be completely discharged from
|
||||||
|
any rights or assertions the User may have against the Indemnified Parties, or
|
||||||
|
from any legal action, litigation or similar procedures.
|
||||||
|
|
||||||
|
|
||||||
|
Indemnity
|
||||||
|
|
||||||
|
A User shall indemnify and hold the Indemnified Parties harmless from any of
|
||||||
|
their damages, losses, liabilities, costs or expenses (including attorneys'
|
||||||
|
fees or criminal compensation), or any claims or demands made against the
|
||||||
|
Indemnified Parties by any third party, due to or arising out of, or in
|
||||||
|
connection with utilizing Autoware (including the representations and
|
||||||
|
warranties), the violation of applicable Product Liability Law of each country
|
||||||
|
(including criminal case) or violation of any applicable laws by the Users, or
|
||||||
|
the content posted by the User or its use of any content of the Service or the
|
||||||
|
Website.
|
||||||
Executable
+201
@@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright 2018 ApexAI
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
Executable
+77
@@ -0,0 +1,77 @@
|
|||||||
|
This is a Tier4 forked version of [autoware_auto_msgs](https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs)
|
||||||
|
|
||||||
|
# autoware_auto_msgs
|
||||||
|
|
||||||
|
Interfaces between core Autoware.Auto components.
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
|
||||||
|
### Comments
|
||||||
|
|
||||||
|
Add a comment to describe the meaning of the field.
|
||||||
|
|
||||||
|
### Default Value
|
||||||
|
|
||||||
|
Prefer a meaningful default value. Otherwise, the field is uninitialized.
|
||||||
|
|
||||||
|
### Optional parameters
|
||||||
|
|
||||||
|
There is nothing like `std::optional` in IDL, unfortunately. To accomodate the common use case of a
|
||||||
|
fixed message where some variables are not always filled, add an additional boolean variable with a
|
||||||
|
prefix `has_` and a default value of `FALSE`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
If a quantity described by a field has an associated unit of measurement, the following rules apply to determine the field name:
|
||||||
|
|
||||||
|
1. If the unit is as base or [derived SI unit](https://en.wikipedia.org/wiki/International_System_of_Units#Derived_units), do not add a suffix and assume the default from [REP-103](https://www.ros.org/reps/rep-0103.html).
|
||||||
|
1. If the unit is a multiple of a base or derived SI unit, apply a suffix according to the table below.
|
||||||
|
1. If the unit is composed of non-SI units, apply a suffix according to the table below.
|
||||||
|
|
||||||
|
Only deviate from the SI units when absolutely necessary and with justification.
|
||||||
|
|
||||||
|
| Quantity | Unit | Suffix | Notes |
|
||||||
|
|-----------------|-----------------------------|---------|---------------------------------------------------------|
|
||||||
|
| distance | meters | None | |
|
||||||
|
| | micrometers | `_um` | |
|
||||||
|
| | millimeters | `_mm` | |
|
||||||
|
| | kilometers | `_km` | |
|
||||||
|
| speed, velocity | meters / second | None | Use speed for scalar and velocity for vector quantities |
|
||||||
|
| | kilometers / hour | `_kmph` | |
|
||||||
|
| acceleration | meters / second<sup>2</sup> | None | |
|
||||||
|
| radial velocity | radians / second | None | |
|
||||||
|
| time | second | None | |
|
||||||
|
| | microsecond | `_us` | |
|
||||||
|
| | nanosecond | `_ns` | |
|
||||||
|
|
||||||
|
#### Examples
|
||||||
|
|
||||||
|
The first alternative is recommended, the second discouraged:
|
||||||
|
|
||||||
|
1. `float elapsed_time` vs `float_elapsed_time_s`
|
||||||
|
1. `float distance_travelled` vs `float distance_travelled_m`
|
||||||
|
1. `int32 time_step_ms` vs `int32 time_step`
|
||||||
|
1. `float speed_mps` vs `float speed`
|
||||||
|
|
||||||
|
### Minimal Example
|
||||||
|
|
||||||
|
```idl
|
||||||
|
struct Foo {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A multiline" "\n"
|
||||||
|
" comment")
|
||||||
|
@default (value=0.0)
|
||||||
|
float bar_speed;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Another multiline" "\n"
|
||||||
|
" comment")
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean has_bar_speed;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Describe the time stamp")
|
||||||
|
@default (value=0)
|
||||||
|
int32 timestamp_ns;
|
||||||
|
};
|
||||||
|
```
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_control_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||||
|
"msg/AckermannControlCommand.idl"
|
||||||
|
"msg/AckermannLateralCommand.idl"
|
||||||
|
"msg/HighLevelControlCommand.idl"
|
||||||
|
"msg/LongitudinalCommand.idl"
|
||||||
|
DEPENDENCIES
|
||||||
|
"builtin_interfaces"
|
||||||
|
ADD_LINTER_TESTS
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#include "autoware_auto_control_msgs/msg/AckermannLateralCommand.idl"
|
||||||
|
#include "autoware_auto_control_msgs/msg/LongitudinalCommand.idl"
|
||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_control_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Lateral and longitudinal control message for Ackermann-style platforms")
|
||||||
|
struct AckermannControlCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
autoware_auto_control_msgs::msg::AckermannLateralCommand lateral;
|
||||||
|
autoware_auto_control_msgs::msg::LongitudinalCommand longitudinal;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_control_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Lateral control message for Ackermann-style platforms" "\n"
|
||||||
|
" Note regarding tires: If the platform has multiple steering tires, the commands"
|
||||||
|
" given here are for a virtual tire at the average lateral position of the steering tires.")
|
||||||
|
|
||||||
|
struct AckermannLateralCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Desired angle of the steering tire in radians left (positive)"
|
||||||
|
" or right (negative) of center (0.0)")
|
||||||
|
@default (value=0.0)
|
||||||
|
float steering_tire_angle;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Desired rate of change of the steering tire angle in radians per second")
|
||||||
|
@default (value=0.0)
|
||||||
|
float steering_tire_rotation_rate;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_control_msgs {
|
||||||
|
module msg {
|
||||||
|
struct HighLevelControlCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" should be negative when reversed")
|
||||||
|
@default (value=0.0)
|
||||||
|
float velocity_mps;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" units of inverse meters")
|
||||||
|
float curvature;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_control_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Longitudinal control message for all vehicle types")
|
||||||
|
|
||||||
|
struct LongitudinalCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Desired platform speed in meters per second."
|
||||||
|
" A positive value indicates movement in the positive X direction of the vehicle "
|
||||||
|
" while a negative value indicates movement in the negative X direction of the vehicle.")
|
||||||
|
@default (value=0.0)
|
||||||
|
float speed;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Desired platform acceleration in meters per second squared."
|
||||||
|
" A positive value indicates acceleration while a negative value indicates deceleration.")
|
||||||
|
@default (value=0.0)
|
||||||
|
float acceleration;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Desired platform jerk in meters per second cubed")
|
||||||
|
@default (value=0.0)
|
||||||
|
float jerk;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>autoware_auto_control_msgs</name>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<description>Interfaces between core Autoware.Auto control components</description>
|
||||||
|
<maintainer email="opensource@apex.ai">Apex.AI, Inc.</maintainer>
|
||||||
|
<license>Apache 2</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake_auto</buildtool_depend>
|
||||||
|
|
||||||
|
<build_depend>rosidl_default_generators</build_depend>
|
||||||
|
|
||||||
|
<depend>builtin_interfaces</depend>
|
||||||
|
<depend>std_msgs</depend>
|
||||||
|
|
||||||
|
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<member_of_group>rosidl_interface_packages</member_of_group>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_geometry_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||||
|
"msg/Complex32.idl"
|
||||||
|
"msg/Quaternion32.idl"
|
||||||
|
"msg/RelativePositionWithCovarianceStamped.idl"
|
||||||
|
DEPENDENCIES
|
||||||
|
"geometry_msgs"
|
||||||
|
"std_msgs"
|
||||||
|
ADD_LINTER_TESTS
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
module autoware_auto_geometry_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Complex32.msg" "\n"
|
||||||
|
" Can be used to represent yaw angle for trajectories" "\n"
|
||||||
|
" To convert back to a yaw angle, see" "\n"
|
||||||
|
" https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles")
|
||||||
|
struct Complex32 {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" cos(yaw / 2)")
|
||||||
|
@default (value=1.0)
|
||||||
|
float real;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" sin(yaw / 2)")
|
||||||
|
@default (value=0.0)
|
||||||
|
float imag;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
module autoware_auto_geometry_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Represents rotation, but with less precision than the message in common_interfaces")
|
||||||
|
struct Quaternion32 {
|
||||||
|
@default (value=0.0)
|
||||||
|
float x;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float y;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float z;
|
||||||
|
|
||||||
|
@default (value=1.0)
|
||||||
|
float w;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
Executable
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#include "geometry_msgs/msg/Point.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_geometry_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" This message is a generalized representation of a 3D pose without"
|
||||||
|
" orientation of the origin of one frame within a child frame.")
|
||||||
|
struct RelativePositionWithCovarianceStamped {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
string child_frame_id;
|
||||||
|
geometry_msgs::msg::Point position;
|
||||||
|
double covariance[9];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>autoware_auto_geometry_msgs</name>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<description>Geometry related message definitions in Autoware.Auto</description>
|
||||||
|
<maintainer email="opensource@apex.ai">Apex.AI, Inc.</maintainer>
|
||||||
|
<license>Apache 2</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake_auto</buildtool_depend>
|
||||||
|
|
||||||
|
<build_depend>rosidl_default_generators</build_depend>
|
||||||
|
|
||||||
|
<depend>geometry_msgs</depend>
|
||||||
|
<depend>std_msgs</depend>
|
||||||
|
|
||||||
|
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<member_of_group>rosidl_interface_packages</member_of_group>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_mapping_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||||
|
"msg/HADMapBin.idl"
|
||||||
|
"msg/HADMapSegment.idl"
|
||||||
|
"msg/MapPrimitive.idl"
|
||||||
|
"srv/HADMapService.idl"
|
||||||
|
DEPENDENCIES
|
||||||
|
"std_msgs"
|
||||||
|
ADD_LINTER_TESTS
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_mapping_msgs {
|
||||||
|
module msg {
|
||||||
|
module HADMapBin_Constants {
|
||||||
|
const uint8 MAP_FORMAT_LANELET2 = 0;
|
||||||
|
};
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"HADMap contents in binary blob format")
|
||||||
|
struct HADMapBin
|
||||||
|
{
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"HADMap format identifier, allows supporting multiple map formats")
|
||||||
|
uint8 map_format;
|
||||||
|
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Version of map format. Keep as empty string if unnecssary")
|
||||||
|
@default(value = "")
|
||||||
|
string format_version;
|
||||||
|
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Version of map. Keep as empty empty if unnecessary")
|
||||||
|
@default(value = "")
|
||||||
|
string map_version;
|
||||||
|
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Binary map data")
|
||||||
|
sequence < uint8 > data;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#include "autoware_auto_mapping_msgs/msg/MapPrimitive.idl"
|
||||||
|
|
||||||
|
module autoware_auto_mapping_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A segment of an HADMap which contains one or more MapPrimitives.")
|
||||||
|
struct HADMapSegment {
|
||||||
|
sequence<autoware_auto_mapping_msgs::msg::MapPrimitive> primitives;
|
||||||
|
int64 preferred_primitive_id;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_mapping_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Map primitive information")
|
||||||
|
struct MapPrimitive
|
||||||
|
{
|
||||||
|
int64 id;
|
||||||
|
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Type of primitive, such as lane, polygon, line.")
|
||||||
|
@default(value = "")
|
||||||
|
string primitive_type;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>autoware_auto_mapping_msgs</name>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<description>Interfaces between core Autoware.Auto mapping components</description>
|
||||||
|
<maintainer email="opensource@apex.ai">Apex.AI, Inc.</maintainer>
|
||||||
|
<license>Apache 2</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake_auto</buildtool_depend>
|
||||||
|
|
||||||
|
<build_depend>rosidl_default_generators</build_depend>
|
||||||
|
|
||||||
|
<depend>std_msgs</depend>
|
||||||
|
|
||||||
|
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<member_of_group>rosidl_interface_packages</member_of_group>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
||||||
|
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
#include "autoware_auto_mapping_msgs/msg/HADMapBin.idl"
|
||||||
|
|
||||||
|
module autoware_auto_mapping_msgs {
|
||||||
|
module srv {
|
||||||
|
// enum type not working yet on ROS2 implementation of idl
|
||||||
|
// enum HADPrimitive
|
||||||
|
// {
|
||||||
|
// FullMap,
|
||||||
|
// AllPrimitives,
|
||||||
|
// DriveableGeometry,
|
||||||
|
// RegulatoryElements,
|
||||||
|
// StaticObjects
|
||||||
|
// };
|
||||||
|
|
||||||
|
module HADMapService_Request_Constants {
|
||||||
|
const uint8 FULL_MAP = 0;
|
||||||
|
const uint8 ALL_PRIMITIVES = 1;
|
||||||
|
const uint8 DRIVEABLE_GEOMETRY = 2;
|
||||||
|
const uint8 REGULATORY_ELEMENTS = 3;
|
||||||
|
const uint8 STATIC_OBJECTS = 4;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HADMapService_Request
|
||||||
|
{
|
||||||
|
sequence < uint8 > requested_primitives;
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Geometric upper bound of map data requested")
|
||||||
|
sequence < double, 3 > geom_upper_bound;
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Geometric upper bound of map data requested")
|
||||||
|
sequence < double, 3 > geom_lower_bound;
|
||||||
|
};
|
||||||
|
struct HADMapService_Response
|
||||||
|
{
|
||||||
|
autoware_auto_mapping_msgs::msg::HADMapBin map;
|
||||||
|
int32 answer;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
Changelog for package autoware_auto_msgs
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
1.0.0 (2021-01-05)
|
||||||
|
------------------
|
||||||
|
* Merge branch 'BoundingBoxArray-design' into 'master'
|
||||||
|
Add design doc for bounding-box message
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!12 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/12>`_
|
||||||
|
* Working around https://github.com/ros-tooling/libstatistics_collector/issues/51.
|
||||||
|
* Fixing constants in AutonomyModeChange.
|
||||||
|
* Making AutonomyModeChange return empty.
|
||||||
|
* Merge branch '657-autonomy-service' into 'master'
|
||||||
|
Adding AutonomyModeChange service definition.
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!11 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/11>`_
|
||||||
|
* Adding velocity_mps to VehicleControlCommand.
|
||||||
|
* Merge branch '474-add-modify-trajectory-service' into 'master'
|
||||||
|
Adding ModifyTrajectory service definition.
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!10 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/10>`_
|
||||||
|
* Merge branch 'modify-plan-trajectory-action' into 'master'
|
||||||
|
modify PlanTrajectory Action to return trajectory in Result
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!9 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/9>`_
|
||||||
|
* Merge branch 'fix/plan_trajectory_action' into 'master'
|
||||||
|
fix include file and namespace of constants
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!8 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/8>`_
|
||||||
|
* Merge branch 'add-actions-dependency' into 'master'
|
||||||
|
Cleaning up package.xml and adding action_msgs dependency.
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!7 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/7>`_
|
||||||
|
* Merge branch 'add-plan-trajectory-action' into 'master'
|
||||||
|
add PlanTrajectory action
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!6 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/6>`_
|
||||||
|
* Contributors: Frederik Beaujean, Joshua Whitley, mitsudome-r
|
||||||
|
|
||||||
|
0.1.0 (2020-08-07)
|
||||||
|
------------------
|
||||||
|
* Merge branch 'add-hadmap-msgs' into 'master'
|
||||||
|
had map msgs - respect idl constant naming conventions
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!5 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/5>`_
|
||||||
|
* Merge branch 'add-hadmap-msgs' into 'master'
|
||||||
|
Add hadmap msgs
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!4 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/4>`_
|
||||||
|
* Add hadmap msgs
|
||||||
|
* Merge branch '3-convert-messages-from-rosmsg-to-idl' into 'master'
|
||||||
|
Resolve "Convert messages from ROSmsg to IDL"
|
||||||
|
Closes `#3 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/issues/3>`_
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!2 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/2>`_
|
||||||
|
* Resolve "Convert messages from ROSmsg to IDL"
|
||||||
|
* Contributors: Esteve Fernandez, Joshua Whitley, simon-t4
|
||||||
|
|
||||||
|
0.0.2 (2020-03-02)
|
||||||
|
------------------
|
||||||
|
* Merge branch '1-import-autoware_auto_msgs-from-autoware-auto' into 'master'
|
||||||
|
Resolve "Import autoware_auto_msgs from Autoware.Auto"
|
||||||
|
Closes `#1 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/issues/1>`_
|
||||||
|
See merge request `autowarefoundation/autoware.auto/autoware_auto_msgs!1 <https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/merge_requests/1>`_
|
||||||
|
* Initial import
|
||||||
|
* Contributors: Esteve Fernandez, Geoffrey Biggs
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
+67
@@ -0,0 +1,67 @@
|
|||||||
|
autoware_auto_msgs internal message design
|
||||||
|
=========================
|
||||||
|
|
||||||
|
[TOC]
|
||||||
|
|
||||||
|
This document is intended to track the design and rationale of messages internal to individual
|
||||||
|
components/stacks.
|
||||||
|
|
||||||
|
# Perception
|
||||||
|
|
||||||
|
This supersection tracks messages relating to the perception components of the autonomous driving
|
||||||
|
stack.
|
||||||
|
|
||||||
|
## Object Detection
|
||||||
|
|
||||||
|
This section tracks internal messages needed for the implementation of object detection stacks
|
||||||
|
that result in the emission of the `BoundingBoxArray` type as a common object list representation.
|
||||||
|
|
||||||
|
### Classical 3d object detection
|
||||||
|
|
||||||
|
This section covers the internal messages needed by a classical 3d object detection stack,
|
||||||
|
consisting of ground filtering, downsampling, clustering, and finally hull formation.
|
||||||
|
|
||||||
|
#### PointClusters
|
||||||
|
|
||||||
|
```
|
||||||
|
sensor_msgs/PointCloud2[] clusters
|
||||||
|
```
|
||||||
|
|
||||||
|
This message represents a set of point clusters as a result of object detection or clustering.
|
||||||
|
`PointCloud2` was used as a cluster can be conceived as a subset of a point cloud, and
|
||||||
|
`PointCloud2` is the standard representation for point clouds.
|
||||||
|
|
||||||
|
|
||||||
|
## Tracking
|
||||||
|
|
||||||
|
This section tracks messages internal to specific implementation of tracking stacks.
|
||||||
|
|
||||||
|
# Localization
|
||||||
|
|
||||||
|
This supersection tracks messages relating to the implementation of localization/mapping
|
||||||
|
components in the autonomous driving stack.
|
||||||
|
|
||||||
|
# Planning
|
||||||
|
|
||||||
|
This supersection tracks messages relating to the implementation of planning components in the
|
||||||
|
autonomous driving stack.
|
||||||
|
|
||||||
|
## Global Planning
|
||||||
|
|
||||||
|
This section tracks internal messages needed for the implementation of specific global planning
|
||||||
|
stacks.
|
||||||
|
|
||||||
|
## Behavior Planning
|
||||||
|
|
||||||
|
This section tracks internal messages needed for the implementation of specific behavior planning
|
||||||
|
stacks.
|
||||||
|
|
||||||
|
## Motion Planning
|
||||||
|
|
||||||
|
This section tracks internal messages needed for the implementation of specific motion planning
|
||||||
|
stacks.
|
||||||
|
|
||||||
|
## Control
|
||||||
|
|
||||||
|
This section tracks internal messages needed for the implementation of specific controller
|
||||||
|
stacks.
|
||||||
+513
@@ -0,0 +1,513 @@
|
|||||||
|
autoware_auto_msgs
|
||||||
|
==================
|
||||||
|
|
||||||
|
[TOC]
|
||||||
|
|
||||||
|
This document contains the intended sources, recipients and rationale for each of the custom
|
||||||
|
message types.
|
||||||
|
|
||||||
|
# Helper Types
|
||||||
|
|
||||||
|
The following are helper types that are composed into messages that software components use.
|
||||||
|
|
||||||
|
## Complex32
|
||||||
|
|
||||||
|
```
|
||||||
|
float32 real
|
||||||
|
float32 imag
|
||||||
|
```
|
||||||
|
|
||||||
|
## BoundingBox
|
||||||
|
|
||||||
|
```
|
||||||
|
geometry_msgs/Point32 centroid
|
||||||
|
geometry_msgs/Point32 size
|
||||||
|
geometry_msgs/Quaternion orientation
|
||||||
|
geometry_msgs/Point32[4] corners
|
||||||
|
float32 value
|
||||||
|
uint32 label
|
||||||
|
```
|
||||||
|
See the [design document](bounding-box-design.md) for further details.
|
||||||
|
|
||||||
|
## BoundingBoxArray
|
||||||
|
|
||||||
|
```
|
||||||
|
std_msgs/Header header
|
||||||
|
BoundingBox[256] boxes
|
||||||
|
uint32 size
|
||||||
|
uint32 CAPACITY=256
|
||||||
|
```
|
||||||
|
<!-- # TODO refactor and add rationale -->
|
||||||
|
|
||||||
|
## DiagnosticHeader
|
||||||
|
|
||||||
|
```
|
||||||
|
string name
|
||||||
|
builtin_interfaces/Time data_stamp
|
||||||
|
builtin_interfaces/Time computation_start
|
||||||
|
builtin_interfaces/Duration runtime
|
||||||
|
uint32 iterations
|
||||||
|
```
|
||||||
|
|
||||||
|
## TrajectoryPoint
|
||||||
|
|
||||||
|
```
|
||||||
|
builtin_interfaces/Duration time_from_start
|
||||||
|
float32 x
|
||||||
|
float32 y
|
||||||
|
Complex32 heading
|
||||||
|
float32 longitudinal_velocity_mps 0.0
|
||||||
|
float32 lateral_velocity_mps 0.0
|
||||||
|
float32 acceleration_mps2
|
||||||
|
float32 heading_rate_rps
|
||||||
|
float32 front_wheel_angle_rad 0.0
|
||||||
|
float32 rear_wheel_angle_rad 0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
> `acceleration_mps2` increases/decreases based on absolute vehicle motion and does not consider vehicle direction (forward/backward)
|
||||||
|
|
||||||
|
And the heading field has the following form:
|
||||||
|
|
||||||
|
A zero heading corresponds to the positive x direction in the given coordinate frame.
|
||||||
|
|
||||||
|
**Default Values**: All trajectory point and trajectory fields should default to 0
|
||||||
|
|
||||||
|
**Default Values**: All complex numbers should default to the pair (1, 0), which corresponds to a
|
||||||
|
zero heading.
|
||||||
|
|
||||||
|
**Extensions**: In the future, this message may include higher derivative information.
|
||||||
|
|
||||||
|
**Rationale**: Trajectory points mirror, but are not the same as a standard JointTrajectory message.
|
||||||
|
This is because the standard message allows room for ambiguities whereas this message does not.
|
||||||
|
|
||||||
|
**Rationale**: Higher derivative information (e.g. acceleration, heading rate) is available to
|
||||||
|
provide a more expressive language for controllers and trajectory planners. If the information
|
||||||
|
is not needed, a value of zero is provided, which is semantically consistent for controllers and
|
||||||
|
motion planners
|
||||||
|
|
||||||
|
**Rationale**: Complex numbers are used to represent heading rather than an angle because it reduces
|
||||||
|
ambiguities between angles, and angle distances. In addition, it conveniently represents a
|
||||||
|
precomputed sine and cosine values, obviating the need for additional computations.
|
||||||
|
|
||||||
|
For more details, see [Controller design](@ref controller-design)
|
||||||
|
|
||||||
|
# Interface Messages
|
||||||
|
|
||||||
|
## Control Diagnostic
|
||||||
|
|
||||||
|
```
|
||||||
|
DiagnosticHeader diag_header
|
||||||
|
bool new_trajectory
|
||||||
|
string trajectory_source
|
||||||
|
string pose_source
|
||||||
|
float32 lateral_error_m
|
||||||
|
float32 longitudinal_error_m
|
||||||
|
float32 velocity_error_mps
|
||||||
|
float32 acceleration_error_mps2
|
||||||
|
float32 yaw_error_rad
|
||||||
|
float32 yaw_rate_error_rps
|
||||||
|
```
|
||||||
|
|
||||||
|
**Source**: Controller
|
||||||
|
|
||||||
|
**Recipient(s)**:
|
||||||
|
|
||||||
|
**Rationale**: Diagnostic information is helpful to detect if a fault occurred, or some incorrect
|
||||||
|
behavior leading up to a fault. It can also be used for infotainment applications.
|
||||||
|
|
||||||
|
For more details, see [Controller design](@ref controller-design)
|
||||||
|
|
||||||
|
## Trajectory
|
||||||
|
|
||||||
|
```
|
||||||
|
std_msgs/Header header
|
||||||
|
TrajectoryPoint[<=100] points
|
||||||
|
```
|
||||||
|
|
||||||
|
**Source**: Motion planner
|
||||||
|
|
||||||
|
**Recipient(s)**: Controller
|
||||||
|
|
||||||
|
**Rationale**: A bounded number of points is provided since a new trajectory should be provided
|
||||||
|
at a regular rate. Bounded data structures also imply more deterministic communication times
|
||||||
|
due to having a bounded size.
|
||||||
|
|
||||||
|
For more details, see [Controller design](@ref controller-design)
|
||||||
|
|
||||||
|
### RawControlCommand
|
||||||
|
|
||||||
|
This message type is defined as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
builtin_interfaces/Time stamp
|
||||||
|
uint32 throttle
|
||||||
|
uint32 brake
|
||||||
|
int32 front_steer
|
||||||
|
int32 rear_steer
|
||||||
|
```
|
||||||
|
|
||||||
|
This type is intended to be used when direct control of the vehicle hardware is required. As such,
|
||||||
|
no assumptions about units are made. It is the responsibility of the system integrator to ensure
|
||||||
|
that the values used are appropriate for the vehicle platform.
|
||||||
|
|
||||||
|
**Source**: Controller
|
||||||
|
|
||||||
|
**Recipient(s)**: Vehicle Interface
|
||||||
|
|
||||||
|
**Default Values**: The default value for all fields is 0
|
||||||
|
|
||||||
|
**Rationale**: A time stamp field is provided because a control command should be generated in
|
||||||
|
response to the input of a vehicle kinematic state. Retaining the time of the triggering data
|
||||||
|
should aid with diagnostics and traceability.
|
||||||
|
|
||||||
|
**Rationale**: The rear wheel angle is also provided to enable support for rear drive vehicles,
|
||||||
|
such as forklifts.
|
||||||
|
|
||||||
|
**Rationale**: A frame is not provided since it is implied that it is fixed to the vehicle frame.
|
||||||
|
|
||||||
|
**Rationale**: Throttle and brake are separated as they are fundamentally controlled by two
|
||||||
|
different actuators
|
||||||
|
|
||||||
|
**Rationale**: This is intended to be compatible with using the triggers of a gamepad as a first
|
||||||
|
pass for vehicle platform validation.
|
||||||
|
|
||||||
|
**Rationale**: Integer values are used to be more compatible with discrete, or byte-level
|
||||||
|
representation that is more common with CAN interfaces.
|
||||||
|
|
||||||
|
**Rationale**: Units are not provided since byte-level representations are generally platform-
|
||||||
|
specific.
|
||||||
|
|
||||||
|
For more details see [vehicle interface design]().
|
||||||
|
|
||||||
|
### HighLevelControlCommand
|
||||||
|
|
||||||
|
This message type is defined as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
builtin_interfaces/Time stamp
|
||||||
|
# should be negative when reversed
|
||||||
|
float32 velocity_mps 0.0
|
||||||
|
float32 curvature
|
||||||
|
```
|
||||||
|
|
||||||
|
This type is intended to be used as an interface when only simple control is required, and thus
|
||||||
|
abstracts away more direct control of the vehicle.
|
||||||
|
|
||||||
|
**Source**: Controller
|
||||||
|
|
||||||
|
**Recipient(s)**: Vehicle Interface
|
||||||
|
|
||||||
|
**Default Values**: The default value for all fields is 0
|
||||||
|
|
||||||
|
**Rationale**: A time stamp field is provided because a control command should be generated in
|
||||||
|
response to the input of a vehicle kinematic state. Retaining the time of the triggering data
|
||||||
|
should aid with diagnostics and traceability.
|
||||||
|
|
||||||
|
**Rationale**: A frame is not provided since it is implied that it is fixed to the vehicle frame.
|
||||||
|
|
||||||
|
**Rationale**: Curvature is used as a control target as it does not require any vehicle-specific
|
||||||
|
information. This is inspired by the AutonomousStuff Low Level Controller
|
||||||
|
|
||||||
|
**Rationale**: Velocity is used as a longitudinal control target to allow the vehicle to minimally
|
||||||
|
follow a geometric reference path.
|
||||||
|
|
||||||
|
For more details see [vehicle interface design]().
|
||||||
|
|
||||||
|
|
||||||
|
## Vehicle Control Command
|
||||||
|
```
|
||||||
|
builtin_interfaces/Time stamp
|
||||||
|
float32 long_accel_mps2
|
||||||
|
float32 front_wheel_angle_rad
|
||||||
|
float32 rear_wheel_angle_rad
|
||||||
|
```
|
||||||
|
|
||||||
|
This message type is intended to provide a proxy for a foot on the accelerator and brake pedal,
|
||||||
|
and a pair of hands on the steering wheel, while also providing a convenient representation
|
||||||
|
for controller developers.
|
||||||
|
|
||||||
|
These wheel angles are counter-clockwise positive, where 0 corresponds to a neutral, or
|
||||||
|
forward-facing orientation.
|
||||||
|
|
||||||
|
**Source**: Controller
|
||||||
|
|
||||||
|
**Recipient(s)**: Vehicle Interface
|
||||||
|
|
||||||
|
**Default Values**: The default value for all fields is 0
|
||||||
|
|
||||||
|
**Rationale**: A time stamp field is provided because a control command should be generated in
|
||||||
|
response to the input of a vehicle kinematic state. Retaining the time of the triggering data
|
||||||
|
should aid with diagnostics and traceability.
|
||||||
|
|
||||||
|
**Rationale**: A single acceleration field is provided because controllers typically plan a
|
||||||
|
longitudinal acceleration and turning angle for the rigid body. Braking is baked into this single
|
||||||
|
command for simplicity of controller development, and because it is generally not expected for both
|
||||||
|
the brake to be depressed and the accelerator at the same time.
|
||||||
|
|
||||||
|
**Rationale**: Wheel steering angles are provided since it allows the controller to only require a
|
||||||
|
simplified view of the vehicle platform, such as knowing the wheelbase length. Depending on the
|
||||||
|
implementation of a drive-by-wire interface, producing a given wheel angle may require knowledge
|
||||||
|
of the mapping between steering wheel angle to wheel angle.
|
||||||
|
|
||||||
|
**Rationale**: The rear wheel angle is also provided to enable support for rear drive vehicles,
|
||||||
|
such as forklifts.
|
||||||
|
|
||||||
|
**Rational**: A frame is not provided since it is implied that it is fixed to the vehicle frame.
|
||||||
|
|
||||||
|
For more details, see [Controller design](@ref controller-design)
|
||||||
|
|
||||||
|
## Vehicle Kinematic State
|
||||||
|
**Source**: Vehicle interface
|
||||||
|
|
||||||
|
**Recipient(s)**: Behavior Planner
|
||||||
|
```
|
||||||
|
std_msgs/Header header
|
||||||
|
TrajectoryPoint state
|
||||||
|
geometry_msgs/Transform delta
|
||||||
|
```
|
||||||
|
|
||||||
|
The `TrajectoryPoint::time_from_start` field should also be filled with the time difference between
|
||||||
|
the current state and the previous state message.
|
||||||
|
|
||||||
|
The position fields of the `TrajectoryPoint` member should contain the position of the ego vehicle
|
||||||
|
with respect to a fixed frame, if available. If the frame is a dynamic frame (e.g. `base_link`),
|
||||||
|
then this position field should be taken as unavailable or invalid. The further kinematics of this
|
||||||
|
member should always be available, and populated according to the appropriate coordinate frame,
|
||||||
|
making the additional assumption that the coordinate frame is static.
|
||||||
|
|
||||||
|
The delta member is the transform of the message should represent the positional update of the
|
||||||
|
ego vehicle's coordinate frame relative to it's last position and orientation.
|
||||||
|
|
||||||
|
**Source**: Vehicle State Estimator
|
||||||
|
|
||||||
|
**Recipient(s)**: Planning stack (Route planner, Behavior Planner, Motion Planner, Controller),
|
||||||
|
Tracker
|
||||||
|
|
||||||
|
**Default Values**: The trajectory point should be appropriately default initialized
|
||||||
|
|
||||||
|
**Default Values**: The delta transform field should have zero translation and the unit quaternion
|
||||||
|
by default.
|
||||||
|
|
||||||
|
**Extensions**: State and transform uncertainty may be added as variances or covariance matrices.
|
||||||
|
This may be necessary for probabilistic algorithms (e.g. robust MPC)
|
||||||
|
|
||||||
|
**Rationale**: An underlying trajectory point is used because kinematic information may be needed
|
||||||
|
by controllers. Further, representing the vehicle state in a manner that mirrors the trajectory
|
||||||
|
fits with the semantic purpose of a controller: matching the current state to a state sequence
|
||||||
|
|
||||||
|
**Rationale**: A transform relative to the previous position and orientation of the ego vehicle is
|
||||||
|
provided because while absolute position may not always be available with accuracy, this relative
|
||||||
|
transform should be available with some degree of accuracy (e.g. via IMU information, odometry
|
||||||
|
information, etc.). The availability of this information allows for planning and tracking within a
|
||||||
|
local coordinate frame. For example, in a level 3 highway driving use case, a trajectory may be
|
||||||
|
rooted at the ego vehicle's position at some time stamp. The accumulation of these relative
|
||||||
|
transforms would allow for a controller to properly follow the trajectory.
|
||||||
|
|
||||||
|
**Rationale**: The kinematics are populated with a fixed frame assumption to simplify the updates
|
||||||
|
and usage of this field.
|
||||||
|
|
||||||
|
For more details, see [Controller design](@ref controller-design)
|
||||||
|
|
||||||
|
## Vehicle Odometry
|
||||||
|
|
||||||
|
```
|
||||||
|
builtin_interfaces/Time stamp
|
||||||
|
float32 velocity_mps
|
||||||
|
float32 front_wheel_angle_rad
|
||||||
|
float32 rear_wheel_angle_rad
|
||||||
|
```
|
||||||
|
|
||||||
|
This message reports the kinematic state of the vehicle as the vehicle itself reports. The intended
|
||||||
|
use case for this message could be in motion planning for initial conditions, or dead reckoning.
|
||||||
|
|
||||||
|
**Source**: Vehicle interface
|
||||||
|
|
||||||
|
**Recipient(s)**: Vehicle State Estimator
|
||||||
|
|
||||||
|
**Default Values**: The default value for this message should be 0 in all fields.
|
||||||
|
|
||||||
|
**Rationale**: This message is separate from the vehicle state report since they are typically for
|
||||||
|
distinct use cases (e.g. behavior planning vs dead reckoning)
|
||||||
|
|
||||||
|
**Rationale**: A vehicle is expected to have encoders which provide velocity, and steering angle.
|
||||||
|
Acceleration and other fields may not be available on all vehicle platforms.
|
||||||
|
|
||||||
|
**Rationale**: A stamp is expected here because this is timely information. In this sense, the
|
||||||
|
vehicle interface is acting as a sensor driver.
|
||||||
|
|
||||||
|
**Rationale**: A frame id is not provided because these are assumed to be fixed to the vehicle
|
||||||
|
frame, and heading information is not available.
|
||||||
|
|
||||||
|
## Vehicle State Command
|
||||||
|
|
||||||
|
```
|
||||||
|
builtin_interfaces/Time stamp
|
||||||
|
uint8 blinker
|
||||||
|
uint8 headlight
|
||||||
|
uint8 wiper
|
||||||
|
uint8 gear
|
||||||
|
uint8 mode
|
||||||
|
bool hand_brake
|
||||||
|
bool horn
|
||||||
|
bool autonomous
|
||||||
|
|
||||||
|
### Definitions
|
||||||
|
# Blinker
|
||||||
|
uint8 BLINKER_NO_COMMAND = 0;
|
||||||
|
uint8 BLINKER_OFF = 1;
|
||||||
|
uint8 BLINKER_LEFT = 2;
|
||||||
|
uint8 BLINKER_RIGHT = 3;
|
||||||
|
uint8 BLINKER_HAZARD = 4;
|
||||||
|
# Headlight
|
||||||
|
uint8 HEADLIGHT_NO_COMMAND = 0;
|
||||||
|
uint8 HEADLIGHT_OFF = 1;
|
||||||
|
uint8 HEADLIGHT_ON = 2;
|
||||||
|
uint8 HEADLIGHT_HIGH = 3;
|
||||||
|
# Wiper
|
||||||
|
uint8 WIPER_NO_COMMAND = 0;
|
||||||
|
uint8 WIPER_OFF = 1;
|
||||||
|
uint8 WIPER_LOW = 2;
|
||||||
|
uint8 WIPER_HIGH = 3;
|
||||||
|
uint8 WIPER_CLEAN = 4;
|
||||||
|
# Gear
|
||||||
|
uint8 GEAR_NO_COMMAND = 0
|
||||||
|
uint8 GEAR_DRIVE = 1
|
||||||
|
uint8 GEAR_REVERSE = 2
|
||||||
|
uint8 GEAR_PARK = 3
|
||||||
|
uint8 GEAR_LOW = 4
|
||||||
|
uint8 GEAR_NEUTRAL = 5
|
||||||
|
# Mode
|
||||||
|
uint8 MODE_NO_COMMAND = 0;
|
||||||
|
uint8 MODE_AUTONOMOUS = 1;
|
||||||
|
uint8 MODE_MANUAL = 2;
|
||||||
|
```
|
||||||
|
|
||||||
|
This message is intended to control the remainder of the vehicle state, e.g. those not required for
|
||||||
|
minimal collision-free driving.
|
||||||
|
|
||||||
|
**Source**: Behavior Planner
|
||||||
|
|
||||||
|
**Recipient(s)**: Vehicle interface
|
||||||
|
|
||||||
|
**Default Values**: The default value for all fields should be zero.
|
||||||
|
|
||||||
|
**Rationale**: Hazard lights superseded a left/right signal, and as such are an exclusive state
|
||||||
|
|
||||||
|
**Rationale**: Cleaning might be necessary to ensure adequate operation of sensors mounted behind
|
||||||
|
the wind shield
|
||||||
|
|
||||||
|
**Rationale**: A horn might be required to signal to other drivers
|
||||||
|
|
||||||
|
**Rationale**: Autonomous is a flag because this is a command message: true requests a transition
|
||||||
|
to autonomous, false requests a disengagement to manual.
|
||||||
|
|
||||||
|
**Rationale**: While additional states are possible for other fields (e.g. headlights, wipers,
|
||||||
|
gears, etc.), this message only prescribes the minimal set of states that most or all vehicles
|
||||||
|
can satisfy.
|
||||||
|
|
||||||
|
**Rationale**: Since commands here represent a state transition, a command of NONE denotion "no
|
||||||
|
state transition" is also valid
|
||||||
|
|
||||||
|
|
||||||
|
## Vehicle State Report
|
||||||
|
|
||||||
|
```
|
||||||
|
builtin_interfaces/Time stamp
|
||||||
|
uint8 fuel # 0 to 100
|
||||||
|
uint8 blinker
|
||||||
|
uint8 headlight
|
||||||
|
uint8 wiper
|
||||||
|
uint8 gear
|
||||||
|
uint8 mode
|
||||||
|
bool hand_brake
|
||||||
|
bool horn
|
||||||
|
|
||||||
|
### Definitions
|
||||||
|
# Blinker
|
||||||
|
uint8 BLINKER_OFF = 1
|
||||||
|
uint8 BLINKER_LEFT = 2
|
||||||
|
uint8 BLINKER_RIGHT = 3
|
||||||
|
uint8 BLINKER_HAZARD = 4
|
||||||
|
# Headlight
|
||||||
|
uint8 HEADLIGHT_OFF = 1
|
||||||
|
uint8 HEADLIGHT_ON = 2
|
||||||
|
uint8 HEADLIGHT_HIGH = 3
|
||||||
|
# Wiper
|
||||||
|
uint8 WIPER_OFF = 1
|
||||||
|
uint8 WIPER_LOW = 2
|
||||||
|
uint8 WIPER_HIGH = 3
|
||||||
|
uint8 WIPER_CLEAN = 4
|
||||||
|
# Gear
|
||||||
|
uint8 GEAR_DRIVE = 1
|
||||||
|
uint8 GEAR_REVERSE = 2
|
||||||
|
uint8 GEAR_PARK = 3
|
||||||
|
uint8 GEAR_LOW = 4
|
||||||
|
uint8 GEAR_NEUTRAL = 5
|
||||||
|
# Autonomous
|
||||||
|
uint8 MODE_AUTONOMOUS = 1
|
||||||
|
uint8 MODE_MANUAL = 2
|
||||||
|
uint8 MODE_DISENGAGED = 3
|
||||||
|
uint8 MODE_NOT_READY = 4
|
||||||
|
```
|
||||||
|
|
||||||
|
**Source**: Vehicle interface
|
||||||
|
|
||||||
|
**Recipient(s)**: Behavior Planner
|
||||||
|
|
||||||
|
**Default Value**: N/A. All fields should be populatable by the vehicle interface.
|
||||||
|
|
||||||
|
**Rationale**: A discrete fuel range is provided as finer granularity is likely unnecessary.
|
||||||
|
|
||||||
|
**Rationale**: A simple state machine is provided to ensure that disambiguate between intentionally
|
||||||
|
manual, and two modes of unintentionally being in manual mode: due to preconditions not being met,
|
||||||
|
or due to some failure of the autonomous driving stack.
|
||||||
|
|
||||||
|
**Rationale**: Constants are kept the same as VehicleStateCommand to prevent subtle bugs from being
|
||||||
|
introduced. The constant 0 is reserved for NO_COMMAND in VehicleStateCommand.
|
||||||
|
|
||||||
|
# References
|
||||||
|
|
||||||
|
- AutowareAuto#62
|
||||||
|
|
||||||
|
## Related Message Types
|
||||||
|
|
||||||
|
### ROS
|
||||||
|
|
||||||
|
- [JointTrajectory.msg](https://github.com/ros2/common_interfaces/blob/master/trajectory_msgs/msg/JointTrajectoryPoint.msg)
|
||||||
|
- [PointStamped](http://docs.ros.org/lunar/api/geometry_msgs/html/msg/PointStamped.html)
|
||||||
|
- [PoseStamped](http://docs.ros.org/lunar/api/geometry_msgs/html/msg/PoseStamped.html)
|
||||||
|
- [TransformStamped](http://docs.ros.org/melodic/api/geometry_msgs/html/msg/TransformStamped.html)
|
||||||
|
- [NavSatFix](http://docs.ros.org/melodic/api/sensor_msgs/html/msg/NavSatFix.html)
|
||||||
|
|
||||||
|
### Autoware.AI
|
||||||
|
|
||||||
|
- [AccelCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/AccelCmd.msg)
|
||||||
|
- [BrakeCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/BrakeCmd.msg)
|
||||||
|
- [ControlCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/ControlCommand.msg)
|
||||||
|
- [IndicatorCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/IndicatorCmd.msg)
|
||||||
|
- [LampCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/LampCmd.msg)
|
||||||
|
- [RemoteCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/RemoteCmd.msg)
|
||||||
|
- [SteerCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/SteerCmd.msg)
|
||||||
|
- [VehicleCmd](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/VehicleCmd.msg)
|
||||||
|
- [VehicleStatus](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/VehicleStatus.msg)
|
||||||
|
- [Waypoint](https://github.com/CPFL/Autoware/blob/master/ros/src/msgs/autoware_msgs/msg/Waypoint.msg)
|
||||||
|
|
||||||
|
### Apollo
|
||||||
|
|
||||||
|
Controller/Interface Messages
|
||||||
|
- [VehicleSignal](https://github.com/ApolloAuto/apollo/blob/fb12723bd6dcba88ecccb6123ea850da1e050171/modules/common/proto/vehicle_signal.proto)
|
||||||
|
- [Lexus](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/canbus/proto/lexus.proto)
|
||||||
|
- [DriveState](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/common/proto/drive_state.proto)
|
||||||
|
- [VehicleState](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/common/vehicle_state/proto/vehicle_state.proto)
|
||||||
|
- [ControlCmd](https://github.com/ApolloAuto/apollo/blob/3d6f86e21a3c3ac43cf08423d4c3f92bc63ecac9/modules/control/proto/control_cmd.proto)
|
||||||
|
|
||||||
|
Configuration Messages
|
||||||
|
- [LonControllerConf](https://github.com/ApolloAuto/apollo/blob/3d6f86e21a3c3ac43cf08423d4c3f92bc63ecac9/modules/control/proto/lon_controller_conf.proto)
|
||||||
|
- [LatControllerConf](https://github.com/ApolloAuto/apollo/blob/e9156ced04a8f0e372c781d803fd43428ab6c497/modules/control/proto/lat_controller_conf.proto)
|
||||||
|
- [ControlConf](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/control/proto/control_conf.proto)
|
||||||
|
- [MPCControllerConf](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/control/proto/mpc_controller_conf.proto)
|
||||||
|
|
||||||
|
Algorithm Status Messages
|
||||||
|
- [PlanningStatus](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/planning/proto/planning_status.proto)
|
||||||
|
- [LocalizationStatus](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/localization/proto/localization_status.proto)
|
||||||
|
- [PlanningStats](https://github.com/ApolloAuto/apollo/blob/51651b9105e55c14e65cc2bd349b479e55fffa36/modules/planning/proto/planning_stats.proto)
|
||||||
@@ -0,0 +1,224 @@
|
|||||||
|
BoundingBox message design {#bounding-box-design}
|
||||||
|
==========================
|
||||||
|
|
||||||
|
# Motivation
|
||||||
|
|
||||||
|
In order to ensure a modular system, it's assumed that object detectors are architecturally
|
||||||
|
delineated. In other words, software components which can produce instantaneous observations of
|
||||||
|
objects are delineated from other components in the autonomous driving stack.
|
||||||
|
|
||||||
|
This assumption or decomposition allows us to interchangeably use various forms of object detectors
|
||||||
|
with various forms of multi-object tracking (by assignment) algorithms. If a tighter coupling
|
||||||
|
between object detection and tracking is required, specialized combined stacks can be developed.
|
||||||
|
|
||||||
|
In order to facilitate the isolation of object detectors as a module, common messages types are
|
||||||
|
defined as an interface or output of the object detectors to other components.
|
||||||
|
|
||||||
|
|
||||||
|
# Use cases
|
||||||
|
|
||||||
|
The instantaneous detection of objects primarily has three use cases:
|
||||||
|
|
||||||
|
1. Collision detection (as a part of planning)
|
||||||
|
2. Tracking (which may eventually be an input to planning)
|
||||||
|
3. Region of Interest identification (as a preprocessing step to localization/mapping)
|
||||||
|
|
||||||
|
In addition, there is the implied use case that this message representation is used on a safety-
|
||||||
|
critical system.
|
||||||
|
|
||||||
|
|
||||||
|
# Requirements
|
||||||
|
|
||||||
|
## Safety-critical systems
|
||||||
|
|
||||||
|
Safety-critical systems require real-time and static memory applications. As such, this implies
|
||||||
|
that the representation of the message must be upper bounded in size.
|
||||||
|
|
||||||
|
For the purpose of performance, an optional requirement is added to message definitions such that
|
||||||
|
the maximum size is no more than `64kB`, which is also the maximum size of a single UDP packet. This
|
||||||
|
requirement ensures that latency is kept to a minimum if interprocess communication is necessary at
|
||||||
|
the interface of the object detection algorithms.
|
||||||
|
|
||||||
|
|
||||||
|
## Collision detection
|
||||||
|
|
||||||
|
In order to detect collisions, the representation must have:
|
||||||
|
|
||||||
|
1. A position at least in 2-space (with the assumption that the object is on the same plane as the
|
||||||
|
ego)
|
||||||
|
2. A bounding volume representation which fully contains the detected object
|
||||||
|
3. A way to ensure the object representation is in a consistent coordinate frame with respect to the
|
||||||
|
ego
|
||||||
|
4. Optionally uncertainty representation of the above parameters
|
||||||
|
|
||||||
|
|
||||||
|
## Tracking
|
||||||
|
|
||||||
|
The purpose of tracking is to maintain a consistent identity of a detected object over time.
|
||||||
|
In addition, tracking may also produce state estimates over time, such as kinematic estimates,
|
||||||
|
shape estimates, or label estimates.
|
||||||
|
|
||||||
|
To satisfy the fundamental requirement of tracking, the message representation must provide features
|
||||||
|
that can be used for assignment, or association of current observations with previous observations.
|
||||||
|
Features that can satisfy this requirement include:
|
||||||
|
|
||||||
|
1. Position information
|
||||||
|
2. Shape information (e.g. convex hull, bounding ellipse/box, shape features, etc.)
|
||||||
|
3. Object information (e.g. color/intensity distribution, classification label, etc.)
|
||||||
|
4. Other sensor information (e.g. velocity, heading, turn rate (via FMCW sensors))
|
||||||
|
5. Optionally uncertainty information for the above parameters
|
||||||
|
|
||||||
|
Classically, position information is the most important association feature, assuming a continuous
|
||||||
|
world and a relatively high sampling frequency.
|
||||||
|
|
||||||
|
The other features can be used to motivate various state estimates in the tracking stack.
|
||||||
|
|
||||||
|
## Region of interest detection
|
||||||
|
|
||||||
|
An object detector can also be used to identify regions of interest for various other stacks, such
|
||||||
|
as feature-based localization/mapping, or scene understanding (sign/scenario detection).
|
||||||
|
|
||||||
|
The localization/mapping use case is largely similar to the tracking use case insofar as it requires
|
||||||
|
assignment or association of features. In contrast, scene understanding requires an identification
|
||||||
|
of the relevant objects and their position in a space that is compatible with the ego frame.
|
||||||
|
|
||||||
|
As such, the features needed to satisfy this use case are similar to that of the tracking use case:
|
||||||
|
|
||||||
|
1. Position information
|
||||||
|
2. Shape/object information
|
||||||
|
3. Optionally uncertainty information
|
||||||
|
|
||||||
|
|
||||||
|
# Message definition
|
||||||
|
|
||||||
|
Based on the requirements laid out, some assumptions and simplifications can be made, and a message
|
||||||
|
type can be defined.
|
||||||
|
|
||||||
|
If any of the assumptions and simplifications must be broken for the proper operation of the
|
||||||
|
algorithm, then the choice of algorithm should be reconsidered, or a parallel construct which
|
||||||
|
encapsulates multiple software components should be made.
|
||||||
|
|
||||||
|
In the case when a stack cannot populate certain fields of the interface, the field should be in
|
||||||
|
an identifiably non-normal state, such as zero or NaN.
|
||||||
|
|
||||||
|
|
||||||
|
## Safety critical requirements
|
||||||
|
|
||||||
|
To satisfy the minimal latency requirement, the representation must be bounded in size to `64kB`.
|
||||||
|
|
||||||
|
If it's additionally assumed that `1kB` is used for secondary representation and there are
|
||||||
|
piggy-backed submessages in the communication sublayer, the maximum representation size is
|
||||||
|
`63kB`.
|
||||||
|
|
||||||
|
Next, it's assumed that some maximum number of objects that are detected instantaneously. Based on
|
||||||
|
current observations of Apex.AI urban driving use cases, typically 50-70 objects are observed per
|
||||||
|
scene. Applying a healthy safety factor gives a maximum object bound of 256 objects per frame.
|
||||||
|
|
||||||
|
These two assumptions combined lead us to have a maximum representation size of `250B`.
|
||||||
|
|
||||||
|
|
||||||
|
## Position requirements
|
||||||
|
|
||||||
|
Minimally, a 3D position is used to satisfy the position requirement inherent in all use cases. A 3D
|
||||||
|
position is used to be more general, and apply to other stacks, such as a vision/camera-based stack.
|
||||||
|
|
||||||
|
To satisfy the compatibility of representational spaces, it's assumed that all observations are made
|
||||||
|
in a common frame. This frame can then be represented by a string in the aggregate object type.
|
||||||
|
It is assumed that it is the responsibility of the consuming algorithm to have and transform the
|
||||||
|
position space into the correct coordinate frame given this information.
|
||||||
|
|
||||||
|
|
||||||
|
## Shape requirements
|
||||||
|
|
||||||
|
Next, the shape of the object is represented as a bounding box in 3 interdependent ways:
|
||||||
|
|
||||||
|
- A quaternion for orientation
|
||||||
|
- A 3D size parameter
|
||||||
|
- Four 3D positions for the corners of the bounding box
|
||||||
|
|
||||||
|
A bounding box representation was used because many objects in the autonomous driving use case
|
||||||
|
are approximately box-shaped. In addition, many efficient algorithms exist in both the 2D and 3D
|
||||||
|
case to compute bounding boxes. Finally, bounding boxes are convenient, close-formed representations
|
||||||
|
of objects, as opposed to a convex hull which can be potentially unbounded in representation size.
|
||||||
|
|
||||||
|
A quaternion is used to represent orientation. An oriented bounding box is used as opposed to
|
||||||
|
axis-aligned bounding boxes because it can better represent and fit to objects. A quaternion
|
||||||
|
is used to represent orientation in the SO(3) space because it is continuously varying without
|
||||||
|
singularities. In addition, it can be used to efficiently calculate sine and cosine values.
|
||||||
|
|
||||||
|
Finally, the size and corners of the bounding box is represented. While the two
|
||||||
|
together represent redundant information, both parameters are byproducts of the bounding box
|
||||||
|
computation process, and communicating both forms of information downstream can reduce the
|
||||||
|
computational burden and repeated work of algorithms downstream.
|
||||||
|
|
||||||
|
For example, size can be used as a coarse collision-checking step, whereas the corners are used
|
||||||
|
for fine-grained collision detection. Similarly, the size of the bounding may be treated as direct
|
||||||
|
extent observations in the tracking case, whereas the corners may be treated as proxy observations
|
||||||
|
of the centroid.
|
||||||
|
|
||||||
|
|
||||||
|
## Object/Other requirements
|
||||||
|
|
||||||
|
Of all the object features proposed, only a classification label is bounded in representation size
|
||||||
|
(assuming a finite set of classes). While the other features could be bounded, they would be
|
||||||
|
severely limited in their representational capabilities due to the size limitations.
|
||||||
|
|
||||||
|
As such, only a classification label is provided with the current form:
|
||||||
|
|
||||||
|
`vehicle_label` is an 8-bit integer depicting the classification label of the bounding box. It
|
||||||
|
can take any of the following default values:
|
||||||
|
|
||||||
|
```
|
||||||
|
NO_LABEL=0
|
||||||
|
CAR=1
|
||||||
|
PEDESTRIAN=2
|
||||||
|
CYCLIST=3
|
||||||
|
MOTORCYCLE=4
|
||||||
|
```
|
||||||
|
|
||||||
|
The `signal_label` field contains the back signal state of the car and can take any of the following
|
||||||
|
default values:
|
||||||
|
|
||||||
|
```
|
||||||
|
NO_SIGNAL=0
|
||||||
|
LEFT_SIGNAL=1
|
||||||
|
RIGHT_SIGNAL=2
|
||||||
|
BRAKE=3
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, additional kinematic fields can potentially be populated at minimal size cost. These include
|
||||||
|
velocity, heading, and heading rate, assuming a FMCW/doppler-effect sensor is available. The
|
||||||
|
inclusion of such fields can greatly improve the performance of tracking, or in some cases remove
|
||||||
|
the necessity of tracking (i.e. predictive collision detection).
|
||||||
|
|
||||||
|
|
||||||
|
## Uncertainty requirements
|
||||||
|
|
||||||
|
While uncertainty representation is not a strict requirement, the usage of uncertainty can greatly
|
||||||
|
improve the performance of downstream algorithms, both from the perspective of accuracy, and safety.
|
||||||
|
|
||||||
|
Representing the full probabilistic state of the object is difficult due to size constraints,
|
||||||
|
as representing an 8-state covariance matrix would overrun the capacity, and
|
||||||
|
similarly representing the full classification distribution is potentially unbounded in size.
|
||||||
|
|
||||||
|
As a compromise, several modeling simplifications and assumptions can be made for the bonus
|
||||||
|
representation of uncertainty.
|
||||||
|
|
||||||
|
First, it can be assumed that the uncertainty of state variables are uncorrelated, implying all
|
||||||
|
off-diagonal elements of the full covariance matrix are zero, and thus need not be represented.
|
||||||
|
Second, the coarse modeling assumption of a uniformly distributed class assignment residual can
|
||||||
|
be used. As a result, class uncertainty can be represented with a single value.
|
||||||
|
|
||||||
|
|
||||||
|
# Future extensions
|
||||||
|
|
||||||
|
The currently proposed representation for bounding boxes takes up approximately `150B` of the total
|
||||||
|
size budget of `230B`. This leaves room for up to 18 floating point values. These could be used to
|
||||||
|
cover the other optional requirements as a vector of floating points, with an optional ID denoting
|
||||||
|
the intended interpretation.
|
||||||
|
|
||||||
|
|
||||||
|
# Related issues
|
||||||
|
|
||||||
|
- #3540: Update bounding box, add use cases
|
||||||
|
- #4069: Revise new articles for the 0.12.0 release
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>autoware_auto_msgs</name>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<description>Interfaces between core Autoware.Auto components</description>
|
||||||
|
<maintainer email="opensource@apex.ai">Apex.AI, Inc.</maintainer>
|
||||||
|
<license>Apache 2</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake_auto</buildtool_depend>
|
||||||
|
|
||||||
|
<exec_depend>autoware_auto_control_msgs</exec_depend>
|
||||||
|
<exec_depend>autoware_auto_geometry_msgs</exec_depend>
|
||||||
|
<exec_depend>autoware_auto_mapping_msgs</exec_depend>
|
||||||
|
<exec_depend>autoware_auto_perception_msgs</exec_depend>
|
||||||
|
<exec_depend>autoware_auto_planning_msgs</exec_depend>
|
||||||
|
<exec_depend>autoware_auto_system_msgs</exec_depend>
|
||||||
|
<exec_depend>autoware_auto_vehicle_msgs</exec_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
||||||
|
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_perception_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||||
|
"msg/BoundingBox.idl"
|
||||||
|
"msg/BoundingBoxArray.idl"
|
||||||
|
"msg/ClassifiedRoi.idl"
|
||||||
|
"msg/ClassifiedRoiArray.idl"
|
||||||
|
"msg/DetectedObject.idl"
|
||||||
|
"msg/DetectedObjectKinematics.idl"
|
||||||
|
"msg/DetectedObjects.idl"
|
||||||
|
"msg/LookingTrafficSignal.idl"
|
||||||
|
"msg/ObjectClassification.idl"
|
||||||
|
"msg/PointClusters.idl"
|
||||||
|
"msg/PointXYZIF.idl"
|
||||||
|
"msg/PredictedObject.idl"
|
||||||
|
"msg/PredictedObjectKinematics.idl"
|
||||||
|
"msg/PredictedObjects.idl"
|
||||||
|
"msg/PredictedPath.idl"
|
||||||
|
"msg/Shape.idl"
|
||||||
|
"msg/TrackedObject.idl"
|
||||||
|
"msg/TrackedObjectKinematics.idl"
|
||||||
|
"msg/TrackedObjects.idl"
|
||||||
|
"msg/TrafficLight.idl"
|
||||||
|
"msg/TrafficLightRoi.idl"
|
||||||
|
"msg/TrafficLightRoiArray.idl"
|
||||||
|
"msg/TrafficSignal.idl"
|
||||||
|
"msg/TrafficSignalArray.idl"
|
||||||
|
"msg/TrafficSignalStamped.idl"
|
||||||
|
"msg/TrafficSignalWithJudge.idl"
|
||||||
|
DEPENDENCIES
|
||||||
|
"autoware_auto_geometry_msgs"
|
||||||
|
"geometry_msgs"
|
||||||
|
"sensor_msgs"
|
||||||
|
"std_msgs"
|
||||||
|
"unique_identifier_msgs"
|
||||||
|
ADD_LINTER_TESTS
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
#include "autoware_auto_geometry_msgs/msg/Quaternion32.idl"
|
||||||
|
#include "geometry_msgs/msg/Point32.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
typedef geometry_msgs::msg::Point32 geometry_msgs__msg__Point32;
|
||||||
|
typedef geometry_msgs__msg__Point32 geometry_msgs__msg__Point32__4[4];
|
||||||
|
typedef float float__8[8];
|
||||||
|
module BoundingBox_Constants {
|
||||||
|
const uint8 NO_LABEL = 0;
|
||||||
|
const uint8 CAR = 1;
|
||||||
|
const uint8 PEDESTRIAN = 2;
|
||||||
|
const uint8 CYCLIST = 3;
|
||||||
|
const uint8 MOTORCYCLE = 4;
|
||||||
|
const uint8 NO_SIGNAL = 0;
|
||||||
|
const uint8 LEFT_SIGNAL = 1;
|
||||||
|
const uint8 RIGHT_SIGNAL = 2;
|
||||||
|
const uint8 BRAKE = 3;
|
||||||
|
const uint32 POSE_X = 0;
|
||||||
|
const uint32 POSE_Y = 1;
|
||||||
|
const uint32 VELOCITY = 2;
|
||||||
|
const uint32 HEADING = 3;
|
||||||
|
const uint32 TURN_RATE = 4;
|
||||||
|
const uint32 SIZE_X = 5;
|
||||||
|
const uint32 SIZE_Y = 6;
|
||||||
|
const uint32 ACCELERATION = 7;
|
||||||
|
};
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Oriented bounding box representation")
|
||||||
|
struct BoundingBox {
|
||||||
|
geometry_msgs::msg::Point32 centroid;
|
||||||
|
|
||||||
|
geometry_msgs::msg::Point32 size;
|
||||||
|
|
||||||
|
autoware_auto_geometry_msgs::msg::Quaternion32 orientation;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float velocity;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float heading;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float heading_rate;
|
||||||
|
|
||||||
|
geometry_msgs__msg__Point32__4 corners;
|
||||||
|
|
||||||
|
float__8 variance;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" can hold arbitrary value, e.g. likelihood, area, perimeter")
|
||||||
|
float value;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" can hold one of the vehicle constants defined below" "\n"
|
||||||
|
" NO_LABEL as default value")
|
||||||
|
@default (value=0)
|
||||||
|
uint8 vehicle_label;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" can hold one of the signal constants defined below" "\n"
|
||||||
|
" NO_SIGNAL as default value")
|
||||||
|
@default (value=0)
|
||||||
|
uint8 signal_label;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Likelihood of vehicle label")
|
||||||
|
float class_likelihood;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/BoundingBox.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module BoundingBoxArray_Constants {
|
||||||
|
const uint32 CAPACITY = 256;
|
||||||
|
};
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Message for a full set of bounding boxes")
|
||||||
|
struct BoundingBoxArray {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::BoundingBox, 256> boxes;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#include "geometry_msgs/msg/Polygon.idl"
|
||||||
|
#include "autoware_auto_perception_msgs/msg/ObjectClassification.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text="A region of interest in an image with class information.")
|
||||||
|
struct ClassifiedRoi {
|
||||||
|
@verbatim (language="comment", text="A vector of possible classifications of this object.")
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::ObjectClassification> classifications;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text="A 2D polygon describing the outline of an object in image coordinates.")
|
||||||
|
geometry_msgs::msg::Polygon polygon;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/ClassifiedRoi.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Message for a full set of classified ROIs")
|
||||||
|
struct ClassifiedRoiArray {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::ClassifiedRoi> rois;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/DetectedObjectKinematics.idl"
|
||||||
|
#include "autoware_auto_perception_msgs/msg/ObjectClassification.idl"
|
||||||
|
#include "autoware_auto_perception_msgs/msg/Shape.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct DetectedObject {
|
||||||
|
@range (min=0.0, max=1.0)
|
||||||
|
float existence_probability;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::ObjectClassification> classification;
|
||||||
|
autoware_auto_perception_msgs::msg::DetectedObjectKinematics kinematics;
|
||||||
|
autoware_auto_perception_msgs::msg::Shape shape;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
#include "geometry_msgs/msg/Point.idl"
|
||||||
|
#include "geometry_msgs/msg/PoseWithCovariance.idl"
|
||||||
|
#include "geometry_msgs/msg/Quaternion.idl"
|
||||||
|
#include "geometry_msgs/msg/TwistWithCovariance.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module DetectedObjectKinematics_Constants {
|
||||||
|
/**
|
||||||
|
* Only position is available, orientation is empty. Note that the shape can be an oriented
|
||||||
|
* bounding box but the direction the object is facing is unknown, in which case
|
||||||
|
* orientation should be empty.
|
||||||
|
*/
|
||||||
|
const uint8 UNAVAILABLE = 0;
|
||||||
|
/**
|
||||||
|
* The orientation is determined only up to a sign flip. For instance, assume that cars are
|
||||||
|
* longer than they are wide, and the perception pipeline can accurately estimate the
|
||||||
|
* dimensions of a car. It should set the orientation to coincide with the major axis, with
|
||||||
|
* the sign chosen arbitrarily, and use this tag to signify that the orientation could
|
||||||
|
* point to the front or the back.
|
||||||
|
*/
|
||||||
|
const uint8 SIGN_UNKNOWN = 1;
|
||||||
|
/**
|
||||||
|
* The full orientation is available. Use e.g. for machine-learning models that can
|
||||||
|
* differentiate between the front and back of a vehicle.
|
||||||
|
*/
|
||||||
|
const uint8 AVAILABLE = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DetectedObjectKinematics {
|
||||||
|
geometry_msgs::msg::PoseWithCovariance pose_with_covariance;
|
||||||
|
|
||||||
|
boolean has_position_covariance;
|
||||||
|
uint8 orientation_availability;
|
||||||
|
|
||||||
|
geometry_msgs::msg::TwistWithCovariance twist_with_covariance;
|
||||||
|
|
||||||
|
boolean has_twist;
|
||||||
|
boolean has_twist_covariance;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/DetectedObject.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" This is the output of object detection and the input to tracking.")
|
||||||
|
struct DetectedObjects {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::DetectedObject> objects;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/TrafficSignalWithJudge.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct LookingTrafficSignal {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
boolean is_module_running;
|
||||||
|
autoware_auto_perception_msgs::msg::TrafficSignalWithJudge perception;
|
||||||
|
autoware_auto_perception_msgs::msg::TrafficSignalWithJudge external;
|
||||||
|
autoware_auto_perception_msgs::msg::TrafficSignalWithJudge result;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module ObjectClassification_Constants {
|
||||||
|
const uint8 UNKNOWN = 0;
|
||||||
|
const uint8 CAR = 1;
|
||||||
|
const uint8 TRUCK = 2;
|
||||||
|
const uint8 BUS = 3;
|
||||||
|
const uint8 TRAILER = 4;
|
||||||
|
const uint8 MOTORCYCLE = 5;
|
||||||
|
const uint8 BICYCLE = 6;
|
||||||
|
const uint8 PEDESTRIAN = 7;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ObjectClassification {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Valid values for the label field are provided in"
|
||||||
|
" ObjectClassification_Constants.")
|
||||||
|
uint8 label;
|
||||||
|
|
||||||
|
@range (min=0.0, max=1.0)
|
||||||
|
float probability;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/PointXYZIF.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Represent the clusters" "\n"
|
||||||
|
" The cluster 0 is from point 0 to point cluster_boundary[0] - 1." "\n"
|
||||||
|
" Cluster i would be from point cluster_boundary[i - 1] to cluster_boundary[i] - 1, and so on")
|
||||||
|
struct PointClusters {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::PointXYZIF> points;
|
||||||
|
|
||||||
|
sequence<uint32> cluster_boundary;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module PointXYZIF_Constants {
|
||||||
|
const uint16 END_OF_SCAN_ID = 65535;
|
||||||
|
};
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" This message is meant to mirror autoware::common::types::PointXYZIF")
|
||||||
|
struct PointXYZIF {
|
||||||
|
float x;
|
||||||
|
|
||||||
|
float y;
|
||||||
|
|
||||||
|
float z;
|
||||||
|
|
||||||
|
float intensity;
|
||||||
|
|
||||||
|
uint16 id;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/ObjectClassification.idl"
|
||||||
|
#include "autoware_auto_perception_msgs/msg/Shape.idl"
|
||||||
|
#include "autoware_auto_perception_msgs/msg/PredictedObjectKinematics.idl"
|
||||||
|
#include "unique_identifier_msgs/msg/UUID.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct PredictedObject {
|
||||||
|
unique_identifier_msgs::msg::UUID object_id;
|
||||||
|
|
||||||
|
@range (min=0.0, max=1.0)
|
||||||
|
float existence_probability;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::ObjectClassification> classification;
|
||||||
|
autoware_auto_perception_msgs::msg::PredictedObjectKinematics kinematics;
|
||||||
|
|
||||||
|
autoware_auto_perception_msgs::msg::Shape shape;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/PredictedPath.idl"
|
||||||
|
#include "geometry_msgs/msg/AccelWithCovariance.idl"
|
||||||
|
#include "geometry_msgs/msg/PoseWithCovariance.idl"
|
||||||
|
#include "geometry_msgs/msg/TwistWithCovariance.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct PredictedObjectKinematics {
|
||||||
|
geometry_msgs::msg::PoseWithCovariance initial_pose_with_covariance;
|
||||||
|
|
||||||
|
geometry_msgs::msg::TwistWithCovariance initial_twist_with_covariance;
|
||||||
|
|
||||||
|
geometry_msgs::msg::AccelWithCovariance initial_acceleration_with_covariance;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::PredictedPath, 100> predicted_paths;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/PredictedObject.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" This is the output of object prediction.")
|
||||||
|
struct PredictedObjects {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::PredictedObject> objects;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#include "builtin_interfaces/msg/Duration.idl"
|
||||||
|
#include "geometry_msgs/msg/Pose.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct PredictedPath {
|
||||||
|
sequence<geometry_msgs::msg::Pose, 100> path;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" The time_step field defines the interval between consecutive pose predictions in the path array.")
|
||||||
|
builtin_interfaces::msg::Duration time_step;
|
||||||
|
float confidence;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#include "geometry_msgs/msg/Polygon.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module Shape_Constants {
|
||||||
|
const uint8 BOUNDING_BOX=0;
|
||||||
|
const uint8 CYLINDER=1;
|
||||||
|
const uint8 POLYGON=2;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Shape {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Type of the shape")
|
||||||
|
uint8 type;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" The contour of the shape (POLYGON)")
|
||||||
|
geometry_msgs::msg::Polygon footprint;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" x: the length of the object (BOUNDING_BOX) or diameter (CYLINDER)"
|
||||||
|
" y: the width of the object (BOUNDING_BOX)"
|
||||||
|
" z: the overall height of the object")
|
||||||
|
geometry_msgs::msg::Vector3 dimensions;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/ObjectClassification.idl"
|
||||||
|
#include "autoware_auto_perception_msgs/msg/Shape.idl"
|
||||||
|
#include "autoware_auto_perception_msgs/msg/TrackedObjectKinematics.idl"
|
||||||
|
#include "unique_identifier_msgs/msg/UUID.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct TrackedObject {
|
||||||
|
unique_identifier_msgs::msg::UUID object_id;
|
||||||
|
|
||||||
|
@range (min=0.0, max=1.0)
|
||||||
|
float existence_probability;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::ObjectClassification> classification;
|
||||||
|
autoware_auto_perception_msgs::msg::TrackedObjectKinematics kinematics;
|
||||||
|
|
||||||
|
autoware_auto_perception_msgs::msg::Shape shape;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
#include "geometry_msgs/msg/AccelWithCovariance.idl"
|
||||||
|
#include "geometry_msgs/msg/Point.idl"
|
||||||
|
#include "geometry_msgs/msg/PoseWithCovariance.idl"
|
||||||
|
#include "geometry_msgs/msg/Quaternion.idl"
|
||||||
|
#include "geometry_msgs/msg/TwistWithCovariance.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module TrackedObjectKinematics_Constants {
|
||||||
|
/**
|
||||||
|
* Only position is available, orientation is empty. Note that the shape can be an oriented
|
||||||
|
* bounding box but the direction the object is facing is unknown, in which case
|
||||||
|
* orientation should be empty.
|
||||||
|
*/
|
||||||
|
const uint8 UNAVAILABLE = 0;
|
||||||
|
/**
|
||||||
|
* The orientation is determined only up to a sign flip. For instance, assume that cars are
|
||||||
|
* longer than they are wide, and the perception pipeline can accurately estimate the
|
||||||
|
* dimensions of a car. It should set the orientation to coincide with the major axis, with
|
||||||
|
* the sign chosen arbitrarily, and use this tag to signify that the orientation could
|
||||||
|
* point to the front or the back.
|
||||||
|
*/
|
||||||
|
const uint8 SIGN_UNKNOWN = 1;
|
||||||
|
/**
|
||||||
|
* The full orientation is available. Use e.g. for machine-learning models that can
|
||||||
|
* differentiate between the front and back of a vehicle.
|
||||||
|
*/
|
||||||
|
const uint8 AVAILABLE = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TrackedObjectKinematics {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Pose covariance is always provided by tracking.")
|
||||||
|
geometry_msgs::msg::PoseWithCovariance pose_with_covariance;
|
||||||
|
|
||||||
|
uint8 orientation_availability;
|
||||||
|
|
||||||
|
geometry_msgs::msg::TwistWithCovariance twist_with_covariance;
|
||||||
|
|
||||||
|
geometry_msgs::msg::AccelWithCovariance acceleration_with_covariance;
|
||||||
|
|
||||||
|
@value (default=False)
|
||||||
|
boolean is_stationary;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/TrackedObject.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" This is the output of object tracking and the input to prediction.")
|
||||||
|
struct TrackedObjects {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::TrackedObject> objects;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module TrafficLight_Constants {
|
||||||
|
// constants for color
|
||||||
|
const uint8 RED = 1;
|
||||||
|
const uint8 AMBER = 2;
|
||||||
|
const uint8 GREEN = 3;
|
||||||
|
const uint8 WHITE = 4;
|
||||||
|
|
||||||
|
// constants for shape
|
||||||
|
const uint8 CIRCLE = 5;
|
||||||
|
const uint8 LEFT_ARROW = 6;
|
||||||
|
const uint8 RIGHT_ARROW = 7;
|
||||||
|
const uint8 UP_ARROW = 8;
|
||||||
|
const uint8 UP_LEFT_ARROW = 9;
|
||||||
|
const uint8 UP_RIGHT_ARROW = 10;
|
||||||
|
const uint8 DOWN_ARROW = 11;
|
||||||
|
const uint8 DOWN_LEFT_ARROW = 12;
|
||||||
|
const uint8 DOWN_RIGHT_ARROW = 13;
|
||||||
|
const uint8 CROSS = 14;
|
||||||
|
|
||||||
|
// constants for status
|
||||||
|
const uint8 SOLID_OFF = 15;
|
||||||
|
const uint8 SOLID_ON = 16;
|
||||||
|
const uint8 FLASHING = 17;
|
||||||
|
|
||||||
|
// constants for common use
|
||||||
|
const uint8 UNKNOWN = 18;
|
||||||
|
};
|
||||||
|
struct TrafficLight {
|
||||||
|
@default (value=0)
|
||||||
|
uint8 color;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 shape;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 status;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float confidence;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#include "sensor_msgs/msg/RegionOfInterest.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct TrafficLightRoi {
|
||||||
|
sensor_msgs::msg::RegionOfInterest roi;
|
||||||
|
int32 id;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/TrafficLightRoi.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct TrafficLightRoiArray {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::TrafficLightRoi> rois;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/TrafficLight.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A TrafficSignal is defined here as a group of multiple TrafficLights" "\n"
|
||||||
|
" which each represent a single light, indicator, or bulb.")
|
||||||
|
struct TrafficSignal {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A value of 0 indicates an invalid map_primitive_id. Signals which are not"
|
||||||
|
" associated with map primitives should not be used in planning because this"
|
||||||
|
" indicates that the required signal-to-lane mapping is not available.")
|
||||||
|
@default (value=0)
|
||||||
|
int32 map_primitive_id;
|
||||||
|
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::TrafficLight, 10> lights;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/TrafficSignal.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct TrafficSignalArray {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
sequence<autoware_auto_perception_msgs::msg::TrafficSignal> signals;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/TrafficSignal.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
struct TrafficSignalStamped {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
autoware_auto_perception_msgs::msg::TrafficSignal signal;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#include "autoware_auto_perception_msgs/msg/TrafficSignal.idl"
|
||||||
|
|
||||||
|
module autoware_auto_perception_msgs {
|
||||||
|
module msg {
|
||||||
|
module TrafficSignalWithJudge_Constants {
|
||||||
|
const uint8 JUDGE = 1;
|
||||||
|
const uint8 NONE = 2;
|
||||||
|
const uint8 STOP = 3;
|
||||||
|
const uint8 GO = 4;
|
||||||
|
};
|
||||||
|
struct TrafficSignalWithJudge {
|
||||||
|
uint8 judge;
|
||||||
|
boolean has_state;
|
||||||
|
autoware_auto_perception_msgs::msg::TrafficSignal signal;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>autoware_auto_perception_msgs</name>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<description>Interfaces between core Autoware.Auto perception components</description>
|
||||||
|
<maintainer email="opensource@apex.ai">Apex.AI, Inc.</maintainer>
|
||||||
|
<license>Apache 2</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake_auto</buildtool_depend>
|
||||||
|
|
||||||
|
<build_depend>rosidl_default_generators</build_depend>
|
||||||
|
|
||||||
|
<depend>autoware_auto_geometry_msgs</depend>
|
||||||
|
<depend>geometry_msgs</depend>
|
||||||
|
<depend>sensor_msgs</depend>
|
||||||
|
<depend>std_msgs</depend>
|
||||||
|
<depend>unique_identifier_msgs</depend>
|
||||||
|
|
||||||
|
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<member_of_group>rosidl_interface_packages</member_of_group>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_planning_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||||
|
"action/PlannerCostmap.idl"
|
||||||
|
"action/PlanTrajectory.idl"
|
||||||
|
"action/RecordTrajectory.idl"
|
||||||
|
"action/ReplayTrajectory.idl"
|
||||||
|
"msg/HADMapRoute.idl"
|
||||||
|
"msg/OrderMovement.idl"
|
||||||
|
"msg/Route.idl"
|
||||||
|
"msg/Trajectory.idl"
|
||||||
|
"msg/TrajectoryPoint.idl"
|
||||||
|
"msg/Path.idl"
|
||||||
|
"msg/PathPoint.idl"
|
||||||
|
"msg/PathWithLaneId.idl"
|
||||||
|
"msg/PathPointWithLaneId.idl"
|
||||||
|
"srv/ModifyTrajectory.idl"
|
||||||
|
DEPENDENCIES
|
||||||
|
"autoware_auto_geometry_msgs"
|
||||||
|
"autoware_auto_mapping_msgs"
|
||||||
|
"builtin_interfaces"
|
||||||
|
"action_msgs"
|
||||||
|
"geometry_msgs"
|
||||||
|
"nav_msgs"
|
||||||
|
"std_msgs"
|
||||||
|
ADD_LINTER_TESTS
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
#include "autoware_auto_planning_msgs/msg/HADMapRoute.idl"
|
||||||
|
#include "autoware_auto_planning_msgs/msg/Trajectory.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module action {
|
||||||
|
module PlanTrajectory_Result_Constants {
|
||||||
|
const uint8 SUCCESS = 0;
|
||||||
|
const uint8 FAIL = 1;
|
||||||
|
};
|
||||||
|
struct PlanTrajectory_Goal {
|
||||||
|
autoware_auto_planning_msgs::msg::HADMapRoute sub_route;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PlanTrajectory_Result {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Report of end condition. Value should be one of PlanTrajectory_Constants")
|
||||||
|
uint8 result;
|
||||||
|
autoware_auto_planning_msgs::msg::Trajectory trajectory;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PlanTrajectory_Feedback {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Currently we don't need feedback, but we need some variable to compile")
|
||||||
|
uint8 unused_variable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
#include "autoware_auto_planning_msgs/msg/HADMapRoute.idl"
|
||||||
|
#include "nav_msgs/msg/OccupancyGrid.idl"
|
||||||
|
#include "std_msgs/msg/Empty.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module action {
|
||||||
|
struct PlannerCostmap_Goal
|
||||||
|
{
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Route defined by start and goal point and map primitives"
|
||||||
|
"between given points.")
|
||||||
|
autoware_auto_planning_msgs::msg::HADMapRoute route;
|
||||||
|
};
|
||||||
|
struct PlannerCostmap_Result
|
||||||
|
{
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Costmap with obstacles and lanelets position applied")
|
||||||
|
nav_msgs::msg::OccupancyGrid costmap;
|
||||||
|
};
|
||||||
|
struct PlannerCostmap_Feedback {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Currently there is no feedback, but variable is needed to compile")
|
||||||
|
std_msgs::msg::Empty unused_variable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module action {
|
||||||
|
struct RecordTrajectory_Goal {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"A path to the CSV file which will be created to save the recorded trajectory.")
|
||||||
|
string record_path;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RecordTrajectory_Result {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"This action has no result but we must provide something here.")
|
||||||
|
boolean unused_flag;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RecordTrajectory_Feedback {
|
||||||
|
int32 current_length;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module action {
|
||||||
|
struct ReplayTrajectory_Goal {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"A path to the CSV file which contains the recorded trajectory.")
|
||||||
|
string replay_path;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ReplayTrajectory_Result {
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"This action has no result but we must provide something here.")
|
||||||
|
boolean unused_flag;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ReplayTrajectory_Feedback {
|
||||||
|
int32 remaining_length;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#include "autoware_auto_mapping_msgs/msg/HADMapSegment.idl"
|
||||||
|
#include "geometry_msgs/msg/Pose.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A route within a high-definition map defined by"
|
||||||
|
" the start and goal points and map primitives"
|
||||||
|
" describing the route between the two.")
|
||||||
|
struct HADMapRoute {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" The start_pose must exist within the bounds of the primitives in the first"
|
||||||
|
" segment defined in the route_segments array.")
|
||||||
|
geometry_msgs::msg::Pose start_pose;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" The goal_pose must exist within the bounds of the primitives in the last"
|
||||||
|
" segment defined in the route_semgents array.")
|
||||||
|
geometry_msgs::msg::Pose goal_pose;
|
||||||
|
|
||||||
|
sequence<autoware_auto_mapping_msgs::msg::HADMapSegment> segments;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
module OrderMovement_Constants {
|
||||||
|
const uint8 NOTSET = 0;
|
||||||
|
const uint8 STOP = 1;
|
||||||
|
const uint8 GO = 2;
|
||||||
|
const uint8 SLOWDOWN = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
"Movement order for planner to follow")
|
||||||
|
struct OrderMovement {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 order_movement;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#include "autoware_auto_planning_msgs/msg/PathPoint.idl"
|
||||||
|
#include "nav_msgs/msg/OccupancyGrid.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language = "comment", text=
|
||||||
|
"Contains a PathPoint path and left and right bound.")
|
||||||
|
struct Path {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
sequence<autoware_auto_planning_msgs::msg::PathPoint> points;
|
||||||
|
sequence<geometry_msgs::msg::Point> left_bound;
|
||||||
|
sequence<geometry_msgs::msg::Point> right_bound;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#include "geometry_msgs/msg/Pose.idl"
|
||||||
|
#include "geometry_msgs/msg/Twist.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language = "comment", text=
|
||||||
|
"Represents a pose from a lanelet map, contains twist information.")
|
||||||
|
struct PathPoint {
|
||||||
|
geometry_msgs::msg::Pose pose;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float longitudinal_velocity_mps;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float lateral_velocity_mps;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float heading_rate_rps;
|
||||||
|
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Denotes that the point is final, doesn't need further updates.")
|
||||||
|
@default (value = FALSE)
|
||||||
|
boolean is_final;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#include "autoware_auto_planning_msgs/msg/PathPoint.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language = "comment", text=
|
||||||
|
"Contains a PathPoint and lanelet lane_id information.")
|
||||||
|
struct PathPointWithLaneId {
|
||||||
|
autoware_auto_planning_msgs::msg::PathPoint point;
|
||||||
|
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Lanelet lane_id information.")
|
||||||
|
sequence<int64> lane_ids;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#include "autoware_auto_planning_msgs/msg/PathPointWithLaneId.idl"
|
||||||
|
#include "nav_msgs/msg/OccupancyGrid.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language = "comment", text=
|
||||||
|
"Contains a PathPointWithLaneId path and left and right bound.")
|
||||||
|
struct PathWithLaneId {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
sequence<autoware_auto_planning_msgs::msg::PathPointWithLaneId> points;
|
||||||
|
sequence<geometry_msgs::msg::Point> left_bound;
|
||||||
|
sequence<geometry_msgs::msg::Point> right_bound;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#include "autoware_auto_mapping_msgs/msg/MapPrimitive.idl"
|
||||||
|
#include "autoware_auto_planning_msgs/msg/TrajectoryPoint.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
module Route_Constants {
|
||||||
|
const uint32 CAPACITY = 100;
|
||||||
|
};
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
"Global route information for the planner")
|
||||||
|
struct Route {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
|
||||||
|
autoware_auto_planning_msgs::msg::TrajectoryPoint start_point;
|
||||||
|
|
||||||
|
autoware_auto_planning_msgs::msg::TrajectoryPoint goal_point;
|
||||||
|
|
||||||
|
sequence<autoware_auto_mapping_msgs::msg::MapPrimitive, 100> primitives;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#include "autoware_auto_planning_msgs/msg/TrajectoryPoint.idl"
|
||||||
|
#include "std_msgs/msg/Header.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
module Trajectory_Constants {
|
||||||
|
const uint32 CAPACITY = 10000;
|
||||||
|
};
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A set of trajectory points for the controller")
|
||||||
|
struct Trajectory {
|
||||||
|
std_msgs::msg::Header header;
|
||||||
|
|
||||||
|
sequence<autoware_auto_planning_msgs::msg::TrajectoryPoint, 10000> points;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
#include "builtin_interfaces/msg/Duration.idl"
|
||||||
|
#include "geometry_msgs/msg/Pose.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Representation of a trajectory point for the controller")
|
||||||
|
struct TrajectoryPoint {
|
||||||
|
builtin_interfaces::msg::Duration time_from_start;
|
||||||
|
|
||||||
|
geometry_msgs::msg::Pose pose;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float longitudinal_velocity_mps;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float lateral_velocity_mps;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
// acceleration_mps2 increases/decreases based on absolute vehicle motion and does not consider vehicle direction (forward/backward)
|
||||||
|
float acceleration_mps2;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float heading_rate_rps;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float front_wheel_angle_rad;
|
||||||
|
|
||||||
|
@default (value=0.0)
|
||||||
|
float rear_wheel_angle_rad;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>autoware_auto_planning_msgs</name>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<description>Interfaces between core Autoware.Auto planning components</description>
|
||||||
|
<maintainer email="opensource@apex.ai">Apex.AI, Inc.</maintainer>
|
||||||
|
<license>Apache 2</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake_auto</buildtool_depend>
|
||||||
|
|
||||||
|
<build_depend>rosidl_default_generators</build_depend>
|
||||||
|
|
||||||
|
<depend>autoware_auto_geometry_msgs</depend>
|
||||||
|
<depend>autoware_auto_mapping_msgs</depend>
|
||||||
|
<depend>builtin_interfaces</depend>
|
||||||
|
<depend>action_msgs</depend>
|
||||||
|
<depend>geometry_msgs</depend>
|
||||||
|
<depend>nav_msgs</depend>
|
||||||
|
<depend>std_msgs</depend>
|
||||||
|
|
||||||
|
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<member_of_group>rosidl_interface_packages</member_of_group>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
||||||
|
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#include "autoware_auto_planning_msgs/msg/Trajectory.idl"
|
||||||
|
|
||||||
|
module autoware_auto_planning_msgs {
|
||||||
|
module srv {
|
||||||
|
struct ModifyTrajectory_Request
|
||||||
|
{
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Trajectory to be modified")
|
||||||
|
autoware_auto_planning_msgs::msg::Trajectory original_trajectory;
|
||||||
|
};
|
||||||
|
struct ModifyTrajectory_Response
|
||||||
|
{
|
||||||
|
@verbatim(language = "comment", text =
|
||||||
|
"Trajectory after modification")
|
||||||
|
autoware_auto_planning_msgs::msg::Trajectory modified_trajectory;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_system_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||||
|
"msg/AutowareState.idl"
|
||||||
|
"msg/ControlDiagnostic.idl"
|
||||||
|
"msg/DiagnosticHeader.idl"
|
||||||
|
"msg/DrivingCapability.idl"
|
||||||
|
"msg/EmergencyState.idl"
|
||||||
|
"msg/HazardStatus.idl"
|
||||||
|
"msg/HazardStatusStamped.idl"
|
||||||
|
DEPENDENCIES
|
||||||
|
"builtin_interfaces"
|
||||||
|
"diagnostic_msgs"
|
||||||
|
"std_msgs"
|
||||||
|
ADD_LINTER_TESTS
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_system_msgs {
|
||||||
|
module msg {
|
||||||
|
module AutowareState_Constants {
|
||||||
|
const uint8 INITIALIZING = 1;
|
||||||
|
const uint8 WAITING_FOR_ROUTE = 2;
|
||||||
|
const uint8 PLANNING = 3;
|
||||||
|
const uint8 WAITING_FOR_ENGAGE = 4;
|
||||||
|
const uint8 DRIVING = 5;
|
||||||
|
const uint8 ARRIVED_GOAL = 6;
|
||||||
|
const uint8 FINALIZING = 7;
|
||||||
|
};
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A message for reporting the Autoware system status.")
|
||||||
|
struct AutowareState {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Current state of the Autoware system.")
|
||||||
|
uint8 state;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
#include "autoware_auto_system_msgs/msg/DiagnosticHeader.idl"
|
||||||
|
|
||||||
|
module autoware_auto_system_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Diagnostic information for the controller")
|
||||||
|
struct ControlDiagnostic {
|
||||||
|
autoware_auto_system_msgs::msg::DiagnosticHeader diag_header;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Controller specific information")
|
||||||
|
boolean new_trajectory;
|
||||||
|
|
||||||
|
string<256> trajectory_source;
|
||||||
|
|
||||||
|
string<256> pose_source;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" the error between the current vehicle and the nearest neighbor point")
|
||||||
|
float lateral_error_m;
|
||||||
|
|
||||||
|
float longitudinal_error_m;
|
||||||
|
|
||||||
|
float velocity_error_mps;
|
||||||
|
|
||||||
|
float acceleration_error_mps2;
|
||||||
|
|
||||||
|
float yaw_error_rad;
|
||||||
|
|
||||||
|
float yaw_rate_error_rps;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include "builtin_interfaces/msg/Duration.idl"
|
||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_system_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Base information that all diagnostic messages should have")
|
||||||
|
struct DiagnosticHeader {
|
||||||
|
string<256> name;
|
||||||
|
|
||||||
|
builtin_interfaces::msg::Time data_stamp;
|
||||||
|
|
||||||
|
builtin_interfaces::msg::Time computation_start;
|
||||||
|
|
||||||
|
builtin_interfaces::msg::Duration runtime;
|
||||||
|
|
||||||
|
uint32 iterations;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
#include "autoware_auto_system_msgs/msg/HazardStatus.idl"
|
||||||
|
|
||||||
|
module autoware_auto_system_msgs {
|
||||||
|
module msg {
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A status message for reporting the vehicle driving capabilities.")
|
||||||
|
struct DrivingCapability {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Status for the autonomous driving mode.")
|
||||||
|
autoware_auto_system_msgs::msg::HazardStatus autonomous_driving;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Status for the remote control mode.")
|
||||||
|
autoware_auto_system_msgs::msg::HazardStatus remote_control;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_system_msgs {
|
||||||
|
module msg {
|
||||||
|
|
||||||
|
module EmergencyState_Constants {
|
||||||
|
const uint8 NORMAL = 1;
|
||||||
|
const uint8 OVERRIDE_REQUESTING = 2;
|
||||||
|
const uint8 MRM_OPERATING = 3;
|
||||||
|
const uint8 MRM_SUCCEEDED = 4;
|
||||||
|
const uint8 MRM_FAILED = 5;
|
||||||
|
};
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Message for reporting the emergency state.")
|
||||||
|
struct EmergencyState {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Current emergency state fo the system. Possible states are as follows."
|
||||||
|
" - NORMAL - the system is not in emergency mode."
|
||||||
|
" - OVERRIDE_REQUESTING - the override is requesting."
|
||||||
|
" - MRM_OPERATING - during the minimal risk maneuver (MRM)"
|
||||||
|
" - MRM_SUCCEEDED - MRM operation succeeded."
|
||||||
|
" - MRM_FAILED - MRM operation failed.")
|
||||||
|
uint8 state;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#include "diagnostic_msgs/msg/DiagnosticStatus.idl"
|
||||||
|
|
||||||
|
module autoware_auto_system_msgs {
|
||||||
|
module msg {
|
||||||
|
module HazardStatus_Constants {
|
||||||
|
const uint8 NO_FAULT = 0;
|
||||||
|
const uint8 SAFE_FAULT = 1;
|
||||||
|
const uint8 LATENT_FAULT = 2;
|
||||||
|
const uint8 SINGLE_POINT_FAULT = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A message for reporting the hazard status.")
|
||||||
|
struct HazardStatus {
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Determines the hazard level.")
|
||||||
|
@default (value=0)
|
||||||
|
uint8 level;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Determines whether the vehicle is in the emergency state.")
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean emergency;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Determines whether the vehicle emergency state should be held.")
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean emergency_holding;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Diagnostics categorized as no fault.")
|
||||||
|
sequence<diagnostic_msgs::msg::DiagnosticStatus> diag_no_fault;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Diagnostics categorized as safe fault.")
|
||||||
|
sequence<diagnostic_msgs::msg::DiagnosticStatus> diag_safe_fault;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Diagnostics categorized as latent fault.")
|
||||||
|
sequence<diagnostic_msgs::msg::DiagnosticStatus> diag_latent_fault;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Diagnostics categorized as single point fault.")
|
||||||
|
sequence<diagnostic_msgs::msg::DiagnosticStatus> diag_single_point_fault;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
#include "autoware_auto_system_msgs/msg/HazardStatus.idl"
|
||||||
|
|
||||||
|
module autoware_auto_system_msgs {
|
||||||
|
module msg {
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" A message for reporting the hazard status with timestamp.")
|
||||||
|
struct HazardStatusStamped {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Contains the hazard status with diagnostics information.")
|
||||||
|
autoware_auto_system_msgs::msg::HazardStatus status;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>autoware_auto_system_msgs</name>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<description>Interfaces between core Autoware.Auto system components</description>
|
||||||
|
<maintainer email="opensource@apex.ai">Apex.AI, Inc.</maintainer>
|
||||||
|
<license>Apache 2</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake_auto</buildtool_depend>
|
||||||
|
|
||||||
|
<build_depend>rosidl_default_generators</build_depend>
|
||||||
|
|
||||||
|
<depend>builtin_interfaces</depend>
|
||||||
|
<depend>diagnostic_msgs</depend>
|
||||||
|
<depend>std_msgs</depend>
|
||||||
|
|
||||||
|
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<member_of_group>rosidl_interface_packages</member_of_group>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
||||||
|
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# All rights reserved.
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
### Export headers
|
||||||
|
project(autoware_auto_vehicle_msgs)
|
||||||
|
|
||||||
|
# Generate messages
|
||||||
|
find_package(ament_cmake_auto REQUIRED)
|
||||||
|
ament_auto_find_build_dependencies()
|
||||||
|
|
||||||
|
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||||
|
"msg/ControlModeCommand.idl"
|
||||||
|
"msg/ControlModeReport.idl"
|
||||||
|
"msg/Engage.idl"
|
||||||
|
"msg/GearCommand.idl"
|
||||||
|
"msg/GearReport.idl"
|
||||||
|
"msg/HandBrakeCommand.idl"
|
||||||
|
"msg/HandBrakeReport.idl"
|
||||||
|
"msg/HazardLightsCommand.idl"
|
||||||
|
"msg/HazardLightsReport.idl"
|
||||||
|
"msg/HeadlightsCommand.idl"
|
||||||
|
"msg/HeadlightsReport.idl"
|
||||||
|
"msg/HornCommand.idl"
|
||||||
|
"msg/HornReport.idl"
|
||||||
|
"msg/RawControlCommand.idl"
|
||||||
|
"msg/StationaryLockingCommand.idl"
|
||||||
|
"msg/SteeringReport.idl"
|
||||||
|
"msg/TurnIndicatorsCommand.idl"
|
||||||
|
"msg/TurnIndicatorsReport.idl"
|
||||||
|
"msg/VehicleControlCommand.idl"
|
||||||
|
"msg/VehicleKinematicState.idl"
|
||||||
|
"msg/VehicleOdometry.idl"
|
||||||
|
"msg/VehicleStateCommand.idl"
|
||||||
|
"msg/VehicleStateReport.idl"
|
||||||
|
"msg/VelocityReport.idl"
|
||||||
|
"msg/WheelEncoder.idl"
|
||||||
|
"msg/WipersCommand.idl"
|
||||||
|
"msg/WipersReport.idl"
|
||||||
|
"srv/AutonomyModeChange.idl"
|
||||||
|
"srv/ControlModeCommand.srv"
|
||||||
|
DEPENDENCIES
|
||||||
|
"autoware_auto_planning_msgs"
|
||||||
|
"builtin_interfaces"
|
||||||
|
"std_msgs"
|
||||||
|
ADD_LINTER_TESTS
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_auto_package()
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module ControlModeCommand_Constants {
|
||||||
|
const uint8 NO_COMMAND = 0;
|
||||||
|
const uint8 AUTONOMOUS = 1;
|
||||||
|
const uint8 MANUAL = 2;
|
||||||
|
};
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" ControlModeCommand.msg")
|
||||||
|
struct ControlModeCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 mode;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module ControlModeReport_Constants {
|
||||||
|
const uint8 NO_COMMAND = 0;
|
||||||
|
const uint8 AUTONOMOUS = 1;
|
||||||
|
const uint8 AUTONOMOUS_STEER_ONLY = 2;
|
||||||
|
const uint8 AUTONOMOUS_VELOCITY_ONLY = 3;
|
||||||
|
const uint8 MANUAL = 4;
|
||||||
|
const uint8 DISENGAGED = 5;
|
||||||
|
const uint8 NOT_READY = 6;
|
||||||
|
};
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" ControlModeReport.msg")
|
||||||
|
|
||||||
|
struct ControlModeReport {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 mode;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Command for controlling the engagement state of the vehicle.")
|
||||||
|
struct Engage {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Determines if a vehicle should be engaged.")
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean engage;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module GearCommand_Constants {
|
||||||
|
const uint8 NONE = 0;
|
||||||
|
const uint8 NEUTRAL = 1;
|
||||||
|
const uint8 DRIVE = 2;
|
||||||
|
const uint8 DRIVE_2 = 3;
|
||||||
|
const uint8 DRIVE_3 = 4;
|
||||||
|
const uint8 DRIVE_4 = 5;
|
||||||
|
const uint8 DRIVE_5 = 6;
|
||||||
|
const uint8 DRIVE_6 = 7;
|
||||||
|
const uint8 DRIVE_7 = 8;
|
||||||
|
const uint8 DRIVE_8 = 9;
|
||||||
|
const uint8 DRIVE_9 = 10;
|
||||||
|
const uint8 DRIVE_10 = 11;
|
||||||
|
const uint8 DRIVE_11 = 12;
|
||||||
|
const uint8 DRIVE_12 = 13;
|
||||||
|
const uint8 DRIVE_13 = 14;
|
||||||
|
const uint8 DRIVE_14 = 15;
|
||||||
|
const uint8 DRIVE_15 = 16;
|
||||||
|
const uint8 DRIVE_16 = 17;
|
||||||
|
const uint8 DRIVE_17 = 18;
|
||||||
|
const uint8 DRIVE_18 = 19;
|
||||||
|
const uint8 REVERSE = 20;
|
||||||
|
const uint8 REVERSE_2 = 21;
|
||||||
|
const uint8 PARK = 22;
|
||||||
|
const uint8 LOW = 23;
|
||||||
|
const uint8 LOW_2 = 24;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct GearCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 command;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module GearReport_Constants {
|
||||||
|
const uint8 NONE = 0;
|
||||||
|
const uint8 NEUTRAL = 1;
|
||||||
|
const uint8 DRIVE = 2;
|
||||||
|
const uint8 DRIVE_2 = 3;
|
||||||
|
const uint8 DRIVE_3 = 4;
|
||||||
|
const uint8 DRIVE_4 = 5;
|
||||||
|
const uint8 DRIVE_5 = 6;
|
||||||
|
const uint8 DRIVE_6 = 7;
|
||||||
|
const uint8 DRIVE_7 = 8;
|
||||||
|
const uint8 DRIVE_8 = 9;
|
||||||
|
const uint8 DRIVE_9 = 10;
|
||||||
|
const uint8 DRIVE_10 = 11;
|
||||||
|
const uint8 DRIVE_11 = 12;
|
||||||
|
const uint8 DRIVE_12 = 13;
|
||||||
|
const uint8 DRIVE_13 = 14;
|
||||||
|
const uint8 DRIVE_14 = 15;
|
||||||
|
const uint8 DRIVE_15 = 16;
|
||||||
|
const uint8 DRIVE_16 = 17;
|
||||||
|
const uint8 DRIVE_17 = 18;
|
||||||
|
const uint8 DRIVE_18 = 19;
|
||||||
|
const uint8 REVERSE = 20;
|
||||||
|
const uint8 REVERSE_2 = 21;
|
||||||
|
const uint8 PARK = 22;
|
||||||
|
const uint8 LOW = 23;
|
||||||
|
const uint8 LOW_2 = 24;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct GearReport {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 report;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Command for controlling an electronic hand brake.")
|
||||||
|
|
||||||
|
struct HandBrakeCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean active;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
struct HandBrakeReport {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean report;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module HazardLightsCommand_Constants {
|
||||||
|
const uint8 NO_COMMAND = 0;
|
||||||
|
const uint8 DISABLE = 1;
|
||||||
|
const uint8 ENABLE = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Command for controlling a vehicle's hazard lights.")
|
||||||
|
|
||||||
|
struct HazardLightsCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 command;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module HazardLightsReport_Constants {
|
||||||
|
const uint8 DISABLE = 1;
|
||||||
|
const uint8 ENABLE = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HazardLightsReport {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 report;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module HeadlightsCommand_Constants {
|
||||||
|
const uint8 NO_COMMAND = 0;
|
||||||
|
const uint8 DISABLE = 1;
|
||||||
|
const uint8 ENABLE_LOW = 2;
|
||||||
|
const uint8 ENABLE_HIGH = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Command for controlling headlights.")
|
||||||
|
|
||||||
|
struct HeadlightsCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 command;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
module HeadlightsReport_Constants {
|
||||||
|
const uint8 DISABLE = 1;
|
||||||
|
const uint8 ENABLE_LOW = 2;
|
||||||
|
const uint8 ENABLE_HIGH = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HeadlightsReport {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=0)
|
||||||
|
uint8 report;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Command for controlling a horn.")
|
||||||
|
|
||||||
|
struct HornCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean active;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
struct HornReport {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean report;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
struct RawControlCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Units for all below fields are not defined. The exact semantics for each field is defined by each" "\n"
|
||||||
|
" vehicle interface implementation. It is the system integrator's responsibility to ensure these are" "\n"
|
||||||
|
" consistent when using this interface")
|
||||||
|
uint32 throttle;
|
||||||
|
|
||||||
|
uint32 brake;
|
||||||
|
|
||||||
|
int32 front_steer;
|
||||||
|
|
||||||
|
int32 rear_steer;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Command to avoid stationary locking \(Park gear, Parking Brake, etc.\)."
|
||||||
|
" This command assumes that the VehicleInterface or lower levels are controlling"
|
||||||
|
" the mechanism by which a vehicle is prevented from moving \(\"stationary locking\"\)"
|
||||||
|
" and will automatically attempt to apply stationary locking if a 0-velocity command"
|
||||||
|
" is applied for an arbitrary period of time. Setting the avoid_stationary_locking"
|
||||||
|
" field to TRUE tells the VehicleInterface or lower levels to avoid making this transition.")
|
||||||
|
|
||||||
|
struct StationaryLockingCommand {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@default (value=FALSE)
|
||||||
|
boolean avoid_stationary_locking;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#include "builtin_interfaces/msg/Time.idl"
|
||||||
|
|
||||||
|
module autoware_auto_vehicle_msgs {
|
||||||
|
module msg {
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" SteeringReport.msg")
|
||||||
|
struct SteeringReport {
|
||||||
|
builtin_interfaces::msg::Time stamp;
|
||||||
|
|
||||||
|
@verbatim (language="comment", text=
|
||||||
|
" Desired angle of the steering tire in radians left (positive)"
|
||||||
|
" or right (negative) of center (0.0)")
|
||||||
|
@default (value=0.0)
|
||||||
|
float steering_tire_angle;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user