-
实验设备
UR3机械臂、Realsense d435i、笔记本电脑ubuntu20.04(ros noetic)、网线一根(笔记本和UR3连接)、USB3.0-typec线一根(笔记本和相机连接) -
参考博客
- http://t.csdnimg.cn/IYyWq
- http://t.csdnimg.cn/dr1fg
-
实验步骤
- src目录中下载必要的功能包并编译通过(编译不通过通常是缺包),具体见参考博客的第二个链接
- 依次执行以下命令
cd catkin_ws
source devel/setup.bash
- 打开四个标签页,依次启动这几个launch文件
roslaunch realsense2_camera rs_camera.launch
roslaunch ur_robot_driver ur3_bringup.launch robot_ip:=192.168.56.21 [reverse_port:=REVERSE_PORT] kinematics_config:=$(rospack find ur_robot_driver)/calibration/my_robot_calibration.yaml
(robot ip 根据自己的情况改,标定文件没有就不加,注意需要先执行这个命令接着在UR3示教器中打开external control)roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch limited:=true
roslaunch easy_handeye eye_in_hand_calibration1.launch
-
eye_in_hand_calibration1.launch 代码
-
路径 /home/xxx/catkin_ws/src/easy_handeye/easy_handeye/launch/eye_in_hand_calibration1.launch
<launch>
<arg name="namespace_prefix" default="ur3_realsense_handeyecalibration" />
<arg name="robot_ip" doc="The IP address of the UR3 robot" />
<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="582"/>
<!-- 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_frame"/>
<param name="camera_frame" value="camera_color_frame"/>
<!-- <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" /> -->
<param name="marker_frame" value="aurco_marker_frame" />
</node>
<!-- start the robot -->
<!-- <include file="$(find ur_robot_driver)/launch/ur3_bringup.launch">
<arg name="robot_ip" value="192.168.56.21" />
</include>
<include file="$(find ur3_moveit_config)/launch/ur3_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" />
<arg name="tracking_base_frame" value="camera_color_frame" />
<!-- <arg name="tracking_marker_frame" value="camera_marker" /> -->
<arg name="tracking_marker_frame" value="aurco_marker_frame" />
<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.5" />
<arg name="robot_acceleration_scaling" value="0.2" />
</include>
</launch>
-
实验过程
- 具体见参考博客的第二个链接
- 建议这个角度去标定,标定版板位置不动
-
开始时,出现0/17,注意并不是17个位姿都能拍到标定板,拍不到的不采样,我做了几次实验,最好的是有15个位姿能用
-
标定完成,compute save,得到机械臂末端坐标系和相机坐标系的转换矩阵