ROS基础知识

原链接
运行测试平台:小强ROS机器人

ROS 简介

  1. 什么是ROS
    ROS 是 Robot Operation System 的简称。是专门为机器人控制开发的系统。和一般的操作系统相比增加了软件包管理,信息通信框架等。同时这个系统对硬件进行了抽象使得各个组件之间的耦合更低,程序开发也更加方便快捷。

  2. ROS 能在哪些平台上使用
    ROS官方版本基于Ubuntu进行开发。所以无论是arm架构还是x86架构都可以使用。即使你所使用的平台无法安装Ubuntu或者Debian,只要能够安装Linux系统就可以从源码编译安装ROS。OSX也可以安装ROS,不过是测试版本,安装使用过程中可能会遇到问题,并不推荐大家使用。Windows的ROS已经实现,但并未完全开发完成。

  3. ROS的版本区别
    ROS每年5月发布一个版本。其中单数年份发布为短期版本,支持时间为2年。双数年份发布的版本为长期支持版,支持时间为5年。最新的长期支持版是Kinetic Kame。现在一般网上的教程是基于Hydro或者 Indigo。这些教程和Jade和Kinetic版本是通用的。
    不同版本之间并不完全通用。比如你的机器人的系统是Indigo的,但是你的本地操作系统是Jade的那么系统间通信就有可能会出现消息格式不匹配的情况。所以不同系统间的版本尽量保持一致。

  4. ROS的学习路线
    ROS开发中主要使用的语言是C++和Python,你需要对这两种语言都比较熟悉。同时ROS基于Ubuntu操作系统,这也要求你对Ubuntu比较熟悉。
    首先你可以先读完这篇文章,对于ROS的架构和基本概念有一个初步的认识。然后看官方wiki中的Tutorial
    同时Learning ROS for Robotics Programming Second Edition也是一个不错的选择。
    你也可以按照这个ROS思维导图的方式来学习。
    在对ROS比较熟悉之后,如果你想了解更多关于ROS设计方面的东西可以看看REP
    如果想要了解关于ROS2方面的信息可以看这里
    在实际使用中会遇到很多问题,欢迎在我们的ROS交流群中提问(538456117)
    当然想要更深入的了解ROS,阅读源代码也是一个不错的选择
    ROS源代码
    ROS2源代码

  5. ROS的未来
    ROS虽然大大方便了机器人开发,在业内有很广泛的应用,但是实际使用中还是有挺多问题。比如稳定性,网络带宽和多机器的情况下的自动连接等等。这些功能都会在ROS2中实现。随着ROS的不断发展,相信其在机器人行业会有越来越好的发展前景。

ROS的架构

ROS与其说是操作系统其实更像一个通信框架。ROS的基本单元是节点(Node)。节点之间可以通过订阅和发布Topic进行通信。节点的基本信息会存储在Master里面。下面以一个例子具体说明。假如我们现在有一个激光雷达,然后我们想要通过图形界面显示雷达的数据。那么整个结构就如下图所示

0_1506330911799_QQ截图20170925154958.png

激光雷达有一个节点叫做hokuyo,图形界面有一个节点叫做viewer。激光雷达节点从传感器读出数据之后,首先告诉Master自己在发布一个叫做scan的topic。然后在本地监听2345端口,等待其他节点连接。图形界面节点viewer启动之后,首先告诉Master自己在订阅一个叫做scan的topic。这时候Master就会告诉viewer节点谁在发布scan。Viewer获得到hokuyo的地址和端口信息后和hokuyo节点建立TCP连接。这样激光雷达的数据就从hokuyo节点发送至viewer节点了。
通过这种架构可以实现节点的分布式处理功能。即不同的节点不要求一定在同一个机器人上。比如上例中的激光雷达节点和viewer节点就可以在不同的机器人上。也可以进一步实现多台机器人的调度。

ROS的基本概念

从上例我们可以看出ROS中有以下几个比较重要的基本概念

  1. Master
    Master就是存放各种节点和topic信息的地方。节点之间通过Master了解到对方的信息。同时在Master的帮助下节点之间建立网络连接。
  2. Node
    基本的ROS计算单元。
  3. Topic
    节点之间的通信通道
  4. Parameter Server
    参数服务器。在使用过程中可能不同的节点间要共享一些参数。这些参数就可以放在参数服务器里面。其作用就类似于不同节点公用的全局变量。在上面的例子中没有用到参数服务器。

ROS的安装

下面以Kinetic版本为例说明ROS的安装方法。

  1. 安装Ubuntu 16.04
  2. 添加ROS源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  1. 添加源的key
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
  1. 安装
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
  1. 初始化rosdep
sudo rosdep init
rosdep update

ROS的环境变量

ROS运行时依赖一些环境变量,所以我们要把其添加到自己的终端配置文件中。

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

这样就会在bash中添加source /opt/ros/kinetic/setup.bash这样一行语句。每次打开一个终端都会执行上面的脚本。这个脚本会设置ROS相关的一些环境变量。

下一步

ROS tutorial

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值