ROS入门与实践--1

  • 1 ROS简介
    • 1.1 什么是ROS?
    • 1.2 ROS设计目标
    • 1.3 ROS发行版本列表
  • 2 ROS的安装
    • 2.1 虚拟机及操作系统安装
      • 2.1.1 虚拟机VMware下载
      • 2.1.2 虚拟机VMware安装
      • 2.1.3 Ubuntu操作系统下载
      • 2.1.4 Ubuntu操作系统安装及配置
    • 2.2 ROS桌面版安装与测试
      • 2.2.1 ROS桌面版安装
      • 2.2.2 ROS桌面版测试

1 ROS简介

1.1 什么是ROS?

ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)”类似的“机器人框架”有:Player,YARP,Orocos,CARMEN,Orca,MOOS和 Microsoft Robotics Studio。
ROS 运行时的“蓝图”是一种基于ROS通信基础结构的松耦合点对点进程网络。ROS实现了几种不同的通信方式,包括基于同步RPC样式通信的服务(services)机制,基于异步流媒体数据的话题(topics)机制以及用于数据存储的参数服务器(Parameter Server)。想更加深入的解释这些概念,请参见概念综述。
ROS并不是一个实时的框架,但ROS可以嵌入实时程序。Willow Garage的PR2机器人使用了一种叫做pr2_etherCAT的系统来实时发送或接收ROS消息。ROS也可以与Orocos实时工具包无缝集成。

1.2 ROS设计目标

机器人开发的分工思想,实现了不同研发团队间的共享和协作,提升了机器人的研发效率,为了服务“ 分工”,ROS主要设计了如下目标:
1.代码复用: ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码重用。
2.分布式: ROS是进程(也称为Nodes)的分布式框架,ROS中的进程可分布于不同主机,不同主机协同工作,从而分散计算压力
3.松耦合: ROS中功能模块封装于独立的功能包或元功能包,便于分享,功能包内的模块以节点为单位运行,以ROS标准的IO作为接口,开发者不需要关注模块内部实现,只要了解接口规则就能实现复用,实现了模块间点对点的松耦合连接
4.精简: ROS被设计为尽可能精简,以便为ROS编写的代码可以与其他机器人软件框架一起使用。ROS易于与其他机器人软件框架集成:ROS已与OpenRAVE,Orocos和Player集成。
5语言独立性: 包括Java,C++,Python等。为了支持更多应用开发和移植,ROS设计为一种语言弱相关的框架结构,使用简洁,中立的定义语言描述模块间的消息接口,在编译中再产生所使用语言的目标文件,为消息交互提供支持,同时允许消息接口的嵌套使用
6.易于测试: ROS具有称为rostest的内置单元/集成测试框架,可轻松安装和拆卸测试工具。
7.大型应用: ROS适用于大型运行时系统和大型开发流程。
8.丰富的组件化工具包: ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用,如RVIZ(3D可视化工具),开发者根据ROS定义的接口在其中显示机器人模型等,组件还包括仿真环境和消息查看工具等
9.免费且开源: 开发者众多,功能包多

1.3 ROS发行版本列表

ROS发行版是一组版本化的ROS包。这些类似于Linux发行版(例如Ubuntu)。ROS发行版的目的是让开发人员在相对稳定的代码基础上工作,直到他们准备好向前滚动一切。因此,一旦发行版发布,我们会尽量限制对核心包的错误修复和不间断改进的更改(ROS-桌面-完整)。一般来说,这适用于整个社区,但是对于“更高”级别的包,规则就不那么严格了,所以避免破坏性改变的责任就落到了给定包的维护者身上。
我们在我们的中捕获组成发行版的组件rosdistro格式,它允许多种发行版。有许多不同类型的机器人有不同的需求,我们预计社区的部分成员可能会在未来整合他们自己的发行版,以更好地针对这些平台。

发布规则

  • ROS发布时间基于需求和可用资源

  • 所有未来的ROS 1版本都是LTS,支持五年

  • ROS版本将不再支持EOL Ubuntu发行版,即使ROS版本仍然受支持。
    发布政策的副作用

  • 每一个ROS版本都会被一个Ubuntu LTS支持。

  • LTS版本不会与任何以前的版本共享一个通用的Ubuntu版本。

  • ROS发行版在发布日期之后不会增加对新Ubuntu发行版的支持。

这些简化的规则和副作用会随着Ubuntu发布政策的改变而改变。
欲了解更多详情,请访问官方网站发布政策。

2 ROS的安装

2.1 虚拟机及操作系统安装

2.1.1 虚拟机VMware下载

VMware的官方网址为:https://www.vmware.com/cn.html

为了方便大家的下载和使用,在这里提供一个VMware 16.0版本:点击跳转。

2.1.2 虚拟机VMware安装

1.下载好安装程序后,双击打开,显示如下界面

