ROS 简介
ROS 是机器人操作系统(Robot Operating System)的英文缩写。 ROS 是用于编写机器人软件程序的一种具有高度灵活性的软件架构。
ROS 图标 :

ROS 是开源的,是用于机器人控制的一种后操作系统,或者说次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建 立、编写和运行多机整合的程序。
ROS 的首要设计目标是在机器人研发领域提高代码复用率。ROS 是一个分布式的进程(也就是 “节点” )框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS 也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发实现从文件系统到用户接口完全独立决策(不受 ROS 限制)。同时,所有的工程都可以被 ROS 的基础工具整合在一起。
1 ros 的设计目标和特点
很多人都在问“ROS与其它机器人软件平台有什么不同?”这是一个很难解答的问题。因为ROS不是一个集成了大多数功能或特征的框架。事实上,ROS 的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程(也就是节点)框架,这些进程被封装在易于被分享和发布的程序包和功能包集中。ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。
为了支持共享和协作这一主要目标,ROS 框架还有其他几个特点:
- 精简:ROS尽可能设计的精简,以便为ROS编写的代码可以与其他机器人软件框架一起使用。由此得出的必然结论是ROS可以轻松集成在其它机器人软件平台:ROS已经可以与OpenRAVE,Orocos和Player集成。
- ROS不敏感库:ROS的首选开发模型都是用不依赖ROS的干净的库函数编写而成。
- 语言独立:ROS框架可以简单地使用任何的现代编程语言实现。ros已经实现了Python版本,C++版本和 Lisp版本。同时也拥有Java 和 Lua版本的实验库。
- 松耦合:ROS中功能模块封装于独立的功能包或元功能包,便于分享,功能包内的模块以节点为单位运行,以ROS标准的IO作为接口,开发者不需要关注模块内部实现,只要了解接口规则就能实现复用,实现了模块间点对点的松耦合连接
- 方便测试:ROS内建一个了叫做rostest的单元/集成测试框架,可以轻松安装或卸载测试模块。
- 可扩展:ROS可以适用于大型运行时系统和大型开发进程。
- 免费且开源:开发者众多,功能包多
2 为什么使用ROS
通过ROS,我们能够在虚拟环境中实现对机械臂的仿真控制。
我们将通过 rviz 平台实现对机械臂的可视化,并使用多种方式对我们的机械臂进行操作;通过 moveit 平台进行机械臂行动路径的规划和执行,达到自由控制机械臂的效果。
我们将在接下来的章节中学习如何通过ros中的平台对我们产品的控制进行控制。
MoveIt 简介
MoveIt 是目前针对机械臂移动操作的最先进的软件,已在 100 多个机器人上使用。它综合了运动规划、控制、3D 感知、运控学、控制和导航的最新成果,提供了开发先进机器人应用的易用平台,为工业、商业和研发等领域的机器人新产品的设计和集成体用评估提供了一个集成化软件平台。
MoveIt 图标 :

使用设备:myCobot 280 PI
环境搭建
1 虚拟机安装
前往官方网站下载虚拟机Virtual Box 或者前往官方网站下载虚拟机 VM ware
当然,如果您已经拥有您的虚拟机,您可以跳过该步骤。
我们选择下载Virtual box,因为它是免费的。


2 新建虚拟机
2.1 创建虚拟机
在控制中选择新建
输入虚拟机名称和虚拟机存放的位置,选择虚拟机类型为Linux,选择ubuntu64位版本,进行下一步。

按照自己的需求配置内存大小,进行下一步。

选择现在创建虚拟硬盘,进行创建。

虚拟硬盘类型选择VDI类型,进行下一步。

分配虚拟硬盘大小,由于需要安装ubuntu系统,而且还会在该系统中进行操作,建议大小不要低于20G。


2.2 导入ubuntu系统
2.2.1 下载ubuntu系统。
请根据自己的需要选择ubuntu版本进行安装
三种版本的安装方法和过程都是相同的,这里以18.04版本作为例子进行安装

下载完成后有如图文件:

