ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下

2023-05-16

**
1参考链接
**
(1)UR5、realsense手眼标定
(2)优遨机器人UR5与RealSense深度摄像头D435的手眼标定
(3)UR5、realsense手眼标定****

(4)标定所需二维码
(5)ROS下UR5、usb_cam单目外参标定(使用easy_handeye、眼在手上eye-in-hand)
(6)Ubuntu18.04 ROS手眼标定UR5之安装篇(亲测有效)

(7)UR5+ROS Kinetic+easy_handeye手眼标定教程(eye-to-hand)

2安装-----把所有的功能包放在一个工作空间下
(1)aruco_ros安装 ps注意对应的版本
$git clone https://github.com/pal-robotics/aruco_ros.git
( 通过-b kinetic-devel选择对应的ros版本)
安装aruco_ros时出现错误<具体为在编译ROS相关源码包的时候出现以下两种错误:
参考链接

opt/ros/kinetic/include/ros/internal/condition_variable.h:45:7: error: expected nested-name-specifier before 'condition_variable_monotonic'
using condition_variable_monotonic = boost::condition_variable;>

更改
解决办法:在终端输入
sudo gedit /opt/ros/kinetic/include/ros/internal/condition_variable.h
将第45行的
using condition_variable_monotonic = boost::condition_variable;
注释掉,并在下面添加一行
typedef boost::condition_variable condition_variable_monotonic;
保存即可。

(2)安装UR机械臂

 ur5源码编译
 源码编译ur5和ur_modern_driver
 cd ~/catkin_ws/src
git clone -b kinetic-devel https://github.com/ros-industrial/universal_robot.git
cd universal_robot (之所以下载ur_modern_driver是因为原始ur_driver版本的原因)
git clone -b kinetic-devel https://github.com/ros-industrial/ur_modern_driver.git

按照如下方式修改后:

将universal_robot路径下的ur_drive文件删除(即用ur_modern_driver替换了ur_drive)。
打开ur_modern_drive/src/ros/ur_hardware_interface.cpp文件。
修改语句,即如下所示(所有都要改):
controller_it->hardware_interface改为controller_it->type
stop_controller_it->hardware_interface改为stop_controller_it->type

然后编译
(3)然后我们安装vision_visp
在安装之前首先要按照以下步骤安装依赖包(注意版本号):

sudo apt-get install ros-kinetic-visp
cd ~/catkin_ws/src
git clone -b kinetic-devel https://github.com/lagadic/vision_visp.git
cd ..
catkin_make --pkg visp_hand2eye_calibration

(4)安装easy_handeye

cd ~/catkin_ws/src
git clone https://github.com/IFL-CAMP/easy_handeye
cd ..
catkin_make

(5)realsense D435相机 SDK和realsense_ros的安装方法
(5.1)安装RealSense SDK(可以单独建立一个工作空间)