2.勾选接收协议,然后下一步

3.选择一个自定义路径,一般是个人常用的软件安装路径,然后下一步

4.接下来的设置都默认,继续下一步,直到出现安装按钮,点击开始安装

5.安装完成,点击许可证,许可证号见安装包文件key.txt


6.输入许可证号以后,点击完成,双击软件打开,显示以下界面即为安装成功

2.1.3 Ubuntu操作系统下载

进入Ubuntu操作系统官网即可下载不同版本的Ubuntu操作系统,官方网址为:https://cn.ubuntu.com/download/desktop。
阿里云开源镜像网址为:http://mirrors.aliyun.com/ubuntu-releases/20.04/。
为了方便大家的下载和安装,这里提供一个20.04.5桌面版本的镜像:点击跳转。
20.04.4版本和本教程的ROS-noetic版本对应,不会出现版本差异问题。

2.1.4 Ubuntu操作系统安装及配置

1.打开安装好的WMware虚拟机,点击创建新的虚拟机,选择自定义,然后点击下一步

2.默认下一步,在以下界面选择稍后安装操作系统,然后下一步

3.客户机操作系统选择Linux,版本选择Ubuntu 64位

4.下一步自定义虚拟机名称为Ubuntu 20.04,安装位置最好选择固态盘所在的路径

5.处理器数量及内核数量根据个人电脑配置和需求选择

6.虚拟机内存根据个人电脑配置和需求选择

7.网络类型选择为使用网络地址转换,即NAT 模式

8.默认下一步,到以下界面根据个人电脑配置和需求选择磁盘大小

9.默认下一步,到以下界面,选择自定义硬件,选择新CD/DVD(SATA),找到使用ISO镜像文件,选择下载好的Ubuntu 20.04.5 镜像文件,然后关闭界面,点击完成


10.点击开启此虚拟机,即可打开Ubuntu 20.04 操作系统进行系统的安装和配置

11.进入Ubuntu操作系统,等待文件加载,出现以下界面,左侧下拉选择中文(简体),点击安装Ubuntu

12.若出现分辨率问题,按住键盘的win键同时往下移动鼠标可以点击继续

或者在安装界面,同时按住快捷键:Ctrl+Alt+T调出终端,输入下列指令:xrandr --size 1920x1080 然后回车,即可变成1920x1080的分辨率,从而方便用户安装

这里选择最小安装

13.接下来选择现在安装即可

14.点击继续

15.默认的位置定位为中国上海,点击继续即可

16.接下来是设置账户信息,按自己的习惯设置即可,设置完点击继续

17.等待安装

18.安装完毕,重启即可

19.重新启动,Ubuntu操作系统已经安装成功,点击用户头像,输入之前设置的密码,即可进入系统


安装成功,界面如下

20.为了便于以后的操作,我们更换一下软件源,点击左下角的显示应用程序,找到软件和更新,将位于中国的服务器下拉栏选择其他更换为阿里云开源镜像站或者清华开源镜像站,这里我们选择的是阿里云开源镜像站


更换时,需要输入账户密码

更换后,需要重新载入,这将花费一些时间,重新载入后,即可进行接下来的ROS安装

2.2 ROS桌面版安装与测试

2.2.1 ROS桌面版安装

1.配置Ubuntu软件仓库,这在之前的Ubuntu配置中已经完成,界面如下,这里保证你的Ubuntu软件仓库(repositories)允许使用“restricted”“universe”和“multiverse”存储库。

2.设置安装源,这里提供了官方源地址和其他高校的镜像源,根据自己的网速来选择合适的镜像源
官方镜像源:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

清华大学镜像源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

中国科学技术大学镜像源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

在Ubuntu操作系统中按快捷键Ctrl+Alt+T调出终端,选择适合自己的安装源复制,在终端界面下按快捷键Ctrl+Shift+V将命令粘贴到终端下,弹出输入密码,正常输入密码即可。输入成功后会自动退出,安装源即设置成功。

3.设置密钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

同理将密钥指令粘贴到终端下,输入密码,密钥设置成功界面如下

4.开始安装
首先,确保你的Debian软件包索引是最新的:(apt 是用于从互联网仓库搜索、安装、升级、卸载软件或操作系统的工具)

sudo apt update

等待更新,完成界面如下

然后选择你想安装的ROS类型:
完整桌面版安装(Desktop-Full,官方推荐):除了桌面版的全部组件外,还包括2D/3D模拟器(simulator)和2D/3D感知包(perception package)。

sudo apt install ros-noetic-desktop-full

桌面版(Desktop):包括了ROS-Base的全部组件,还有一些工具,比如rqt和rviz。

sudo apt install ros-noetic-desktop

ROS-Base(仅含骨架):ROS packaging,build,和communication库。没有图形界面(GUI)工具。

sudo apt install ros-noetic-ros-base

