ROS2与STM32入门教程-在Micro-ROS中自定义ROS消息
说明:
- Micro-ROS 下开发,难免要建立自己的消息包,用于话题交互
- 要在Micro-ROS中自定义ROS消息,需要执行以下步骤:
步骤:
- 安装Micro-ROS开发环境:首先,您需要安装Micro-ROS的开发环境。可以看上一篇
- 假设Micro-ROS环境的路径为:
~/ros2_micro_ros_ws
- 创建ROS消息:
- 要自定义ROS消息,您需要创建一个包含您自己的消息定义的ROS 2包。
- 通常,您会在msg目录下创建一个.msg文件。例如,如果您要创建一个名为CustomMessage的自定义消息,可以创建一个名为CustomMessage.msg的文件,并在其中定义消息的字段,例如:
cd ~/ros2_micro_ros_ws/firmware/mcu_ws
ros2 pkg create --build-type ament_cmake my_custom_message
cd my_custom_message
mkdir msg
touch msg/MyCustomMessage.msg
- 编辑CMakeLists.txt, 添加如下行
...
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/MyCustomMessage.msg"
)
...
- 编辑package.xml,添加如下行
...
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>
...
- msg/MyCustomMessage.msg的内容如下:
bool bool_test
byte byte_test
char char_test
float32 float32_test
float64 double_test
int8 int8_test
uint8 uint8_test
int16 int16_test
uint16 uint16_test
int32 int32_test
uint32 uint32_test
int64 int64_test
uint64 uint64_test
- 编译代码:这个编译固件的方法,可以编译所有的包
ros2 run micro_ros_setup build_firmware.sh
- 使用自定义消息: 再你的micro-ros的app里面可以添加如下代码来使用
#include <my_custom_message/msg/my_custom_message.h>
...
my_custom_message__msg__MyCustomMessage msg;
msg.byte_test = 3;
msg.uint32_test = 42;
...
rclc_publisher_init_default(&publisher, &node, ROSIDL_GET_MSG_TYPE_SUPPORT(my_custom_message, msg, MyCustomMessage), "my_custom_publisher");
rcl_publish(&publisher, &msg, NULL);
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号