1.1什么是ROS
ROS(Robot Operating System,下文简称“ROS”)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。
ROS虽然也属于操作系统,但需要在LINUX系统下才能使用。因此在真正使用ROS之前需要安装LINUX系统。ROS与Linux系统有一定的对应关系如下,只有安装对应的版本才能保证正常使用。
ROS发布日期 | ROS版本 | 对应Ubutnu版本 |
2017.5 | ROS Lunar Loggerhead | Ubuntu 17.04(Zesty) |
2016.3 | ROS Kinetic Kame | Ubuntu 16.04 (Xenial) / Ubuntu 15.10 (Wily) |
2015.3 | ROS Jade Turtle | Ubuntu 15.04 (Wily) / Ubuntu LTS 14.04 (Trusty) |
2014.7 | ROS Indigo Igloo | Ubuntu 14.04 (Trusty) |
2013.9 | ROS Hydro Medusa | Ubuntu 12.04 LTS (Precise) |
2012.12 | ROS Groovy Galapagos | Ubuntu 12.04 (Precise) |
... | ... | ... |
表1 ROS与Ubutun对应关系
2.1 软件安装
Ubuntu的安装要和使用的ROS对应,本文采用的是ROS Indigo 的版本,因此对应的Ubuntu系统为14.04.
Ubuntu下载地址:Ubuntu 14.04.4 发布_Linux_Linux公社-Linux系统门户网站
系统的安装有两种方式,一种为实体机安装,另一种为虚拟机安装。具体采用哪种大家可以自行选择。但是不管使用哪种模式,都要确保Ubuntu安装后可以正常的网络连接。ROS的安装会通过网络的服务器到官网的资源库进行安装包查找,并进行下载安装。
2.2软件中心配置
安装完后,首先打开软件和更新对话框(Software & Update),可以在 Ubuntu 最左上角的系统设置(System Settings)中查找。打开后按照下图进行配置(确保上面的 "universe" ,"restricted"和 "multiverse."前是打上勾的),允许访问。
关闭对话框,安装完成。
2.3添加源列表
设置计算机可以接受来自官网ROS里packages.org的软件。
打开一个控制台(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'
设置密匙:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
3.1软件安装
本文是以Indigo作为安装讲解的,若安装其他版本将代码上的indigo替换为相应版本既可。
PS:在指令前有sudo的代表是在root下输入的指令。
首先确保系统软件处于最新版
sudo apt-get update
开始安装ROS,ROS有多种库和工具可以安装,下面将为大家分别介绍不同的安装方法,根据实际情况任选一种。
方法a): Desktop-Full Install: (推荐) ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators and 2D/3D perception
安装指令如下:
sudo apt-get install ros-indigo-desktop-full
安装指令如下:方法b): Desktop Install: ROS, rqt, rviz, and robot-generic libraries
sudo apt-get install ros-indigo-desktop-full
安装指令如下:方法c): ROS-Base: (Bare Bones) ROS package, build, and communication libraries. No GUI tools.
sudo apt-get install ros-indigo-ros-base
ROS可以根据实际使用的情况安装不同的功能包,将需要实际安装的数据包名字替换PACKAGE方法d):单独数据包安装
安装指令如下:
sudo apt-get install ros-indigo-PACKAGE
例如:安装Slam的包格式
sudo apt-get install ros-indigo-slam-gmapping
下面回到正文,安装ROS,从上面的a、b、c中选择安装,为了方便起见,本文采用的推荐的安装方式Desktop-Full Install,
输入命令为:
sudo apt-get install ros-indigo-desktop-full | |
系统会自动下载安装,因为安装比较软件包比较多,所以会需要一些时间,耐心等待直到安装完成。(网速快的话也是分分钟的事)
apt-cache search ros-indigo
安装完成后可以查找ros-indigo可以使用的数据包
3.2ROS初始化(Indigo)
在使用ROS之前,需要初始化ROSdep。ROSdep可以方便的为希望编译的源代码安装系统依赖项,并且ROS中的一些核心组件运行所需的工具。
输入命令为:
sudo rosdep init
rosdep update
3.3环境变量设置
初始化环境变量,输入命令如下:
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
上面两句非常非常非常重要,很多小伙伴在日常的开发过程中,有的找不到 Package, 找不到node, 很多情况下都是没有添加source。
3.4Rosintall安装
sudo apt-get install python-rosinstall | |
安装一个在ROS中会经常使用到的插件 rosintall,指令如下:
3.5ROS测试(Indigo)
sudo roscore | |
经过以上步骤ROS已安装完成,为了确保安装正确。我们进行一下测试,指令如下:
出现以下图片上的内容认为安装成功。
- UR软件包安装
4.1Universal_robot的软件包安装
sudo cd ~/catkin_ws/src
1)打开之前定义的工作空间:
git clone -b indigo-devel https://github.com/ros-industrial/universal_robot.gitindustrial/universal_robot.git
2)下载Ros服务器中的universal_robot.git的数据包源码,并添加到src中
git clone -b indigo-devel https://github.com/ros-industrial/universal_robot.gitindustrial/universal_robot.git
3)进入到catkin_ws目录下:
cd ~/catkin_ws
4)使用rosdep安装插件
rosdep install --from-paths src --ignore-src --rosdistro indigo
5)封装
catkin_make
6)source devel/setup.bash
4.2 ur_modern_driver驱动更换
目前UR机器人的控制器软件版本已更新到3.0版本以上,早期的ur_driver驱动不在适合,因此需要用ur_modern_driver进行替换。
Ur_modern_driver的下载链接如下:GitHub - ros-industrial/ur_modern_driver: (deprecated) ROS 1 driver for CB1 and CB2 controllers with UR5 or UR10 robots from Universal Robots
1)删除catkin_ws/src/universal_robot这个目录下的ur_driver文件夹
sudo cd ~/catkin_ws/src/universal_robot
sudo rm ur_driver
2)将下载好的ur_modern_driver .zip复制到catkin_ws/src/universal_robot这个目录下
sudo cd /home/ur/Desketop
sudo cp ur_modern_driver .zip ~/catkin_ws/src/universal_robot
sudo rm -r ur_driver
3)解压ur_modern_driver.zip
sudo unzip ur_modern_driver.zip
4) 进入到catkin_ws目录下:
cd ~/catkin_ws
5)重新封装
catkin_make
5.1 IP设置
- 设置Linux系统的IP地址,并查看其地址。
- 设置机器人的IP
在示教器上选择设置机器人—》网络—》静态地址,将IP地址和主机设置为同一网段。
- 测试是否连接正常
指令如下:其中ip_of _The_Robot为机器人IP地址
Ping ip_of _The_Robot
5.2 通信连接
本文以UR5为例与ROS进行通讯,若和UR3或UR10进行通讯,只要替换相应代码中相应的机器人型号即可。
1)打开工作空间
sudo cd ~/catkin_ws
2)打开资源库
source devel/setup.bash
3)和UR5进行通讯连接,将代码中IP_OF_THE_ROBOT替换为机器人的实际IP地址
roslaunch ur_modern_driver ur5_bringup.launch limited:=true robot_ip:=
IP_OF_THE_ROBOT [reverse_port:=REVERSE_PORT]
代码中limited:=true是在运动规划时,将机器人的关节角度限制在[−π,π][−π,π]
- 设置Moveit的节点
再打开一个新控制台(Ctrl + Alt + T), 输入如下指令:
在执行步骤4命令前,请先执行步骤1和步骤2
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch limited:=true
- 启动带有运动规划插件的 RViz
再打开一个新控制台(Ctrl + Alt + T), 输入如下指令:
在执行步骤4命令前,请先执行步骤1和步骤2
roslaunch ur5_moveit_config moveit_rviz.launch config:=true
5.2通信测试
在打开的RVIZ中可以看到的UR5机械臂和实物的状态是一致的。
a)实体随仿真运动
拖动UR5机械臂实物,在RVIZ里的机械臂也会跟着运动。
b)仿真带动实体运动
此时,你可以在RVIZ中用鼠标拖动机械臂到达目标位置,在planing下点击plan,如果路径规划成功即可点击execute,你就会看到UR5实物也会跟着运动到目标点。
c)程序控制实体运动
通讯连接成功后,可以直接发送运动的指令。运行的程序在test_move.py里。
再打开一个新控制台(Ctrl + Alt + T), 输入如下指令:
1)打开工作空间
sudo cd ~/catkin_ws
2)打开资源库
source devel/setup.bash
rosrun ur_modern_driver test_move.py
6.1环境设置
有些情况下可能无法使用实体机器人,因此需要仿真运行,可以通过gazebo仿真学习。
1)打开工作空间
sudo cd ~/catkin_ws
2)打开资源库
source devel/setup.bash
3)启动仿真插件
roslaunch ur_gazebo ur10.launch
4)启动moveit节点,并设置为模拟环境
roslaunch ur10_moveit_config ur10_moveit_planning_execution.launch sim:=true
5)启动带有运动规划插件的 RViz
roslaunch ur10_moveit_config moveit_rviz.launch config:=true
a)在Rviz里面选择合适的规划库OMPL
,
b)然后在Planning选项卡中,根据在显示界面拖动的位置,点击Plan,待规划完成后点击Execute。
Ps:机器人移动的位置请勿随意,根据机器人的运动范围设定。只可以按工具端笛卡尔的XYZ和转动拖动,无法单关节移动。