本文主要是介绍ROS2: 定义新的数据类型并使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考:ROS2入门教程——19. 自定义话题及服务消息类型 - 古月居
1.创建功能包:
ros2 pkg create --build-type ament_cmake tutorial_interfaces
在功能包内创建msg,srv文件夹
2.自定义接口
(1)创建msg
在msg文件夹下创建Num.msg, 并输入内容为:
int64 num
(2)创建srv
在srv文件夹下创建AddThreeInts.srv, 并输入如下内容:
int64 a
int64 b
int64 c
---
int64 sum
3. 修改CMakeLists.txt
增加如下内容:
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/Num.msg"
"srv/AddThreeInts.srv"
)
4. 修改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>
5.编译
回到工作目录:
colcon build --packages-select tutorial_interfaces
可能遇到的问题
(1)No module named 'em'
解决方法:
pip uninstall em
pip install empy
参考:ROS:No module named 'em' 解决方法 - 码上快乐
(2) No module named 'lark'
解决方法:
pip3 install lark --prefer-binary
参考:https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/4491
6.确认msg和srv是否创建成功
(1) 初始化环境
source install/setup.bash
(2)查看自定义的接口
ros2 interface show tutorial_interfaces/msg/Num
ros2 interface show tutorial_interfaces/srv/AddThreeInts
这篇关于ROS2: 定义新的数据类型并使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!