2.2.2 导入ubuntu到虚拟机中
在Virtual box中找到之前安装的虚拟机,进入设置,并在存储中给控制器分配光盘:



然后打开虚拟机进行ubuntu安装,并点击启动。
2.2.3 ubuntu安装
等待系统启动,进入欢迎界面,选中“中文(简体)”,并点击“安装 Ubuntu”按钮;

点击“继续”按钮;

选中“清除整个磁盘并安装 Ubuntu”选项,点击“现在安装”按钮;

在弹出的对话框中点击“继续”按钮;

设置地理位置,点击“继续”按钮;

设置用户名和密码,点击“继续”按钮;

进入系统安装界面,请耐心等待;

待安装完成,在弹出的对话框中,点击“现在重启”按钮,完成安装。

环境安装
1 ROS 环境搭建
1.1 ROS 安装
基本的开发环境搭建需要安装机器人操作系统 ROS、MoveIt 以及 git 版本管理器,以下分别介绍其安装方法及流程。
myCobot 280-PI需要执行 mycobot_ros 安装包的安装。
1.1.1 版本选择
ROS 跟 ubuntu 有一一对应的关系,不同版本的 ubuntu 对应不同版本的 ROS,参考网站见下:Distributions - ROS Wiki
- 这里给出对应Ubuntu支持的 ROS 版本:
- Ubuntu 16.04 / ROS Kinetic
- Ubuntu 18.04 / ROS Melodic
- Ubuntu 20.04 / ROS Noetic
请根据自己安装的Ubuntu版本进行对应ROS版本的安装
如果版本不同,下载将会失败.在这里我们选择的系统为 Ubuntu 18.04, 对应 ROS 版本为 ROS Melodic
NOTE: 目前我们不提供 windows 安装 ROS 的任何参考, 若有需要请参考 https://www.ros.org/install/
1.1.2 开始安装
1 添加源
Ubuntu 本身的软件源列表中没有 ROS 的软件源,所以需要先将 ROS 软件源配置到软件列表仓库中,才能下载 ROS 。打开一个控制台终端(快捷键Ctrl+Alt+T),输入如下指令:
- 官方源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- 若下载速度缓慢,推荐就近选择一个镜像源替换上面的命令。例如,Tsinghua University为:
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'
这里会要求输入用户密码,输入安装 Ubuntu 时设置的用户密码即可。
2 设置秘钥
配置公网秘钥,这一步是为了让系统确认我们的路径是安全的的,这样下载文件才没有问题,不然下载后会被立刻删掉:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
执行结果显示如下:

3 安装
在加入了新的软件源后,需要更新软件源列表,打开一个控制台终端(快捷键Ctrl+Alt+T),输入如下指令:
sudo apt-get update
执行安装 ROS,打开一个控制台终端(快捷键Ctrl+Alt+T),请按照自己的Ubuntu版本选择输入以下指令:
# Ubuntu 16.04
sudo apt install ros-kinetic-desktop-full
# Ubuntu 18.04
sudo apt install ros-melodic-desktop-full
# Ubuntu 20.04
sudo apt install ros-noetic-desktop-full
这里推荐安装完整的 ROS,防止库和依赖的缺失。
安装过程耗时比较长,需要耐心等待
- 若安装过程中,控制台终端出现如下错误信息,则需要更换/etc/apt/sources.list中的软件源列表。

- 打开一个控制台终端(快捷键Ctrl+Alt+T),输入如下指令:
sudo gedit /etc/apt/sources.list
- 将sources.list中的官方软件源全部替换成下面的阿里云软件源:
Ubuntu 16.04版本:
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
Ubuntu 18.04版本:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
Ubuntu 20.04版本:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
- 配置完成后,sources.list文件内容如下所示,点击保存并退出。

