ROS 手眼标定 realsense435i+ur5e

2024-05-16 03:28

本文主要是介绍ROS 手眼标定 realsense435i+ur5e,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 手眼标定的原理

基坐标系(base_tree)和相机(camera_tree)两个坐标系属于不同的tree,通过将标签贴到手上,相机识别出标签的position和orention,并通过easy_handeye标定包得到tool0(机械手),进一步得到相对于base的位置关系。即子坐标系(camera_rgb_optical_frame)到父坐标系(base_link)之间的关系。

对于手眼标定,场景主要有以下两种,

    eye-to-hand,眼在手外。
    这种场景下我们已知机械臂终端end_link与base_link、相机camera_link与识别物体object_link之间的关系;
    需要求解camera_link与base_link之间的变换。

    eye-in-hand,眼在手上。
    这种场景base_link和机械臂各关节joint_link、end_link已经通过URDF发布了;
    只需要求解camera_link与end_link之间的变换。

在ros中相机的坐标系和相机光学成像坐标系是不一样的

安装librealsense

# 下载安装包
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense# 更新依赖库
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade# 安装依赖库
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev# 运行Intel Realsense许可脚本
./scripts/setup_udev_rules.sh# 下载并编译内核模块
./scripts/patch-realsense-ubuntu-lts.sh# 编译SDK2.0
cd librealsense
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install

测试是否安装完成

方式一:

cd examples/capture
./rs-capture

方式二:

realsense-viewer

安装librealsense-ros与easy_handeye

# 建立workspace
mkdir -p ~/realsense_ws/src
cd ~/realsense_ws/src/
catkin_init_workspace 
cd ..
catkin_make
echo "source ~/realsense_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc# 在realsense_ws/src/下载源程序
# 下载机械臂驱动
cd src
#安装realsense_ros
git clone https://github.com/IntelRealSense/realsense-ros.git
# catkin_make编译
cd ~/realsense_ws && catkin_makegit clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git Universal_Robots_ROS_Driver
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git fmauch_universal_robot# aruco
git clone -b noetic-devel https://github.com/pal-robotics/aruco_ros.git# vision_visp
git clone -b noetic-devel https://github.com/lagadic/vision_visp.git# easy_hand_eye
git clone https://github.com/IFL-CAMP/easy_handeye# 下载依赖
cd ..
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -y
# empy
pip install empy
# pyqt
pip install PyQt5# 编译
catkin_make                    

launch 文件配置:

标定过程需启动 ur5 机械臂的相关节点,realsense 节点,aruco 节点,easy_handeye 节点。

在xxx/realsense_ws/src/easy_handeye/easy_handeye/launch/eye_to_hand_calibration1.launch目录下,同时启动上述节点。

将launch文件修改成如下:

<launch><arg name="namespace_prefix" default="ur5_realsense_handeyecalibration" /><arg name="robot_ip" doc="The IP address of the UR5 robot" /><arg name="marker_size" doc="Size of the ArUco marker used, in meters" default="0.1" />#0.1为标定版的尺寸单位为m<arg name="marker_id" doc="The ID of the ArUco marker used" default="571"/>#571为自己所使用的标定版号<!-- start the realsen435 --><include file="$(find realsense2_camera)/launch/rs_camera.launch" ><!-- <arg name="depth_registration" value="true" /> --></include><!-- 2. start ArUco --><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_color_optical_frame"/><param name="camera_frame"       value="camera_color_optical_frame"/><param name="marker_frame"       value="camera_marker" /></node><!-- start the robot --><include file="$(find ur_robot_driver)/launch/ur5e_bringup.launch"><arg name="robot_ip" value="192.168.1.11" />#value值为所使用机器人的ip</include><include file="$(find ur5e_moveit_config)/launch/ur5e_moveit_planning_execution.launch"></include><!-- 4. start easy_handeye --><include file="$(find easy_handeye)/launch/calibrate.launch" ><arg name="namespace_prefix" value="$(arg namespace_prefix)" /><arg name="eye_on_hand" value="true" />#使用眼在手上,value值为true,若使用眼在手外,则value=false<arg name="tracking_base_frame" value="camera_color_frame" /><arg name="tracking_marker_frame" value="camera_marker" /><arg name="robot_base_frame" value="base" /><arg name="robot_effector_frame" value="wrist_3_link" /><arg name="freehand_robot_movement" value="false" /><arg name="robot_velocity_scaling" value="0.5" /><arg name="robot_acceleration_scaling" value="0.2" /></include></launch>

