Add headerinstructions
This commit is contained in:
parent
36dd783f61
commit
fda583ad18
69
Header_Error.md
Normal file
69
Header_Error.md
Normal file
@ -0,0 +1,69 @@
|
||||
# Header Message Errors
|
||||
When wanting to introduce [headers](http://docs.ros.org/en/melodic/api/std_msgs/html/msg/Header.html) do the following steps.
|
||||
|
||||
You should have a CMake package created already (as only Cmake packages can implement custom msgs as of now).
|
||||
|
||||
## Custom Message File
|
||||
* Create a *.mgs file inside the `msg/` directory and start the file name with a capital letter
|
||||
* Add the line `std_msgs/Header header` in order to use the header message, this msg type is from standard messages ([std_msgs](http://docs.ros.org/en/melodic/api/std_msgs/html/index-msg.html))
|
||||
* Only introduce absolutely necessary comments in *.msg file (eg. #Header) in order to minimize possible errors.
|
||||
|
||||
## Configure package.xml
|
||||
* Add _buildtool_depend_:
|
||||
```xml
|
||||
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||
<buildtool_depend>rosidl_default_generators</buildtool_depend>
|
||||
```
|
||||
* Add _build_depend_:
|
||||
```xml
|
||||
<build_depend>builtin_interfaces</build_depend>
|
||||
<build_depend>std_msgs</build_depend>
|
||||
```
|
||||
* Add _exec_depend_:
|
||||
```xml
|
||||
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||
<exec_depend>builtin_interfaces</exec_depend>
|
||||
<exec_depend>std_msgs</exec_depend>
|
||||
```
|
||||
|
||||
## Configure CMakeLists.txt
|
||||
* Add required packages:
|
||||
```cmake
|
||||
find_package(ament_cmake REQUIRED)
|
||||
find_package(rosidl_default_generators REQUIRED)
|
||||
find_package(builtin_interfaces REQUIRED)
|
||||
find_package(std_msgs REQUIRED)
|
||||
```
|
||||
* Create msg files set (exchange with your own `msg/*.msg` files):
|
||||
```cmake
|
||||
set(msg_files
|
||||
"msg/IMUInfo.msg"
|
||||
"msg/Extrinsics.msg"
|
||||
)
|
||||
```
|
||||
* Load set into _rosidl_generate_interfaces_ and add the dependency for std_msgs:
|
||||
```cmake
|
||||
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||
${msg_files}
|
||||
DEPENDENCIES builtin_interfaces std_msgs
|
||||
)
|
||||
```
|
||||
|
||||
## Build Colcon Workspace
|
||||
* Move to root of workspace: `cd ~/<path_to_ws>`
|
||||
* Run build: `colcon build`
|
||||
|
||||
## Test and Verify
|
||||
* Run publisher: `ros2 topic pub /chatter <pkg_name>/msg/<custom_msg_file>`
|
||||
* Run subscriber: `ros2 topic echo /chatter`
|
||||
|
||||
You should see your custom msg being published and received, including the header.
|
||||
|
||||
## Source
|
||||
[Link to the problem's solution at ros.org forum](https://answers.ros.org/question/326008/ros2-run-symbol-not-found-on-custom-msg/)
|
||||
Example Files:
|
||||
* ROS2 Realsense:
|
||||
* [Custom msg file](https://github.com/IntelRealSense/realsense-ros/blob/eloquent/realsense2_camera_msgs/msg/IMUInfo.msg)
|
||||
* [CMakeLists.txt](https://github.com/IntelRealSense/realsense-ros/blob/eloquent/realsense2_camera_msgs/CMakeLists.txt)
|
||||
* [package.xml](https://github.com/IntelRealSense/realsense-ros/blob/eloquent/realsense2_camera_msgs/package.xml)
|
||||
* [Write timestamp](https://answers.ros.org/question/354203/timestamp-message-ros2-python/)
|
Loading…
Reference in New Issue
Block a user