- 更新软件源列表,在控制台终端输入:
sudo apt-get update
- 在控制台终端输入安装ROS的指令:
# Ubuntu 16.04
sudo apt install ros-kinetic-desktop-full
# Ubuntu 18.04
sudo apt install ros-melodic-desktop-full
# Ubuntu 20.04
sudo apt install ros-noetic-desktop-full
安装过程耗时比较长,需要耐心等待
4 配置 ROS 环境到系统
rosdep 让你能够轻松地安装被想要编译的源代码,或被某些 ROS 核心组件需要的系统依赖,在终端依次执行以下命令,打开一个控制台终端(快捷键Ctrl+Alt+T)。
如果您的系统没有安装rosdep,请使用命令sudo apt install python-rosdep进行安装。
如果您的安装的Ubuntu系统是20.04版本,请使用命令sudo apt install python3-rosdep进行安装,完成后执行rosdep初始化命令。

初始化 rosdep:
sudo rosdep init
若出现如下图所示的错误提示:

解决方法: 修改hosts文件,控制台终端输入下面的指令:
sudo gedit /etc/hosts
在文件内容末端,加入以下两个网址的IP地址实现访问:
199.232.28.133 raw.githubusercontent.com
151.101.228.133 raw.github.com

修改完成后,在控制台终端执行:
sudo rosdep init
rosdep update
初始化完成后,为了避免每次关掉终端窗口后都需要重新生效 ROS 功能路径,我们可以把路径配置到环境变量中,这样在每次打开新的终端时便可自动生效 ROS 功能路径 在终端依次执行以下命令,打开一个控制台终端(快捷键Ctrl+Alt+T):
1.1.3 设置ros环境
Bash
执行以下命令:
# Ubuntu 16.04
# 将 ros 环境加入到当前控制台的环境变量
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
# Ubuntu 18.04
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
# Ubuntu 20.04
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
Zsh
如果使用zsh代替bash,那么:
# Ubuntu16.04
echo "source /opt/ros/kinetic/setup.bash" >> ~/.zshrc
# Ubuntu18.04
echo "source /opt/ros/melodic/setup.bash" >> ~/.zshrc
# Ubuntu20.04
echo "source /opt/ros/noetic/setup.bash" >> ~/.zshrc
source ~/.zshrc
安装 ROS 额外依赖项
在终端输入以下命令安装ROS额外依赖项,打开一个控制台终端(快捷键Ctrl+Alt+T):
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
如果你的Unbutu系统是20.04版本,请执行以下命令安装:
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# Ubuntu 16.04
sudo apt install ros-kinetic-joint-state-publisher-gui
# Ubuntu 18.04
sudo apt install ros-melodic-joint-state-publisher-gui
# Ubuntu 20.04
sudo apt install ros-noetic-joint-state-publisher-gui
1.1.4 验证安装
ROS 系统的启动需要一个 ROS Master,即节点管理器,我们可以在终端输入 roscore 指令来启动 ROS Master。
为了验证 ROS 是否安装成功,打开一个控制台终端(快捷键Ctrl+Alt+T),在终端执行以下命令:
roscore
当显示如下界面,则表示 ROS 安装成功

roscore命令启动了一个节点管理器,其作用就是用于节点管理,在一个ros系统中,有且只有一个,它是ros节点运行的前提,所以在执行启动ros节点前,第一步都需要执行roscore。
更多更详细的安装指导,可以参考官方的安装指导,网址: ROS/Installation - ROS Wiki
2 MoveIt 安装
MoveIt 是 ros 中一系列移动操作的功能包的组成,主要包含运动规划,碰撞检测,运动学,3D 感知,操作控制等功能。
2.1 更新软件源列表
打开一个控制台终端(快捷键Ctrl+Alt+T),在终端窗口输入以下命令,以更新软件源列表:
sudo apt-get update
2.2 安装 MoveIt
打开一个控制台终端(快捷键Ctrl+Alt+T),在终端窗口输入以下命令,执行 MoveIt 的安装:
# Ubuntu16.04
sudo apt-get install ros-kinetic-moveit
# Ubuntu 18.04
sudo apt-get install ros-melodic-moveit
# Ubuntu20.04
sudo apt-get install ros-noetic-moveit
3 git 安装
3.1 添加软件源
将 git 安装的软件源添加到 ubuntu 的软件源列表中,打开一个控制台终端(快捷键Ctrl+Alt+T),在终端窗口输入以下命令:
sudo add-apt-repository ppa:git-core/ppa
3.2 更新软件源列表
打开一个控制台终端(快捷键Ctrl+Alt+T),在终端窗口输入以下命令,以更新软件源列表:
sudo apt-get update
3.3 安装 git
打开一个控制台终端(快捷键Ctrl+Alt+T),在终端窗口输入以下命令,执行 git 的安装:
sudo apt-get install git
3.4 验证安装
读取 git 版本,打开一个控制台终端(快捷键Ctrl+Alt+T),在终端窗口输入以下命令:
git --version
在终端中可以显示 git 版本号,如下,即为安装成功

