学习机器人的小伙伴一定很头疼,到底该怎么控制我们的机器人,才能使得它像人类手臂一样灵活呢?ROS机器人操作系统里面集成了很多机器人的功能包,我们可以直接调用这些功能包,专注于上层运动逻辑,而无需考虑底层控制,可以说十分方便,这也是未来机器人开发应用的趋势。
话不多说,先来安装好必备的环境吧!
ubuntu20.04是最新的linux长期支持版系统,配套支持最新版ROS1发行版ros-noetic
使用官方的安装教程即可安装。
ROS官方的英文教程写的很清楚,但是在国内由于网络的原因,要多一些步骤。
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 apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-noetic-desktop-full
上述命令一次可能不能成功,没事,再输入一次就行了。
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
到这里基本上ROS的安装已经完成了,可以打开一个ROS例程看一下:
新建一个终端(ctrl+alt+T)运行
roscore
再新建一个窗口(ctrl+shift+T)运行
rosrun turtlesim turtlesim_node
这时候应该可以看到一个小乌龟了!
再新建一个窗口运行
rosrun turtlesim turtle_teleop_key
可以通过方向键控制小乌龟移动啦!
首先安装这些:
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
然后
sudo rosdep init
rosdep update
如果你的网络够好,这一步应该没有问题。
但是很多时候由于网络原因,这一步会失败。
两个解决办法:
成功之后,恭喜!ROS安装部分结束!
moveit!是一个很好用的机械臂运动规划库,有多好用?用了你就知道了!
直接命令行安装
sudo apt install ros-noetic-moveit
如果你恰好有一台真实的UR机器人,那么你可以用moveit控制UR的运动。
如果你没有,也能在gazebo中进行仿真。
首先创建一个ROS工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
之后要source一下,才能读取到工作空间里的文件,以后每次打开终端进入工作空间都要执行该命令。
source devel/setup.bash
不想每次都输入的话,那就输入下面命令,这样每次打开终端会自动source:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
【2021.6.7更新】
请忽略以下文字,直接跳到更新处。
/*************
好了,我们准备安装ur的模型配置包了,这个包里面有ur的模型文件,moveit配置等。
cd ~/catkin_ws/src
git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git
为什么我们的ros版本是noetic而要安装melodic的呢?
因为UR官方太懒了,还没更新最新的noetic的分支…
所以先用这个吧,之后我们手动改一下相关文件。
克隆完成之后,安装相关依赖:
cd ~/catkin_ws
rosdep update #如果之前在安装ros时候已经做了这步那就不用重复了
rosdep install --from-paths src --ignore-src --rosdistro noetic
好了,继续安装ur的驱动包。
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver
克隆完成之后,再次安装相关依赖:
rosdep install --from-paths src --ignore-src -y
到这一步基本上都差不多了,不过上面说了,melodic版本的ur包有点问题,需要手动改一下,不然编译会报错。
gedit ~/catkin_ws/src/universal_robot/ur_msgs/srv/SetPayload.srv
用下面的内容替换掉原来的:
float32 payload
geometry_msgs/Vector3 center_of_gravity
-----------------------
bool success
还需要改动ur_msgs包中CMakeLists.txt 和 package.xml两个文件中对应的地方:
gedit ~/catkin_ws/src/universal_robot/ur_msgs/CMakeLists.txt
CMakeLists.txt替换成下列内容:
cmake_minimum_required(VERSION 2.8.3)
project(ur_msgs)
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS message_generation std_msgs geometry_msgs)
## Generate messages in the 'msg' folder
add_message_files(
FILES
Analog.msg
Digital.msg
IOStates.msg
RobotStateRTMsg.msg
MasterboardDataMsg.msg
RobotModeDataMsg.msg
ToolDataMsg.msg
)
## Generate services in the 'srv' folder
add_service_files(
FILES
SetPayload.srv
SetSpeedSliderFraction.srv
SetIO.srv
)
## Generate added messages and services with any dependencies listed here
generate_messages(
DEPENDENCIES
std_msgs
geometry_msgs
)
###################################
## catkin specific configuration ##
###################################
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES ur_msgs
CATKIN_DEPENDS message_runtime std_msgs geometry_msgs
# DEPENDS system_lib
)
###########
## Build ##
###########
#############
## Install ##
#############
#############
## Testing ##
#############
gedit ~/catkin_ws/src/universal_robot/ur_msgs/package.xml
package.xml替换成下列内容:
<package format="2">
<name>ur_msgsname>
<version>1.2.5version>
<description>The ur_msgs packagedescription>
<author>Andrew Glusiecauthor>
<author>Felix Messmerauthor>
<maintainer email="[email protected]">G.A. vd. Hoornmaintainer>
<maintainer email="[email protected]">Miguel Prada Sarasolamaintainer>
<maintainer email="[email protected]">Nadia Hammoudeh Garciamaintainer>
<license>BSDlicense>
<buildtool_depend>catkinbuildtool_depend>
<build_depend>message_generationbuild_depend>
<depend>std_msgsdepend>
<depend>geometry_msgsdepend>
<exec_depend>message_runtimeexec_depend>
<export>
export>
package>
***********/
官方功能包更新了,我们使用下面的方式安装。
$ cd ~/catkin_ws/
#clone the driver
$ git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver
#clone fork of the description.
$ git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot
#clone ur_msgs
$ git clone https://github.com/ros-industrial/ur_msgs.git src/ur_msgs
$ rosdep update #如果之前在安装ros时候已经做了这步那就不用重复了
$ rosdep install --from-paths src --ignore-src -y
好了,现在可以开始编译了,检查以下自己是不是在catkin_ws目录下:
catkin_make
编译完成后再
source devel/setup.bash
OK!大功告成!安装完毕!
试试看我们的ur和moveit吧
roslaunch ur3_moveit_config demo.launch
【1】https://github.com/ros-industrial/universal_robot
【2】https://github.com/UniversalRobots/Universal_Robots_ROS_Driver
求点赞