< >
Home » ROS2与STM32入门教程 » ROS2与STM32入门教程-在Micro-ROS中自定义ROS消息

ROS2与STM32入门教程-在Micro-ROS中自定义ROS消息

说明:

  • Micro-ROS 下开发,难免要建立自己的消息包,用于话题交互
  • 要在Micro-ROS中自定义ROS消息,需要执行以下步骤:

步骤:

    1. 安装Micro-ROS开发环境:首先,您需要安装Micro-ROS的开发环境。可以看上一篇
  • 假设Micro-ROS环境的路径为:
~/ros2_micro_ros_ws
    1. 创建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
    1. 编辑CMakeLists.txt, 添加如下行
...
find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/MyCustomMessage.msg"
 )
...
    1. 编辑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>
...
    1. 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
    1. 编译代码:这个编译固件的方法,可以编译所有的包
ros2 run micro_ros_setup build_firmware.sh
    1. 使用自定义消息: 再你的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);

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与stm32入门教程