一、Ubuntu版本-20.04
二、Ros安装
1、添加ROS软件源
将下面这条命令复制到ubuntu的终端执行
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、添加密钥
将以下命令复制到ubuntu的终端执行
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
成功后会显示如下界面:
![](https://img-blog.csdnimg.cn/img_convert/f1197de5404c41ba122046ceaa709131.png)
3、更新软件源
将以下命令复制到ubuntu的终端执行
sudo apt update
成功后会显示如下界面:
![](https://img-blog.csdnimg.cn/img_convert/589a428c853332fc8dff273adc498dbf.png)
4、开始安装ROS
此次安装的ros版本为noetic
sudo apt install ros-noetic-desktop-full
成功后显示如下界面
![](https://img-blog.csdnimg.cn/img_convert/1a72902be495061c00f873e06f889dd3.png)
配置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证ros安装成功
roscore
按ctrl+alt+t打开一个新的终端,输入以下命令
rosrun turtlesim turtlesim_node
按ctrl+alt+t再打开一个新的终端,输入以下命令
rosrun turtlesim turtle_teleop_key
看见如下界面,且可以移动小海龟则安装成功
![](https://img-blog.csdnimg.cn/img_convert/bc2708d2317c6d10bdfdf55ea71740ae.png)
7、rosdep安装
(1)安装构建依赖
sudo apt install python3-rosdep
(2)初始化
sudo apt install python3-rosdep2
初始化会报错,报错信息如下:
ERROR: cannot download default sources list from:https : //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.
错误原因:境外资源被屏蔽
解决方法:打开http://gitee.com/zhaoxuzuo/rosdistro,打开rosdistro/rosdep/sources.list.d/20-default.list文件,复制以下内容:gitee.com/zhao-xuzuo/rosdistro/raw/master
在终端输入如下命令:
find . -type f | xargs grep "raw.githubusercontent"
修改相关文件:./rosdistro/__init__.py、./rosdep2/gbpdistro_support.py、./rosdep2/sources_list.py、./rosdep2/rep3.py。使用sudo get+文件名打开文件
将文件中raw.githubusercontent.com/ros/rosdistro/master更改为复制的内容。
(3)再次初始化
sudo rosdep init
rosdep update
就可以正常实现rosdep的初始化与更新
三、kinect_v2安装
1、首先安装libfreenect2
(1)下载libfreenect2
git clone https://github.com/OpenKinect/libfreenect2.git
(2)最好先安装好opencv,ubuntu20.04安装opencv4.6.0参考下列链接
(3)安装依赖
sudo apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev
sudo apt-get install libglfw3-dev
sudo apt-get install libopenni2-dev
sudo apt-get install libusb-1.0-0-dev
(4)开始安装
进入libfreenect2
cd libfreenect2
新建build文件并进入
mkdir build && cd build
编译
cmake ..
make
cmke..可能会出现如下问题:
ubuntu@ubuntu:~/Desktop/libfree/libfreenect2/build$ cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
-- using tinythread as threading library
-- Checking for modules 'libva;libva-drm'
-- No package 'libva' found
-- No package 'libva-drm' found
-- Could NOT find TegraJPEG (missing: TegraJPEG_LIBRARIES TegraJPEG_INCLUDE_DIRS TegraJPEG_L4T_OK TegraJPEG_DRIVER_OK TegraJPEG_WORKS)
CMake Error at /usr/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find TurboJPEG (missing: TurboJPEG_INCLUDE_DIRS TURBOJPEG_WORKS)
Call Stack (most recent call first):
/usr/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE)
cmake_modules/FindTurboJPEG.cmake:66 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:237 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
See also "/home/ubuntu/Desktop/libfree/libfreenect2/build/CMakeFiles/CMakeOutput.log"
解决方案
sudo apt-get install libturbojpeg0-dev
然后删掉build,重新建build然后cmake . .
安装
sudo make install
设定udev rules,明确libfreenect2的路径,比如/home/jin/libfreenect2/
sudo cp libfreenect2/platform/linux/udev/90-kinect2.rules /home/jin/libfreenect2/
重新插拔Kinect2相机。在刚才build目录下运行
./bin/Protonect
看见画面便成功
2、ROS上使用Kinect v2
暂时还未成功
四、机械臂URDF在ROS中MoveIt的配置和使用
1、下载UR5机械臂URDF文件
URDF文件放在新建的功能包中后,编译(catkin_make),再执行下面代码即可运行可视化文件
roslaunch URDF文件 URDF文件里的.launch文件
2、配置MoveIt
(1)安装moveit
sudo apt-get install ros-noetic-moveit
source /opt/ros/noetic/setup.bash
(2)可以用下面的代码查看是否安装成功,并查看moveit!的版本
moveit_version
(3)启动MoveIt,这一步需要在新建的工作空间中执行,并且打开rocore ,再source一下
roscore
source devel/setup.bash
rosrun moveit_setup_assistant moveit_setup_assistant
(4)开始配置
具体配置参考以下链接
https://www.guyuehome.com/7613
注意:最后生成配置文件步骤,需要提前建立空文件夹,例如~/catkin_ws/src/panda_moveit_config。最后的文件名一定是moveit_config为结尾。
启动rviz进行可视化
roslaunch **_moveit_config demo.launch
五、Moveit 实时控制UR5机械臂
1、Universal_robot的软件包安装
创建工作空间并编译
mkdir -p ~/catkin_UR5/src
cd ~/catkin_UR5/src
catkin_init_workspace
cd ~/catkin_UR5
catkin_make
source devel/setup.bash
进入定义好的catkin_UR5工作空间
cd ~/catkin_UR5/src
下载 Ros 服务器中的 universal_robot.git 的数据包源码,并添加到 src 中
git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git
进入 catkin_UR 5工作空间
cd ~/catkin_UR5
安装插件
rosdep install --from-paths src --ignore-src --rosdistro noetic
进行编译
catkin_make
运行环境变量设置脚本文件
source /devel/setup.bash
2、安装驱动
方法1:
(1)下载ur_modern_driver驱动:https://github.com/ros-industrial/ur_modern_driver。
(2)删除 catkin_UR5/src/universal_robot 这个目录下的 ur_driver 文件夹。
(3)将下载好的 ur_modern_driver .zip 复制到 catkin_UR5/src/universal_robot 这个目录下。
(4)解压 ur_modern_driver.zip
sudo unzip ur_modern_driver.zip
(5)修改ur_modern_driver文件夹中的ur_hardware_interface.cpp文件!!!
将所有“controller_it->hardware_interface”替换成“controller_it->type”
(6)进入到 catkin_UR5目录下,重新编译
catkin_make
(7)遇见catkin_make错误
如果是这种错误
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "octomap_ros" with
any of the following names:
octomap_rosConfig.cmake
octomap_ros-config.cmake
Add the installation prefix of "octomap_ros" to CMAKE_PREFIX_PATH or set
"octomap_ros_DIR" to a directory containing one of the above files. If
"octomap_ros" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
octomap_mapping/octomap_server/CMakeLists.txt:19 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/zdj/octomap/octomap_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/zdj/octomap/octomap_ws/build/CMakeFiles/CMakeError.log".
Makefile:320: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed;
![](https://img-blog.csdnimg.cn/img_convert/8ba0275f43eaa87cfb010d7da05465e2.png)
看见框住的,就是缺少的,所以用
//octomap_ros是我们缺少的,但是我们要把_改成-,noetic是ros版本;
sudo apt-get install ros-noetic-octomap-ros
然后接着catkin_make
方法2:
(1)进入之前catkin_UR5工作空间
cd ~/catkin_UR5
catkin_make
source devel/setup.bash
(2)安装驱动包
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot
git clone https://github.com/ros-industrial/ur_msgs.git src/ur_msgs
(3)编译
catkin_make
source devel/setup.bash
3、连接UR5机械臂
(1)设置ployscope的静态IP地址
要启用网络连接,请使用UR的示教器导航至设置机器人->设置网络菜单(如下附件所示)。
注意,ip地址初始为0.0.0.0,我们需要更改设置,然后点击应用,会有提示网络以连接
![](https://img-blog.csdnimg.cn/img_convert/0a128bd2d3d27e4dc557e9ef2cbe26ff.png)
(2)设置电脑端IP
![](https://img-blog.csdnimg.cn/img_convert/2d9af49362fec3fb3e1ce56c11d46293.png)
注意电脑IP地址跟ployscope是不一样的,机器人的IP地址是192.168.1.10,是为了使电脑跟它处于一个局域网下,仅将最后一个小数点后面的那个设置得不一样即可,我设置成了192.168.1.11。IPV4选项设置如下图所示,点击应用即可。启动UR5机器人。
![](https://img-blog.csdnimg.cn/img_convert/aae88f0d7aad8b5c90c52390d8258d00.png)
(3)检验电脑和UR5机械臂网络是否连接成功
启动一个终端,并输入:
ifconfig
再测试连接情况:
ping 192.168.1.10
如下图代表电脑和UR5机械臂网络是否连接成功!下一步可进行ROS驱动UR5机械臂测试
![](https://img-blog.csdnimg.cn/img_convert/b7f4b829b9b6fbda9349219693864c53.png)
4、使用Moveit控制UR5机械臂
(1)第一个终端打开并输入:
roscore
(2)第二个终端打开,进入catkin_UR5文件夹目录(或第四章配置好的工作空间):
cd ~/catkin_UR5
//cd ~/catkin_ws //第四章保存的工作空间
(3)在此终端下,启动机器人驱动程序:
roslaunch ur_modern_driver ur5_bringup.launch limited:=true robot_ip:=192.168.1.10 use_lowbandwidth_trajectory_follower:=true
(4)第三个终端打开,进入catkin_UR5文件夹(或第四章配置好的工作空间)目录,启动 moveit :
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch limited:=true
//roslaunch **_moveit_config demo.launch limited:=true //第四章保存的文件
(5)第四个终端打开,进入catkin_UR5文件夹目录,启动 rviz:
roslaunch ur5_moveit_config moveit_rviz.launch config:=true
//roslaunch **_moveit_config moveit_rviz.launch config:=true //第四章保存的文件
接下来就可以在 rviz 中进行运动规划,并控制真实机器人按照规划的路径运动了。
(6)遇见的困难:
在rviz中进行运动规划时,可以规划成功,但机器人执行会失败。
开启rviz的终端显示:
![](https://img-blog.csdnimg.cn/img_convert/45edd1c8f592826b3c72eb782c138687.png)
开启moveit的终端显示:
![](https://img-blog.csdnimg.cn/img_convert/90f4015d6ff3c97ce9e1a4a2f4a0a33d.png)
解决方法:
将catkin_UR5/src/ur5_moveit_config/config/controllers.yaml文件中的action_ns字段的值修改为follow_joint_trajectory,重新执行使用Moveit控制UR5机械臂操作即可成功!
![](https://img-blog.csdnimg.cn/img_convert/40e21d1c539cde0310ebd30aaf4882a9.png)
六、遇到的问题与解决措施
1、roslaunch **_.launcn文件报错
错误信息如下:
RLException: [racecar.launch] is neither a launch file in package [racecar_gazebo] nor is [racecar_gazebo] a launch file name
The traceback for the exception was written to the log file
解决方法:
方案1:
回去再次编译:
catkin_make
添加环境变量:
source ./devel/setup.bash
方案2:
打开这个文件:
sudo gedit ~/.bashrc
在该文件的最后添加如下代码,catkin_ws为ros工作路径下的功能包
source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/
然后重启bashrc
source ~/.bashrc
再次roslaunch **_.launch文件就成功。