这里我们安装完整桌面版,安装界面如下,安装中

按Y键继续执行,等待一段时间,根据个人网速不同,安装时间有所不同

安装完成界面如下

由于网络原因,导致连接超时,可能会安装失败,可以多次重复调用 更新 和 安装命令,直至成功。
5.设置环境
你需要在使用ROS的每个bash终端中source这个脚本。

source /opt/ros/noetic/setup.bash

下面这些命令可以在每次启动新的shell窗口时很方便地为你自动source一下这个脚本:

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

注意:如果同时安装了好几个ROS发行版,~/.bashrc只会生效你当前使用的这个版本的setup.bash。
6.卸载ROS可以调用以下命令

sudo apt remove ros-noetic-*

补充 – 参考文章在末尾–赵虚左老师文章
安装构建依赖
在 noetic 最初发布时,和其他历史版本稍有差异的是:没有安装构建依赖这一步骤。随着 noetic 不断完善,官方补齐了这一操作。
1.首先安装构建依赖的相关工具,复制下面的指令并粘贴到终端处,输入密码即可执行

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential


输入Y键继续执行

安装成功界面如下

2.ROS中使用许多工具前,要求需要初始化rosdep(可以安装系统依赖) – 上一步实现已经安装过了。

sudo apt install python3-rosdep

初始化rosdep

sudo rosdep init
rosdep update

如果一切顺利的话,rosdep 初始化与更新的打印结果如下:


但是,在 rosdep 初始化时,多半会抛出异常。
问题:

原因:
境外资源被屏蔽。
解决:
百度或google搜索,解决方式有多种https://github.com/ros/rosdistro/issues/9721,可惜在 ubuntu20.04 下,集体失效。

新思路:将相关资源备份到 gitee,修改 rosdep 源码,重新定位资源。
实现:
1.先打开资源备份路径:https://gitee.com/zhao-xuzuo/rosdistro,打开 rosdistro/rosdep/sources.list.d/20-default.list文件留作备用(主要是复用URL的部分内容:gitee.com/zhao-xuzuo/rosdistro/raw/master)。

2.进入"/usr/lib/python3/dist-packages/" 查找rosdep中和raw.githubusercontent.com相关的内容,调用命令:

find . -type f | xargs grep "raw.githubusercontent"

通过cd /usr/lib/python3/dist-packages/命令进入所在路径,如下图所示

查找完以后如图所示

3.修改相关文件,主要有:
./rosdistro/__init__.py、./rosdep2/gbpdistro_support.py、./rosdep2/sources_list.py 、./rosdep2/rep3.py。可以使用sudo gedit命令,输入密码来修改文件:
为了方便操作,下面给出可以直接使用的修改文件指令

sudo gedit ./rosdistro/__init__.py
sudo gedit ./rosdep2/gbpdistro_support.py
sudo gedit ./rosdep2/sources_list.py
sudo gedit ./rosdep2/rep3.py

温馨提示:

 ./rosdistro/__init__.py -->修改的文件在68行./rosdep2/gbpdistro_support.py -->修改的文件在34行./rosdep2/sources_list.py -->修改的文件在64行./rosdep2/rep3.py -->修改的文件在36行

以修改的第一个文件为例:文件中涉及的 URL 内容,如果是:raw.githubusercontent.com/ros/rosdistro/master都替换成步骤1中准备的gitee.com/zhao-xuzuo/rosdistro/raw/master,然后保存退出即可。


全部修改完的界面如下图所示:

修改完毕,再重新执行命令:

sudo rosdep init
rosdep update

执行sudo rosdep init命令结果如下图所示:

执行rosdep update命令结果如下图所示:

2.2.2 ROS桌面版测试

我们通过ROS内置的小程序来检测ROS的环境是否可以正常运行
首先通过快捷键Ctrl+Alt+T分别调出三个终端,输入以下指令:
1.roscore -->启动ROS核心,启动成功界面如下:

2.rosrun turtlesim turtlesim_node -->启动乌龟GUI节点,启动成功界面如下:

3.rosrun turtlesim turtle_teleop_key -->启动乌龟键盘控制节点,启动成功界面如下:

将鼠标光标放在乌龟键盘控制节点终端光标处,通过键盘的方向键可以控制乌龟的移动,最终结果如下:


至此,机器人操作系统(ROS)入门与实践–1的内容全部更新完,接下来我将继续更新ROS入门与实践的后续内容,希望大家支持,本人是自学ROS的研究生小白,主要是根据赵虚左老师的课程、官方的文档以及按照自己的实际操作来写的教程,其中部分内容借鉴了赵虚左老师的方法,在这里给出教程的网址,希望大家一起学习,谢谢大家!!!

参考资料:
http://www.autolabor.com.cn/book/ROSTutorials/
http://wiki.ros.org/noetic/Installation/Ubuntu

