ROS系统的概述以及在Ubuntu18.04LTS环境下的安装
ROS的英文全称是Robot Operating System,中文翻译为机器人操作系统。我想了解过自动驾驶技术的人都听过百度的Apollo或者是开源的autoware,或多或少都借用了ROS系统的一些东西。那什么是ROS呢?07年Stanford University的人工智能实验室与Willow Garage公司开发了这个项目,并且在12年的时候开源出来,并成立了OSRF基金会维护和更新ROS。
他是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。
其实这玩意我们都见过,就在我们生活中扫地机器人,学校菜鸟驿站的无人车这都应用了ROS系统与SLAM(Simultaneous localization and mapping)算法。
https://www.ros.org/
这个是ROS的官网,里面有很多学习资源,大家感兴趣可以去了解。
https://answers.ros.org/questions/
ROS的问答区,在学习ROS过程中遇到的很多问题可以里面找到答案,或者可以子啊上面提问
我们看一下ROS的历代版本:
发布日期 | 版本 | 对应Ubuntu版本 |
---|---|---|
2012.12 | Groovy Galapagos | 12.04(Precise) |
2013.09 | Hydro Medusa | 12.04(Precise) |
2014.07 | Indigo Lgloo | 14.04(Trusty) |
2015.03 | Jade Turtle | 15.04(Wily)/14.04(Trusty) |
2016.3 | Kinetic Kame | 16.04(Xenial)/15.10(Wily) |
下面是关于ROS系统的安装,因为自己经常安装,也写下这一篇文章来记录自己的安装过程。
准备工作
首先在“软件与更新中”勾选如下进行加载
正式安装ROS
1、设置安装源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
2、设置密匙
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
3、更新Ubuntu 18.04 LTS的最新可用软件包列表
sudo apt update
出现以下错误,解决办法如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
再更新软件包列表
sudo apt update
4、开始安装ROS Melodic桌面完整版
sudo apt-get install ros-melodic-desktop-full
再输入如下命令,以防止出现找不到rosdep的提示
sudo apt install python-rosdep
5、初始化Rosdep
开始使用ROS之前,先初始化rosdep,rosdep能够轻松地安装要编译的源代码的系统依赖关系,rosdep是ROS核心组件运行的基础。(这一步需要使用科学上网,不然会出现错误!!)
sudo rosdep init
会提示先进行更新
rosdep update
若出现如下命令错误,是因为网络问题,则不断重复以上的命令即可,
reading in sources list data from /etc/ros/rosdep/sources.list.d
ERROR: error loading sources list:
('The read operation timed out',)
然后再进行一次
sudo rosdep init
6、添加ROS环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
7、为了构建和管理开发者自己的ROS工作空间,我们还需要安装ROSinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
启动ROS系统
1、打开第一个终端
roscore
2、打开第二个终端
rosrun turtlesim turtlesim_node
我们可以看到一直静止的小海龟
3、如果希望小海龟能够移动,打开第三个终端,利用Ctrl+Shift+T快捷键再打开一个新的终端,启动turtlesim的键盘控制节点turtle_teleop_key,运行如下命令
rosrun turtlesim turtle_teleop_key
这样我们就可以用电脑的方向键控制小海龟的移动了。
关于ROS在工业上的应用,很多人评论说不靠谱,因为ROS严重依赖于外库,而且很多库存在问题没有解决,并且因为资本的原因,没有那么多人愿意把自己做的东西开源出来,尤其是这样软件层面的东西,想要自己的产品有自己独特的特点,就需要底层核心代码的保密了,并且由于ROS的通信机制,在内存的占用上就需要占用很大,对于一些小型的MCU就很好支持起来。
但是ROS在工业上提出了一个很优秀的思想——模块化。我个人的想法是在科技发展到今天,很多东西都走向了模块化的趋势,Intel在8月19日技术分享会上提出的Alder Lake架构就是一种体现。手机,一直是一个我很关注的行业,初中的时候手机厂商都在想着如何把手机做轻做薄,现在是200g的手机都能叫做轻薄的时代,我一直觉得其实可以把手机划分为模块,制定通用的标准,主板+屏幕+电池+摄像头+系统,每个手机厂商其实都有自己优秀的地方,发挥自己的长处,让用户自由选择,或许会是未来的一种趋势呢?
全球化时代,没有人一家公司可以做出一个完美的产品,各取所长补其短。