```xml
****下载source(如果报错,把https改成git)****
git clone https://github.com/IntelRealSense/librealsense
cd librealsense
****安装依赖项****
sudo apt-get install libudev-dev pkg-config libgtk-3-dev libusb-1.0-0-dev pkg-config libglfw3-dev libssl-dev
****安装权限脚本****
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
****编译安装** 时间比较慢**
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install
插入realsense相机测试
realsense-viewer 

(5.2)安装realsense-ros 需在ur的一个工作空间下

git clone https://github.com/IntelRealSense/realsense-ros.git
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
cd ~/catkin_ws && catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
测试
roslaunch realsense2_camera rs_camera.launch

3修改标定launch文件
针对官方给出的标定launch文件进行修改,ubuntu下的文件路径 …/easy_handeye/docs/example_launch/ur5_kinect_calibration.launch
这个launch文件能够启动
launch文件修改1
launch文件修改2

<launch>
    <arg name="namespace_prefix" default="ur5_camera_handeyecalibration" />
 
    <arg name="robot_ip" doc="The IP address of the UR5 robot" />
		<!--<arg name="marker_frame" default="aruco_marker_frame"/>-->
    <arg name="marker_size" doc="Size of the ArUco marker used, in meters" default="0.1" />
    <arg name="marker_id" doc="The ID of the ArUco marker used" default="100" />
    <!-- start the camera -->
    <include file="$(find realsense2_camera)/launch/rs_camera.launch" />
    <!--    <arg name="depth_registration" value="true" />
    </include>-->
 
    <!-- start ArUco -->
    <!-- 注意:

Dictionary 一定要选 Original ArUco
marker_id 和 marker_size 自选,在 launch 文件中做相应的修改,本例中 marker_id 为 582,marker_size 为 0.1(单位:m)。
打印时,要选择原始大小,否则要测量一下打印出来的真实大小
-->
    <node name="aruco_tracker" pkg="aruco_ros" type="single">
        <remap from="/camera_info" to="/camera/color/camera_info" />
        <remap from="/image" to="/camera/color/image_raw" />
 
        <param name="image_is_rectified" value="true"/>
        <param name="marker_size"        value="$(arg marker_size)"/>
        <param name="marker_id"          value="$(arg marker_id)"/>
        <param name="reference_frame"    value="camera_link"/>
        <param name="camera_frame"       value="camera_link"/>
        <param name="marker_frame"       value="camera_marker" />
    </node>
 
    <!-- start the robot -->
    <!-- 注意:这里用了 ur_modern_driver 包,而没有用原始的 ur_bringup 包。修改机器人的真实 ip。-->
    <include file="$(find ur_modern_driver)/launch/ur5_bringup.launch">
        <arg name="limited" value="true" />
        <arg name="robot_ip" value="172.17.0.3" />
    </include>
    <include file="$(find ur5_moveit_config)/launch/ur5_moveit_planning_execution.launch">
        <arg name="limited" value="true" />
    </include>
 
    <!-- start easy_handeye -->
    <!-- 注意:<arg name="eye_on_hand" value="true"/> 眼在手上:value 为 false
tracking_base_frame 为相机坐标系 camera_color_frame。
tracking_marker_frame 是标志物的坐标系 camera_marker。
robot_base_frame 为机器人基座坐标系,示例里写的是 base_link,我在 rviz 中查看 base 才是真实的基座坐标系。
robot_effector_frame 是末端,为工具坐标系。-->
    <include file="$(find easy_handeye)/launch/calibrate.launch" >
        <arg name="namespace_prefix" value="$(arg namespace_prefix)" />
        <arg name="eye_on_hand" value="false" />
 
        <arg name="tracking_base_frame" value="camera_link" />
        <arg name="tracking_marker_frame" value="camera_marker" />
        <arg name="robot_base_frame" value="base_link" />
        <arg name="robot_effector_frame" value="wrist_3_link" />
 
        <arg name="freehand_robot_movement" value="false" />
        <arg name="robot_velocity_scaling" value="0.2" />
        <arg name="robot_acceleration_scaling" value="0.2" />
    </include>
 
</launch>
roslaunch easy_handeye ur5_realsense_handeyecalibration.launch
若显示无启动文件,则source一下。

其中界面①部分显示了UR5机械臂当前姿态和各坐标系的初始位姿;
界面②部分显示的是相机下ArUco标签码坐标系camera_mark的识别情况,红色为x轴,绿色为y轴,蓝色为z轴;
界面③部分规划机械臂位姿,使相机运动到不同的位姿以进行多次图像采样。

具体标定步骤如下:
1放置好标定物ArUco标签码,启动UR5机械臂、相机和标定程序;
2点击图中界面③中的check starting pose确定UR5机械臂本姿态下是否能够满足标定条件;
3点击界面③中的next pose生成UR5机械臂下一位姿,接着点击plan显示绿色能够规划出从当前位姿到下一位姿的路径后,点击execute执行操作,驱动UR5机械臂运动下一位姿状态;
4若此刻界面②中能够识别出标定物ArUco标签码,则点击界面②中的take sample采样,重复步骤(3)和(4),直到全部采样完毕,如下图所示,有效采样到的数据共十二次;
5采样完成后,点击界面②中的computer对所采样的数据进行计算,即可得到相机坐标系camera_color_frame和UR5机械臂末端工具坐标系tool0之间其次变换矩阵,为四元数表示形式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下 的相关文章

  • k8s(一)—pod管理、资源清单编写

    1 pod管理 k8s官方文档 root 64 server2 kubectl run nginx image 61 nginx 运行一个容器 xff0c 镜像为nginx pod nginx created root 64 server2
  • k8s(三)—控制器(replicaset、deployment、daemonset、job、cronjob)

    1 控制器简介 2 Replicaset控制器 root 64 server2 vim rs yaml apiVersion apps v1 kind ReplicaSet metadata name replicaset example
  • k8s(四)—service服务(暴露方式:ClusterIP、NodePort、LoadBalancer、ExternalName、ingress)

    1 service简介 2 开启kube proxy的ipvs root 64 server2 kubectl n kube system get pod grep proxy 每个节点都有haproxy kube proxy d6cp2
  • k8s(五)—容器间的网络通信

    1 同一节点不同pod之间的通信原理 root 64 server2 kubectl get pod o wide 查看pod 的ip NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NOD
  • k8s(七)—statefullset部署mysql主从集群

    1 使用statefullset部署mysql主从集群 mysql 0是master mysql 1和mysql 2是两个备份 当mysql写的时候 xff0c 找headless service中的mysql 0 mysql xff1b
  • k8s(十)— 资源限制(cpu、memory)

    1 k8s容器资源限制简介 2 k8s容器资源限制实施 2 1 内存限制示例 root 64 server1 docker search stress 搜索测试镜像stress NAME DESCRIPTION STARS OFFICIAL
  • k8s(十二)— HPA

    HPA官网 从最基本的角度来看 xff0c Pod 水平自动扩缩控制器根据当前指标和期望指标来计算扩缩比例 期望副本数 61 ceil 当前副本数 当前指标 期望指标 例如 xff0c 如果当前指标值为 200m xff0c 而期望值为 1
  • k8s(十四)—高可用集群部署

    1 部署k8s高可用原理图 2 清理环境 root 64 server2 helm kubectl drain server4 下线server4 root 64 server2 helm kubectl delete nodes serv
  • oracle数据库控制语言—DCL

    文章目录 1 授予系统权限1 1 授予创建其他对象权限 2 撤销系统权限2 1 示例 3 oracle 中的角色3 1 什么时角色3 2 创建角色并且授予权限给角色3 2 1 创建角色3 2 1 1 示例 3 2 2 授予权限给一个角色3
  • 软件测试 | Django插入数据

    gt gt gt from datetime import datetime gt gt gt el 61 Event id 61 2 name 61 39 红米 Pro 发布会 39 xff0c limit 61 2000 status
  • oracle数据库的导入与导出

    文章目录 1 oracle数据库导入与导出需要注意2 导出数据格式介绍3 传统方式exp 导出 xff09 和 xff08 imp xff09 导入3 1 命令执行方式3 2 命令格式3 3 导出数据3 3 1示例 3 4 导入数据3 4
  • oarcle — ANY和ALL、行列转换、递归查询

    文章目录 1 在多行子查询中用ANY运算符1 1 示例 2 在多行子查询中用ALL运算符2 1 示例 3 行列转换3 1 建表3 2 插数3 3 列传行3 3 1 union all 实现列传行3 3 2 oracle 自带函数 3 4 行
  • 嵌入式学习规划

    一 STM32的单片机 1 学习stm32开发板 1 1 流水灯 学习内容 xff1a xff1a 工程建立 xff0c 库的使用 1 2 AD采集 学习内容 xff1a xff1a 学习AD 1 3 串口 学习内容 xff1a xff1a
  • UAV Ubuntu18.04 PX4环境搭建

    Ubuntu18 04 PX4环境搭建 设备 VMware WorkStation16 0pro Ubuntu18 04 虚拟机 参考链接 XTDrone团队的 xff1a 仿真平台基础配置 xff08 PX4 1 11版 xff09 ht
  • 无人机遥控器使用说明

    遥控器使用说明 21 06 09 激光雷达避障使用时候设置的通道 开机前检查 所有拨码开关拨到最上方 SWA SWB两个开关 暂时没用 主要使用SWC和SWD 开机 同时按下两个开机键开机 模式说明 现在使用的模式主要设置了四个 红框 SW
  • Jetson Tx2配置PX4飞控实机开发环境

    Jetson Tx2使用 设备 Jetson Tx2板卡 xff08 原装或者底板加核心板 xff09 带Ubuntu系统电脑或者虚拟机Tx2原装数据线HDMI显示器鼠标键盘 刷机 参考链接 1 使用NVIDIA SDK Manager刷机
  • Jetson Nano刷系统教程

    Jetson Nano使用 设备 Jetson Nano板卡64G SD卡 xff08 最小16G xff09 读卡器HDMI显示器鼠标键盘 刷机 格式化SD卡 使用SD卡格式化工具进行格式化 下载镜像 进入英伟达下载中心 xff1a ht
  • 【Windows下搭建深度学习环境之TensorFlow篇】一气呵成,五步搞定TensorFlow的安装!TensorFlow的安装之路

    TensorFlow的安装之路 0 安装前须知1 安装Anaconda1 1 什么是虚拟环境 xff1f 1 2 安装Anaconda具体步骤1 3 添加环境变量 xff08 系统变量 xff09 1 4 修改Conda库和pip库的安装源
  • 关于putty出现access denied的问题解决方案

    关于putty出现access denied的问题解决方案 1 网上也说了很多 比较多一点的就是修改PermitRootLogin 在linux终端terminal执行下面命令 sudo gedit etc ssh sshd config
  • [四旋翼无人机PID仿真(一)

    64 四旋翼无人机串级PID仿真 四旋翼无人机的数学模型的建立 xff1a 在建立模型的过程中 xff0c 采用了欧拉角来进行数学模型的建立 首先进行无人机结构以及飞行原理的分析 xff0c 然后进行系统建模 xff0c 在建模的过程中 x

随机推荐