Ros机器人·学ROS

ROS学习笔记与爬坑

2019-02-05  本文已影响1人  DarknessYami

目录

前言

1.ros-indigo安装

2.建立ROS工作空间

3.ROS中基本概念

4.基本的调试工具和命令

5.硬件设备


前言

由于竞赛的需要,非常有幸接触到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

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

这样ROS环境基本搭建完毕了。

3.ROS中基本概念

  1. tf变换:ROS中允许为每一个传感器或者设备自身增加一个坐标系,由于现实世界中,传感器往往不会是同一个位置的,因此每个坐标系之间又会存在一定的变换关系(比如这个坐标轴相对于另外一个坐标轴的位置),如何去解决在运动的过程中坐标系的变换,就是tf做的事情。
    在ROS中,我们一般定义以下几个坐标系:
    base_link:一般为物体的中心
    base_footprint:一般为小车的轮子坐标系
    odom:里程计坐标系
    当一个小型产品完成后,它的tf树大概会是这样的:
    image
  1. ROS节点:一个节点就是一个可执行文件,用来与其他节点进行通信。
  2. ROS话题:节点可以发布消息到话题,也可以订阅话题以接收消息。

4.基本的调试工具和命令

善用ROS下的rqt工具有助于事倍功半

sudo apt-get install ros-indigo-rqt
  1. rosrun rqt_graph rqt_graph:可以显示节点之间的关系图,可让让你更加清楚节点之间的联系。
  2. rosrun rqt_reconfigure rqt_reconfigure:可以在不重启节点的情况下动态改变节点的参数,非常方便调试。
  3. rosrun rqt_plot rqt_plot:数据可视化,可以观察某一数据的变化情况,我经常用来观察小车的速度。
  4. rosrun rqt_console rqt_console:用来查看节点的Log信息。
  5. rosrun tf view_frames:查看tf变换关系,运行这条命令会在用户的根目录下生成一个frames.pdf文件。

5.硬件设备

网上关于仿真的教程真的是看到吐了,所以我打算从真机上出发,从硬件的选择到最后ROS的搭建写一个笔记。

  1. vnh5019电机驱动:主要是兼容ros_arduino_bridge,之后的文章我会介绍这个包。
  2. 带编码器霍尔马达:老师给我们选购的产品,霍尔马达注定了这个就只是实验产品。
  3. arduino2560:连接电机,超声波传感器等硬件设备。
  4. 摄像头以及传感器:从kinect V1到realsense R200,激光雷达的实验我以后会做个总结。

我们最后搭建的成果如下:

image

先介绍到这里,如果有不对的请见谅!

上一篇下一篇

猜你喜欢

热点阅读