ROS2智能机器人开发实践-阅读分享5-ros2消息接口
[复制链接]
ROS2智能机器人开发实践-阅读分享5-ros2消息接口
在前文学习中,我们学习topic和service都接触到了消息接口,他们分别是话题消息接口和服务消息接口,这些接口都是人为定义的,这些接口很重要,如图是三大主要服务的流程图,他们都有各自的消息接口。
这里的3个服务的话题类型如上图:所有的接口内部的数据的基础类型有以下几种:
zy@ubuntu:~/dev_ws$ ros2 interface package std_msgs
std_msgs/msg/UInt8
std_msgs/msg/Header
std_msgs/msg/MultiArrayDimension
std_msgs/msg/UInt64
std_msgs/msg/Float32MultiArray
std_msgs/msg/Int16MultiArray
std_msgs/msg/ByteMultiArray
std_msgs/msg/Char
std_msgs/msg/MultiArrayLayout
std_msgs/msg/UInt16MultiArray
std_msgs/msg/Int32
std_msgs/msg/Int32MultiArray
std_msgs/msg/UInt8MultiArray
std_msgs/msg/Int16
std_msgs/msg/ColorRGBA
std_msgs/msg/UInt32MultiArray
std_msgs/msg/Int8MultiArray
std_msgs/msg/Int64
std_msgs/msg/Int64MultiArray
std_msgs/msg/Bool
std_msgs/msg/Float64MultiArray
std_msgs/msg/UInt32
std_msgs/msg/UInt64MultiArray
std_msgs/msg/Byte
std_msgs/msg/UInt16
std_msgs/msg/Float64
std_msgs/msg/Int8
std_msgs/msg/Float32
std_msgs/msg/String
std_msgs/msg/Empty
通信接口命令行
ros2 interface list
ros2 interface show <interface_name>
ros2 interface package <package_name>
自定义接口
需要先创建一个c++的功能包
zy@ubuntu:~/dev_ws/src/ros2_21_tutorials$ ros2 pkg create --build-type ament_cmake learning_interface_zy
我们如图创建一个msg文件夹后创建一个.msg后缀的文件。
我们需要在cmakelist和package.xml里面添加东西:
cmakelist.txt
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/ObjectPosition.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>
colcon build --packages-select learning_interface_zy
source install/setup.bash
ros2 interface package learning_interface_zy
让背后你就看见了这个接口被定义好了,我们后续只需要调用就可以了。
同理,我们也可以定义srv
最后的action的接口我们后续有机会再讲吧。
以上就是关于本书的第五次分享,分享内容多为书本内容,本人在此由于篇幅有限只是介绍核心内容,本文我介绍了我们该如何创键我们自己的消息接口,在下次分享我将尽力分享动作action!!!
|