Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定

一、本文运行环境

Ubuntu18.04

ROS melodic(安装Universal Robot,并且使用ur_robot_driver)

机械臂驱动包括:

melodic-devel的Universal Robot链接https://github.com/ros-industrial/universal_robot/tree/melodic-devel

ur_robot_driver的链接https://github.com/UniversalRobots/Universal_Robots_ROS_Driver

相机驱动包括:

libfreenect2, which is ubuntu下的kinect2相机驱动

iai_kinect2, which is a bridge between libfreenect2 and ROS

安装教程Ubuntu 18.04 安装iai_kinect2遇到的问题_wyf187的博客-CSDN博客

标定程序包括:

aruco_ros

easy_handeye

以及一些相关依赖

二、标定程序安装教程

1. 安装aruco_ros,下载地址https://github.com/pal-robotics/aruco_ros/tree/2.1.4

2. ****重要****

melodic下aruco_ros的版本选择tag里2.1.4的版本,最新的版本有bug会报错

如果你最后运行时显示错误为!isValid(): invalid marker. It is not possible to calculate extrinsics in function calculateExtrinsics,然后显示的是~/ur_ws/src/aruco_ros-2.1.4/aruco/src/aruco/marker.cpp报错,那么请把aruco的包删除,melodic用aruco 2.1.4的版本重新安装,noetic可能是3.03的版本.

3. 解压到~/工作空间/src/

4.catkin_make

5. 安装easy_handeye下载链接https://github.com/IFL_CAMP/easy_handeye

6. 解压到~/工作空间/src/

7. catkin_make

8.  安装vision_visp 下载链接https://github.com/lagadic/vision_visp/tree/melodic-devel

9. 解压到~/工作空间/src/

10. catkin_make

三、系统软件的安装

标定需要用到一些python的库和rqt,所以安装一下必备组件

1. sudo apt-get install python-pip

2. pip install pip确保自己pip是最新版本不然可能pip不了

3. pip install transforms3d

4. sudo apt-get install ros-melodic-moveit-commander有时候会报错没有moveit-commander,所以安装一下

5. pip install opencv-contrib-python 这个是python的opencv库,也是必要的,ros里可能自带了opencv但是python里不一定有

6. sudo apt-get install ros-melodic-rqt

sudo apt-get install ros-melodic-rqt-common-plugins

这两个都是用来更新rqt版本的,确保自己rqt能打开image view界面就行

运行roscore

新终端运行rosrun rqt_image_view rqt_image_view

显示

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第1张图片

就是没问题

四、标定步骤

1. 打印aruco标签,网址https://chev.me/arucogen/,Dictionary选择Original ArUco,本文marker ID选取100,Markersize选取0.1m

2. 把打印好的标签贴在末端,这个位置是没有要求的,因为计算的时候选取的都是相对值。保证标签表面平整,连接牢固即可

3. 编写.launch文件

进入easy_handeye安装的根目录,找到/easy_handeye/launch,空白处右击终端打开

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第2张图片

输入touch ur_calibrate.launch新建空白.launch文件

双击进入ur_calibrate.launch

我编写的.launch文件代码如下,供参考


    
 
    
		
    
    
    
    
    
 
    
    
        
        
        
        
        
        
        
        
    
 
    
    
        
    
    
    
 
    
    
        
        
 
        
        
        
        
 
        
        
        
    
 

 把robot_ip改成你自己的,marker_size和marker_id改成你选用的,注意size的单位是米。我用的是ur_robot_driver

完了以后保存,cd ~/工作空间

catkin_make

source ~/工作空间/devel/setup.bash

为了方便起见,在主目录下ctrl+H显示隐藏文件,进入.bashrc,在最后一行添加

source /home/wyf/ur_ws/devel/setup.bash

省得每次都需要source

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第3张图片

4. 打开ur5,连接至网络

运行roscore

运行roslaunch easy_handeye ur_calibrate.launch

完了以后等1秒钟左右,点击示教板上运行外部控制的程序ur5_externalcontrol

成功后应该弹出三个界面,缺一不可

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第4张图片

打开新终端运行rqt

选择plugins->visualization->image view

底下选择/aruco_tracker/result

看到标定板的坐标出现表示没有问题

在rviz中把fixed frame改成base_link,应该可以在3d界面中看到关节和相机的位姿

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第5张图片

5. 依次点击nextpose->plan->excute,观察到机械臂运行到为后,点击take sample

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第6张图片

6.循环采集17个点后,点击compute

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第7张图片

7. 如图,即可得到标定后的矩阵,可以用来计算相机坐标与机械臂坐标之间的转换啦!!!

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第8张图片

Ubuntu18.04下UR5机械臂与kinect2(kinect for xbox ONE)相机的标定_第9张图片

其中translation代表平移,rotation代表姿态,用四元数表示,终端里也同时给出了其相对应的齐次矩阵。其中四元数旋转的物理意义可以看下面这个博文。用四元数表示旋转优点在于参数较少

 四元数旋转的物理意义以及代码实现-偏应用向_hehedadaq的博客-CSDN博客_四元数物理意义

 

你可能感兴趣的:(ubuntu)