自定义话题信息
在功能包下创建msg文件夹
文件夹里定义msg文件:
$ touch Person.msg
string name
uint8 sex
uint8 age
uint8 unkonwn=0
uint8 male=1
uint8 female=2
在package.xml中添加功能包依赖
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
在CMakeLists.txt添加编译选项
find_package(... message_generation)
add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(... message_runtime)
编译生成语言相关文件
catkin_make
编译完成之后便扩展 C++的类的定义,属性
问题:msg文件夹里的person.msg和CMakeLists里面写的Person.msg不一样
解决:使两个名字一样即可
添加src的代码
在CMakeLists做连接
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)
编译运行
cd ~/<name>
catkin_make
source devel/setup.bash
roscore
rosrun learning_topic person_subscriber
rosrun learning_topic person_publisher
ROS省略source devel/setup.bash 环境变量
每一次运行都要设置环境变量,否则就不能正常运行,为了方便我们可以设置打开终端默认运行source。
主目录下Crtl+H显示隐藏文件,打开.bashrc
输入 source /home/<用户名>/<工作目录>/devel/setup.bash
效果:
此时若是关闭roscore,也不影响发布者和订阅者的连接。roscore只是用于帮助节点的连接。
但若是想要访问参数就会出现问题