1.引言
休息了段时间后看了2本书《c++标准模板库编程实战》和《Effective Modern C++》,目的是巩固c++11/14的基础。
但是对于我来说,学习的最佳方法还是找项目练手。所以这周六制作了ubunut16.06的UFEI U盘启动,重装后直接上ROS的slam项目。开始新一轮的折腾。
2.ROS入门
当然先要学下ROS基本知识,目前理解他的通信方式很灵活,就是c++的观察者模式。通过订阅和发布消息来实现对象通信。ROS主要包括节点,话题,消息,服务,通过看入门教程基本理解也使用了这些内容。我用的是kinetic
ROS官方教程(中文版):http://wiki.ros.org/cn/ROS/Tutorials
3.RVIZ可视化
我的目的是学习slam,ros中有很多包,其中包括opencv及slam相关。但是对象间互相发送消息,那么点云图在哪里显示呢?这时候RIVZ就非学不可了。是三维可视化工具,强调把已有的数据可视化显示。当然之后还要学习很多其它有用的包。
RVIZ官方教程:http://wiki.ros.org/rviz/Tutorials
我的实验效果
4.备忘点
4.1无法识别ros本地包,则先要把本地编译环境添加到shell脚本中
source devel/setup.bash
用source的话shell不会创建副本,等于顺序执行。
4.2 查看消息及消息参数
运行命令rosmsg packagepcl_msgs可以列出msg文件夹下定义的消息
运行命令rosmsg showpcl_msgs/Vertices查看具体消息参数
4.3.创建新的package及编译的基本步骤
mkdir
-p ~/catkin_ws/src //-p说明若文件夹已经存在则不用再创建
cd
catkin_ws/src
catkin_create_pkg
pcl_tutorials pcl_conversions pcl_ros pcl_msgs sensor_msgs
rospackprofile //加入到package中
roscd
pcl_tutorials
mkdir
src //然后添加cpp及在src同级目录修改CMake文件
cd
~/catkin_ws/
catkin_make
4.4.pcl&
rviz ref code
https://blog.csdn.net/hanshuning/article/details/52314108
http://www.voidcn.com/article/p-mecwguji-bt.html
参考2个blog自己做了一个pcl随机点云发送到rviz显示,直接用rosrun不行,后来通过自建脚本运行成功。如下
5.小结
了解了ROS基本的运行机制。网上查了下bag数据集回放,可以模拟各种传感器输入,然后通过ROS包中集成的算法库(也可以自己修改)应用后,再通过RVIZ进行地图构建的可视化。
6.疑问
之前做实验的数据集直接已文件的形式读取,输入到code中。ROS应该也可以的把,为什么用bag数据集回放,而不是推荐直接使用文件形式的数据集读入呢?
答:我猜测,ROS可能消息接口都定义好了,然后模块化程度也高,所以都不用我们自己写code了,直接集成包通信即可。通过bag回放也方便进行ROS消息层面的调试。而不是直接源码调试。结论就是bag回放方法适合入门用户。^V^
网友评论