ROS入门与实践--1(ROS简介与ROS的安装)相关推荐

  1. SLAM导航机器人零基础实战系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览...

    SLAM导航机器人零基础实战系列:(二)ROS入门--10.在实际机器人上运行ROS高级功能预览 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了 ...

  2. python编程入门到实践笔记习题_Python编程从入门到实践笔记——列表简介

    python编程从入门到实践笔记--列表简介 #coding=utf-8 #列表--我的理解等于c语言和java中的数组 bicycles = ["trek","cann ...

  3. ROS入门笔记(九):编写ROS的第一个程序hello world(重点)

    ROS入门笔记(九):编写ROS的第一个程序hello world(重点) 文章目录 1 Catkin工作空间 1.1 创建catkin工作空间 1.2 编译工作空间 1.3 设置环境变量 1.4 检 ...

  4. Docker入门到实践 (一) docker简介与安装、常用命令讲解

    Docker入门到实践 (一) docker简介与安装 一.docker 介绍   Docker 是一个开源的应用容器引擎 打包应用以及依赖包到一个可移植的镜像中,发布到任何机器上,实现虚拟化.容器是 ...

  5. 【ROS入门-4】嘴对嘴讲解ROS的核心概念——ROS话题通信机制

    文章目录 前言 ROS系列文章 ROS的通信机制 话题(topic) 发布者 订阅者 消息(Message) 用C++来写话题通信的代码 发布者 订阅者 使用rqt_graph 源码附录 引用说明 参 ...

  6. 【ROS入门-3】嘴对嘴讲解ROS的核心概念——节点与节点管理器

    文章目录 前言 ROS系列文章 ROS的通信机制 节点(Node) 节点管理器(Master) 简单运行 引用说明 参考 前言 我要给大家来介绍一下ROS当中一些核心的概念,帮助大家去在后面的ROS学 ...

  7. 基于《ros机器人开发实践》的学习,ros建图,机器人导航

    在这之前先仔细学习书中的内容,运行相关教学包,试一试这种感觉,培养自己的兴趣,觉得这个做起来还是挺有趣的,下面这些图是运行书中的展示效果:主要是ros建图,与机器人实现导航功能. #下面小编开始自己的 ...

  8. 1_01_GLib库入门与实践_GLib库简介

    GLib库是用C语言实现的一个通用的.可移植的实用程序库,由GNOME的GTK小组开发并维护,最早用在GTK+程序开发上,后来被越来越多的程序所引用.刚开始,GLib库叫GLib-1.0,形成于约19 ...

  9. Flash从入门到实践系列(一):环境安装

    目录 环境 安装 requirement: (1)-------------------anaconda---------------------------- (2)---------------- ...

最新文章

  1. 明朝是中国历史上最有骨气的王朝?【ZZ】
  2. MIT副教授赵宇飞团队登数学四大顶刊,华人作者中两位是本科生,最小的是00后...
  3. 每天一个linux命令(16):which命令
  4. Google研究员Ilya Sutskever:成功训练LDNN的13点建议
  5. C#调用C++编写的DLL函数各种参数传递问题
  6. VMWare 黑苹果卡在Logo页面
  7. weblogic12 linux部署,linux系统中安装部署weblogic12.1.3
  8. 安卓开发环境_我的安卓开发环境
  9. oracle 系统检查点,检查点(Checkpoint)优化及故障排除指南
  10. python最重要的库
  11. abp 上如何使用getstoredproccommand_多效唑,如何在柑橘上安全使用
  12. 6-2 函数式编程例一
  13. 半监督学习在金融文本分类上的探索和实践
  14. XStream 解析 XML 深入剖析
  15. 使用ClassLoader加载资源详解
  16. linux ext4 文件大小,刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则...
  17. 论文阅读:CCX-RAYNET: A CLASS CONDITIONED CONVOLUTIONAL NEURAL NETWORK FOR BIPLANAR X-RAYS TO CT VOLUME
  18. 大漠多账号循环登录任务自动切换模板大漠绑定后台绑定游戏
  19. ios 按钮文字下划线_iOS 文字下划线
  20. 小飞侠的游园方案答案

热门文章

  1. 快速读懂机器学习(附送详细学习资源)
  2. OKR误区:企业只有一个OKR管理节奏
  3. 国科大-图像处理复习(王伟强)
  4. 顺丰科技提前批前端面试
  5. 乐鑫科技线上笔试什么内容_顺丰科技线上笔试
  6. 最前沿的武器 磁力弹射器和磁力弹射枪 DIY 威力强大 视频
  7. ros安装 问题 ---- depends:ros-indigo-simulators
  8. 街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
  9. web端,qq互联以及微信登录接入流程(内嵌页面)总结
  10. 【Adobe】解决 Indesign 因 plugplugowl.dll 出现闪退问题