ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
ROS基础知识
-
ROS 简介
-
什么是ROS
ROS 是 Robot Operation System 的简称。是专门为机器人控制开发的系统。和一般的操作系统相比增加了软件包管理,信息通信框架等。同时这个系统对硬件进行了抽象使得各个组件之间的耦合更低,程序开发也更加方便快捷。 -
ROS 能在哪些平台上使用
ROS官方版本基于Ubuntu进行开发。所以无论是arm架构还是x86架构都可以使用。即使你所使用的平台无法安装Ubuntu或者Debian,只要能够安装Linux系统就可以从源码编译安装ROS。OSX也可以安装ROS,不过是测试版本,安装使用过程中可能会遇到问题,并不推荐大家使用。Windows的ROS已经实现,但并未完全开发完成。 -
ROS的版本区别
ROS每年5月发布一个版本。其中单数年份发布为短期版本,支持时间为2年。双数年份发布的版本为长期支持版,支持时间为5年。最新的长期支持版是Kinetic Kame。现在一般网上的教程是基于Hydro或者 Indigo。这些教程和Jade和Kinetic版本是通用的。
不同版本之间并不完全通用。比如你的机器人的系统是Indigo的,但是你的本地操作系统是Jade的那么系统间通信就有可能会出现消息格式不匹配的情况。所以不同系统间的版本尽量保持一致。 -
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源代码 -
ROS的未来
ROS虽然大大方便了机器人开发,在业内有很广泛的应用,但是实际使用中还是有挺多问题。比如稳定性,网络带宽和多机器的情况下的自动连接等等。这些功能都会在ROS2中实现。随着ROS的不断发展,相信其在机器人行业会有越来越好的发展前景。
ROS的架构
ROS与其说是操作系统其实更像一个通信框架。ROS的基本单元是节点(Node)。节点之间可以通过订阅和发布Topic进行通信。节点的基本信息会存储在Master里面。下面以一个例子具体说明。假如我们现在有一个激光雷达,然后我们想要通过图形界面显示雷达的数据。那么整个结构就如下图所示
激光雷达有一个节点叫做hokuyo,图形界面有一个节点叫做viewer。激光雷达节点从传感器读出数据之后,首先告诉Master自己在发布一个叫做scan的topic。然后在本地监听2345端口,等待其他节点连接。图形界面节点viewer启动之后,首先告诉Master自己在订阅一个叫做scan的topic。这时候Master就会告诉viewer节点谁在发布scan。Viewer获得到hokuyo的地址和端口信息后和hokuyo节点建立TCP连接。这样激光雷达的数据就从hokuyo节点发送至viewer节点了。
通过这种架构可以实现节点的分布式处理功能。即不同的节点不要求一定在同一个机器人上。比如上例中的激光雷达节点和viewer节点就可以在不同的机器人上。也可以进一步实现多台机器人的调度。ROS的基本概念
从上例我们可以看出ROS中有以下几个比较重要的基本概念
- Master
Master就是存放各种节点和topic信息的地方。节点之间通过Master了解到对方的信息。同时在Master的帮助下节点之间建立网络连接。 - Node
基本的ROS计算单元。 - Topic
节点之间的通信通道 - Parameter Server
参数服务器。在使用过程中可能不同的节点间要共享一些参数。这些参数就可以放在参数服务器里面。其作用就类似于不同节点公用的全局变量。在上面的例子中没有用到参数服务器。
ROS的安装
下面以Kinetic版本为例说明ROS的安装方法。
- 安装Ubuntu 16.04
- 添加ROS源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- 添加源的key
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
- 安装
sudo apt-get update sudo apt-get install ros-kinetic-desktop-full
- 初始化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相关的一些环境变量。下一步
-