1、Realsense435i节点
把rs_camera.launch文件<include>导入
2、ArUco节点

    修改:/camera_info / /image / reference_frame 和 camera_frame
    从https://chev.me/arucogen/中下载aruco二维码并打印出来
    注意:
     Dictionary 一定要选 Original ArUco
     Marker ID 和 Marker size 自选,在launch 文件中做相应的修改
     打印时注意选择原始大小,否则要测量一下打印出来的真实大小

3、easy_handeye节点

    <arg name="eye_on_hand" value="true"/> :眼在手上时,value 为 true
    tracking_base_frame :为相机坐标系 camera_color_frame
    robot_base_frame :为机器人基座坐标系,示例里写的是 base_link,我在 rviz 中查看 base 才是真实的基座坐标系
    robot_effector_frame:为工具坐标系,因为我安装了 robotiq相机/力传感器和夹爪,所以TCP 改变了

启动该launch文件进行手眼标定

cd realsense_wc
roslaunch easy_handeye eye_to_hand_calibration1.launch

出现如下窗口:

在启动的rvize中添加image,确认可以识别出aruco码。

同时在如下两个窗口进行标定

 在第三个窗口点击next pose -> plan -> execute,当点完 plan ,出现绿色框,则说明规划成功,然后可以点击 execute让机械臂执行动作

然后在第二个窗口,点击take sample采样

17个动作执行完成,回到第二个界面,点击compute,然后出现结果的姿态矩阵,然后可以点击save保存 

参考链接:

[1]ros realsense ur5手眼标定_realsense 坐标系-CSDN博客

[2]UR+RealSense手眼标定(eye-to-hand)_normalizeimageillumination is unimplemented!-CSDN博客

这篇关于ROS 手眼标定 realsense435i+ur5e的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993739

相关文章

ROS - C++实现RosBag包回放/提取

文章目录 1. 回放原理2. 回放/提取 多个话题3. 回放/提取数据包,并实时发布 1. 回放原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv,

ROS - C++实现RosBag包录制

文章目录 1. 录制原理2. 录制多个话题3. 订阅ROS消息,实时录制 1. 录制原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv, "reco

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files

解析apollo纵向控制标定表程序

百度apollo采用标定表描述车辆速度、加速度与油门/刹车之间的关系。该表可使无人车根据当前车速与期望加速度得到合适的油门/刹车开合度。除了文献《Baidu Apollo Auto-Calibration System - An Industry-Level Data-Driven and Learning based Vehicle Longitude Dynamic Calibrating

Ubuntu20.04+ros-noetic配置Cartographer

一、概述         因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 (一)概述         使用平台是Windows的wsl2上的Ubuntu20.04子系统,双系统与虚拟机的安装原理与这个相同。主要依照的安装操作是官方文档,链接如下所示。 Runni

halcon 的图像坐标转到实际的机械坐标的标定

所谓手眼系统,就是人眼睛看到一个东西的时候要让手去抓取,就需要大脑知道眼睛和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的关系知道,B和C的关系知道,那么C和A的关系就知道了,也就是手和眼的坐标关系也就知道了。 相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。 在实际控制中,相机检测到目标在图像中的像

ROS学习记录-ubuntu系统和ROS的安装

一、ubuntu安装 使用的是ubuntu14.04.4系统,从官网下载,也可以从国内镜像下载。 官网:http://cdimage.ubuntu.com/netboot/14.04/?_ga=1.178505383.2009389272.1483453317 国内镜像 网易:http://mirrors.163.com/ubuntu-releases/14.04/ 厦大:http://

linux(ubuntu)安装QT-ros插件

Linux下的qt安装ros插件 查看qt版本和对应的ros插件版本查看qt版本查看 qt creator 版本 qt creator进行更新升级下载版本对应的ros_qtc_plugin 插件插件安装安装成功 查看qt版本和对应的ros插件版本 想要qt与ros联合开发,我门需要在qt creator中添加ros的插件,之前查资料有哦 一个方法是直接下载安装带有ros插件版本的

roscore等ros命令执行后终端无输出,无反应

现象 在终端中输入 roscore 等 ros 命令,终端无输出,无反应。但是,Ctrl+C后终端还是有输出的。 解决措施 打开.barshrc文件 gedit ~/.bashrc 修改ROS_HOSTNAME和ROS_MASTER_URI变量的赋值语句,如果有ROS_IP变量也需要修改。用 localhost 替代具体的 IP地址。 修改前。 export ROS_HOSTNAM