一、 dynamic_reconfigure
http://wiki.ros.org/dynamic_reconfigure/Tutorials
1、cfg编写
不能出现汉字
2、建立好cfg文件之后,cd到程序包文件夹下, chmod a+x cfg/cfg文件名.cfg
3、修改 CMakeLists.txt
generate_dynamic_reconfigure_options(
cfg/cfg文件名.cfg )
add_dependencies(节点名 ${PROJECT_NAME}_gencfg) 此语句放在 target_link之后
4、在cpp 中添加两个头文件
dynamic_reconfigure/server.h
程序包名/cfg文件名Config.h //此文件编译时会自动生成
二、ros::spin() 与 ros::spinOnce()
https://www.cnblogs.com/liu-fa/p/5925381.html
ros::spin() 与 ros::spinOnce() 都是 ROS消息回调处理函数
三、launch文件
<node pkg="程序包名" type="可执行文件名" name="节点名" output="screen" />
四、调用其他程序包的头文件
https://blog.youkuaiyun.com/zhixiongning/article/details/81910857
注意:(B_package引用A_package的头文件)
如果头文件是A_package自定义的,B_package引用时,<头文件名.h>
如果头文件是A_package自动生成的,B_package引用时,<A_package/头文件名.h>
五、rosbag
1、录制数据
先创建一个专门的文件夹,存放数据包 mkdir ~/bagfiles
rosbag record -a //-a选项表示将当前发布的所有 topic 数据都录制保存到一个 rosbag
rosbag record /topic_name1 /topic_name2 //只记录某些感兴趣的 topic
上述命令录制的数据包名字为日期加时间。如果要指定生成数据包的名字,则用-O参数
rosbag record -O filename.bag /topic_name1
2、rosbag info
指令可以显示数据包中的信息:
rosbag info filename.bag
3、回放数据
在终端中bag
文件所在目录下运行以下命令:
rosbag play <bagfile> //以原始频率播放 (原始频率即为记录数据时,发送到topic上的频率)
rosbag play -r 2 <bagfile> //以原始频率的两倍播放rosbag
play -l <bagfile> //循环播放 -l == --loop
rosbag play <bagfile> --topic /topic1 //只播放topic1
rosbag play --clock <bagfile> //回放 rosbag 并发布 simulated time
六 时间
1、系统以 msg 对应的 simulated time 运行,而不是实际的 wall-clock time
rosparam set /use_sim_time true