换了新工作后,近几个月来太忙了,每天连睡觉5小时的时间都没保证,所以根本没时间写博,2018年的最后一天,终于有点时间来写篇博文,打算写写ROS相关的东西,算是跨年纪念 :) 。 本来原计划沿着我原来的大致学习路线: AI框架工具环境的安装和使用-->AI所需的高等数学知识-->常用网络模型-->常用算法 这样的路线写下去的,但是因为新工作需要的原因,不得不暂停,先转换到ROS这个也是我有强烈兴趣并且现在天天用它干活的知识领域来,后面根据工作使用到的AI知识范畴再做调整,比如图像识别接下来也是一个重点,到时有时间再写。
如果你想比较快的把你组装的机器人用起来,又不想有太多的编码,那么ROS应该是个首选,当然,前提是对你的机器人的实时性操作要求不高。ROS是什么,Robot Operating System,所谓机器人操作系统,以我多年跟中间件(Middleware)打交道的工作经验知道,其实ROS不是操作系统,它工作在Ububtu Linux或Debian Linux之上,它就是个中间件,不过有人也爱把中间件叫操作系统,像我工作的前一家公司做的嵌入式系统的中间件把文件系统管理、进程调度、内存管理等本来应该是下层操作系统应该提供的基础功能都做了(这要是因为有些开源免费的嵌入式操作系统往往没有提供这些功能服务或实现得比较简单),所以把这样的中间件也叫操作系统也是有道理的。关于ROS的架构知识和各种component以及它们之间的通讯等知识后面有空再写,今天只写安装环境的问题。
要安装使用ROS,首先得安装Ubuntu或者Debian,这是ROS指定的操作系统,ROS工作在这些Linux之上,安装的对应版本也是有要求的。http://wiki.ros.org/Distributions 这里有迄今为止ROS 1的全部发行版本,Melodic和Kinetic都是官方推荐的有5年支持期的版本(Kinetic跑在Ubuntu 15.10或16.04上面,随着Ubuntu 16.04 LTS的支持期延长,我猜Kinetic的支持期也有可能要延长),如果你是个人学习琢磨使用,可以使用今年新鲜出炉的Melodic版本,如果是公司开发产品,还是建议使用2016年发行的Kinetic版本,为什么?因为使用太新的版本的话,很多扩展功能包和社区提供的功能包都没有对应于新版的,你只能自己使用源码编译和自己解决编译遇到的兼容性错误,这样可能会陷入困境需要时间琢磨解决,如果有大把时间的话可以冒险去体验,对于公司开发产品,老板们的想法当然无外是希望花最少的时间尽快出产品上市挣钱,尤其刚起步的创业公司资金紧张,没那么多钱烧,所以一般对进度希望越快越好,那就最好使用成熟版本喽。
首先得安装对应版本的Linux,我使用的是Ubuntu,对于ROS Melodic版本,需要安装Ubuntu 18.04 LTS(Bionic Beaver),对于ROS Kinetic版本,需要安装Ubuntu 15.10 (Wily Werewolf)或者Ubuntu 16.04.4 LTS (Xenial Xerus),我使用的是ROS Kinetic,安装的Ubuntu 16.04.4 LTS,安装完Ubuntu后,注意进Ubuntu Software Center把Ubuntu Software页面里的Universe、Restricted、Multiverse的Repository都勾选上,把Download from 改成国内的网站,比如清华的镜像网站:
然后开始ROS的安装:
#1. Setup your sources.list
注意:如果是主流CPU,设置国内的镜像网站即可,比如清华的:
#Tsinghua University
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
如果是Intel Celeron之类的用得不是那么多的CPU,只能设置默认的主网站:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.
list'
否则,下面执行sudo apt-get update时一些源找不到,并且执行sudo apt-get install ros-kinetic-desktop-full会报错:
unable to locate package ros-kinetic-desktop-full
测试表明,现在国内的阿里源已经支持很广泛并且下载速度超快,对于生僻的CPU的软件包也有了,所以可以把/etc/apt/sources.list备份后把内容删空,然后加入阿里的源,然后执行sudo apt-get update即可:
#2.Set up your keys
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
#3.update source before starting to install
sudo apt-get update
#4.Desktop-Full Install: (Recommended)
sudo apt-get install ros-kinetic-desktop-full
#5.Initialize rosdep
#Before you can use ROS, you will need to initialize rosdep. rosdep enables you to easily install system dependencies for source you want to compile and is required to run some core components in ROS.
sudo rosdep init
rosdep update
#6.Environment setup,到这步为止,ROS Core部分安装完成。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
#7.安装一个工具rosinstall,which is a frequently used command-line tool that enables you to easily download many source trees for ROS packages with one command, to install this tool and other dependencies for building ROS packages, run:
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
安装完后,你可以看到在/opt下有个了目录ros,在/opt/ros/kinectic/下看到有很多文件,这些就是ROS的文件,后面你安装其他的工具或功能包时,新的功能包的文件也会加到这下面。至此,可以开始学习实验了,如果是做开发,根据工作的具体内容不同,还需要安装一些特定的功能包,比如rosbridge-suite:
sudo apt install ros-kinetic-rosbridge-server