目录
前言
由于竞赛的需要,非常有幸接触到ROS,这里对于ROS不多介绍,国内关于ROS教程还算比较多的,但是大多数都是转载那么几篇文章,其中遇到的坑会非常多,而且你需要有一定的英文阅读能力,在接触ROS越久你就会越有这样的感受。在接触ROS的同时,还学习了很多老外的一些SLAM项目,在测试期间,我就测试了Gmapping,hector-slam,cartographer,orb-slam2等等。经过最后的实验研究,我还是觉得ROS是一个相当不稳定的系统,它需要非常精确的设备才能提供一个比较良好的运行环境,但是随着时间的推移,误差仍然会不断地加大,所以我认为在普通的实验还好,在真正的工业产品上ROS1应该是达不到这个要求,ROS2我没有具体研究过。
1.ros-indigo安装
环境是Ubuntu14.04
安装教程官网是最详细的:http://wiki.ros.org/indigo/Installation/Ubuntu
- 安装爬坑指南(一):1.2 Setup your sources.list 中,不要执行它下面给出的命令,点击1.2中左下角黄色背景的Mirrors镜像,选择1.1.2 USTC,执行Command下的命令,之后跳过1.2节。这样可以极大加速ROS的下载与更新速度。
- 安装爬坑指南(二):1.5 在执行rosdep update的时候极有可能出错,因为ROS的网站在国内的访问速度实在是太慢了,可以选择的解决办法是:1.多尝试几次这条命令,偶尔还是可以成功的。2.尝试着用手机热点的网络,切换不同的运营商,有时候还真的好使。3.在终端中开启代理。
ROS的安装还算简单的,如果英文能力不怎么好的,可以看下其他博客的一些介绍。
2.建立ROS工作空间
打开终端
#在用户的根目录下创建catkin_ws的目录,并在catkin_ws下创建src目录,src主要用来存放用户的各种ROS程序包
mkdir -p ~/catkin_ws/src
#切换到src目录
cd ~/catkin_ws/src
#初始化工作空间
catkin_init_workspace
#切换到catkin_ws目录
cd ~/catkin_ws/
#编译ROS工作空间,每次修改ROS程序包都要重新执行这条语句。
catkin_make
#将ROS工作空间加入到环境变量中
echo "source ~/catkin_ws/devel/setup.sh" >> ~/.bashrc
- 工作空间爬坑指南(一):
[rospack] Error: package 'tf' not found
[rospack] Error: package 'navigation' not found
但是tf和navigation我是确认已经安装了的,却一直报错,让我头疼了好一段时间。
主要的原因是你工作空间可能带有与ROS自带包冲突的包,我伙伴就是另外下了一个tf和navigation的包到src下,重新编译之后这些包就会覆盖ROS自带的包。解决办法就是找到这些冲突的包,把它删掉,然后把catkin_ws下的devel,build下所有已经编译好的包(包括子目录的包)删掉,重新catkin_make就可。
这样ROS环境基本搭建完毕了。
3.ROS中基本概念
-
tf变换:ROS中允许为每一个传感器或者设备自身增加一个坐标系,由于现实世界中,传感器往往不会是同一个位置的,因此每个坐标系之间又会存在一定的变换关系(比如这个坐标轴相对于另外一个坐标轴的位置),如何去解决在运动的过程中坐标系的变换,就是tf做的事情。
在ROS中,我们一般定义以下几个坐标系:
base_link:一般为物体的中心
base_footprint:一般为小车的轮子坐标系
odom:里程计坐标系
当一个小型产品完成后,它的tf树大概会是这样的:
image
- ROS节点:一个节点就是一个可执行文件,用来与其他节点进行通信。
- ROS话题:节点可以发布消息到话题,也可以订阅话题以接收消息。
4.基本的调试工具和命令
善用ROS下的rqt工具有助于事倍功半
sudo apt-get install ros-indigo-rqt
- rosrun rqt_graph rqt_graph:可以显示节点之间的关系图,可让让你更加清楚节点之间的联系。
- rosrun rqt_reconfigure rqt_reconfigure:可以在不重启节点的情况下动态改变节点的参数,非常方便调试。
- rosrun rqt_plot rqt_plot:数据可视化,可以观察某一数据的变化情况,我经常用来观察小车的速度。
- rosrun rqt_console rqt_console:用来查看节点的Log信息。
- rosrun tf view_frames:查看tf变换关系,运行这条命令会在用户的根目录下生成一个frames.pdf文件。
5.硬件设备
网上关于仿真的教程真的是看到吐了,所以我打算从真机上出发,从硬件的选择到最后ROS的搭建写一个笔记。
- vnh5019电机驱动:主要是兼容ros_arduino_bridge,之后的文章我会介绍这个包。
- 带编码器霍尔马达:老师给我们选购的产品,霍尔马达注定了这个就只是实验产品。
- arduino2560:连接电机,超声波传感器等硬件设备。
- 摄像头以及传感器:从kinect V1到realsense R200,激光雷达的实验我以后会做个总结。
我们最后搭建的成果如下:
image
先介绍到这里,如果有不对的请见谅!
网友评论