编写发布器和订阅器
已经在src文件夹下写好了发布者和订阅器 talker.cpp和listener.cpp
在 CMakeLists.txt 文件末尾加入几条语句:
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
这会生成两个可执行文件, talker 和 listener, 默认存在~/catkin_ws/devel/lib/<package name> 中
为可执行文件添加对生成的消息文件的依赖:
add_dependencies(talker beginner_tutorials_generate_messages_cpp)
这样就可以确保自定义消息的头文件在被使用之前已经被生成
可以直接调用可执行文件,也可以使用 rosrun 来调用他们
catkin_make
如果你是添加了新的 package,你需要通过 --force-cmake 选项告诉 catkin 进行强制编译
测试发布器和订阅器
在调用catkin_make后,在运行你自己的程序前,需要source catkin工作空间下的setup.sh文件:
cd ~/catkin_ws
source ./devel/setup.bash
编写服务器和客户端
服务器:执行服务的节点
在包中创建src/youname.cpp文件
在包中创建src/add_two_ints_client.cpp文件
回放数据
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a
运行rosbag record命令,并附加-a选项,该选项表示将当前发布的所有话题数据都录制保存到一个bag文件中。
使用rosbag info检查看它的内容,使用rosbag play命令回放出来
rosbag record -O subset /turtle1/command_velocity /turtle1/pose
-O参数告诉rosbag record将数据记录保存到名为subset.bag的文件中,同时后面的话题参数告诉rosbag record只能录制这两个指定的话题
网友评论