RSO入门3总结:ROS-Topic话题消息的定义和使用
前言
日常强推古月大大
本次实现:话题的自定义并且能发布和订阅(主要订阅和发布的Person.msg消息为姓名,年龄和性别)
环境:Ubuntu20.04、ros-noetic
准备
下面的代码一个也不能错,注意大小写,空格,TAP,单复数,,,
定义person.msg文件
进入learning_topic功能包,创建msg元功能包(文件夹)
进入msg文件夹,创建Person.msg文件
touch Person.msg
打开Person.msg文件,写入下列代码:
string name
uint8 sex
uint8 age
uint8 unknown = 0
uint8 male = 1
uint8 female = 2
ros会根据这个文件编译出C++或者.py文件
设置编译规则
在package.xml中添加功能包依赖
打开package.xml(我的路径是:/home/linder/桌面/catkin_wksp/src/learning_topic
)
添加以下代码
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
如图
在CMakeLists.txt文件中添加编译选项
打开CMakeLists.txt文件将以下代码写入如图位置:
message_generation
如图:
再添加如下代码:
add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)
如图
然后在catkin_pack代码 #CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim
后面添加message_runtime
形成
#CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim message_runtime
如图
代码前面用#注释的
![在这里插入图片描述](https://img-blog.csdnimg.cn/bc91a7998fc945dc9711ea00d7fb1f45.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZGVyVmVu,size_20,color_FFFFFF,t_70,g_se,x_16
编译测试
在工作空间下使用catkin_make进行编译
cd catkin_wksp/
catkin_make
编译结果:
如果有错请检查相关步骤,或者书写是否正确
编译成功后会在/home/linder/桌面/catkin_wksp/devel/include/learning_topic
生成Person.h文件
里面主要是根据Person.msg文件中的相关代码生成的可以用ros调用的类,接口之类的
将person_publisher.cpp和person_subscriber.cpp文件复制到/home/linder/桌面/catkin_wksp/src/learning_topic/src
路径下,相关的代码连接在上一节古月大大那儿,微信关注回复就行
将如下代码添加到CMakeLists.txt中
add_executable(person_publisher src/person_publisher.cpp)
target_link_libraries(person_publisher ${catkin_LIBRARIES})
add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)
add_executable(person_subscriber src/person_subscriber.cpp)
target_link_libraries(person_subscriber ${catkin_LIBRARIES})
add_dependencies(person_subscriber ${PROJECT_NAME}_generate_messages_cpp)
标题开始进行发布者和订阅者的使用
在catkin_wksp目录下进行编译
cd catkin_wksp/
catkin_make
打开新终端运行
roscore
打开新终端运行发布者
cd catkin_wksp
source devel/setup.bash
rosrun learning_topic person_publisher
打开新终端运行订阅者
cd catkin_wksp
source devel/setup.bash
rosrun learning_topic person_subscriber
订阅者可以先回车进行订阅,这时候发布者没有进行发布,所以订阅者没有数据,然后再讲发布者进行回车,然后两个界面都有消息,消息就是person_publisher.cpp文件中写的信息(CTRL+C停止)