3.5 使用
在后续下载 ros 包需要用到git,git 的使用可以参考下面链接:
4 mycobot_ros 安装
mycobot_ros 是 ElephantRobotics 推出的,适配旗下桌面型六轴机械臂 mycobot系列 的ROS 包。
项目地址:http://github.com/elephantrobotics/mycobot_ros
4.1 前提
在安装包之前,请保证拥有 ros 工作空间。
这里我们给出创建工作空间的样例命令,打开一个控制台终端(快捷键Ctrl+Alt+T),在命令行输入以下命令:
mkdir -p ~/catkin_ws/src # 创建文件夹
cd ~/catkin_ws/src # 进入文件夹
catkin_init_workspace # 把当前目录初始化为一个ROS工作空间
cd .. # 返回上级目录
catkin_make # 构建工作区中的代码。
添加工作空间的环境
Bash
下文将以<ros-workspace>来代指电脑中ROS的工作空间路径,请确保在执行下面命令时将<ros-workspace>替换为你本机的真实路径。
# Ubuntu 16.04
echo "source ~/<ros-workspace>/devel/setup.bash" >> ~/.bashrc
# Ubuntu 18.04
echo "source ~/<ros-workspace>/devel/setup.bash" >> ~/.bashrc
# Ubuntu 20.04
echo "source ~/<ros-workspace>/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
Zsh
如果使用zsh代替bash,那么:
# Ubuntu16.04
echo "source ~/<ros-workspace>/devel/setup.bash" >> ~/.zshrc
# Ubuntu18.04
echo "source ~/<ros-workspace>/devel/setup.bash" >> ~/.zshrc
# Ubuntu20.04
echo "source ~/<ros-workspace>/devel/setup.bash" >> ~/.zshrc
source ~/.zshrc
4.2 安装
NOTE:
- 本包依赖于ROS和MoveIT,使用前确保以成功安装ROS和MoveIT。
- 本包与真实机械臂的交互依赖于PythonApi -
pymycobot - Api项目地为:GitHub - elephantrobotics/pymycobot: This is a python API for mycobot serial communication.
-
快速安装:
pip install pymycobot --upgrade执行pip install pymycobot --upgrade命令时,若出现如下图错误提示:

根据提示输入以下命令安装pip
sudo apt install python-pip -
如果你的Ubuntu系统是20.04版本,请执行命令
sudo apt install python3-pip安装pip pip安装完成后,终端再次执行pip install pymycobot --upgrade -
安装方式依赖于Git,请确保电脑中已安装Git。
下文将以 <ros-workspace> 来代指电脑中ROS的工作空间路径,请确保在执行下面命令时将<ros-workspace>替换为你本机的真实路径。
cd ~/<ros-workspace>/src # 进入工作区的src文件夹中
# 克隆github上的代码
git clone https://github.com/elephantrobotics/mycobot_ros.git
cd .. # 返回工作区
catkin_make # 构建工作区中的代码
cd ..
source <ros-workspace>/devel/setup.bash # 添加环境变量
至此,ROS环境搭建已完成。
本文介绍了ROS机器人的基础知识,包括ROS的设计目标和特点,解释了为何使用ROS。接着,详细阐述了ROS环境搭建的过程,包括虚拟机安装、ROS与MoveIt的安装,以及git和mycobot_ros的安装步骤。通过ROS和MoveIt,可以实现对机械臂的仿真控制和路径规划。最后,文章提供了验证安装成功的方法。



983

被折叠的 条评论
为什么被折叠?



