1 环境配置
1.1 visip
sudo apt-get install ros-melodic-visp
cd ~/catkin_ws/src
git clone https://github.com/lagadic/vision_visp.git
cd ..
catkin_make --pkg visp_hand2eye_calibration
1.2 aruco_ros
cd ~/catkin_ws/src
git clone https://github.com/pal-robotics/aruco_ros
cd ..
catkin_make
1.3 easy_handeye
https://github.com/IFL-CAMP/easy_handeye
cd ~/catkin_ws/src
git clone https://github.com/IFL-CAMP/easy_handeye
cd ..
rosdep install -iyr --from-paths src
catkin_make
1.4 moveit
sudo apt-get install ros-melodic-moveit
sudo apt-get install ros-melodic-trac-ik
2 验证
# 相机
roslaunch realsense2_camera rs_camera.launch
# 机械臂
roslaunch kinova_bringup kinova_robot.launch kinova_robotType:=j2n6s300
# moveit
roslaunch j2n6s300_moveit_config j2n6s300_demo.launch
3 标定过程
3.1 launch文件
在~/catkin_ws/src/easy_handeye/easy_handeye/launch文件夹下新建kinova_realsense.launch
文件内容:
<launch>
<arg name="namespace_prefix" default="kinova_d435i_handeyecalibration" />
<arg name="marker_size" value="0.1" />
<arg name="marker_id" value="582" />
<include file="$(find realsense2_camera)/launch/rs_camera.launch" >
</include>
<!-- 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_link"/>
<param name="camera_frame" value="camera_depth_optical_frame"/>
<!--<param name="camera_frame" value="_color_optical_frame"/>-->
<param name="marker_frame" value="camera_marker" />
</node>
<!-- start the robot -->
<include file="$(find kinova_bringup)/launch/kinova_robot.launch">
</include>
<include file="$(find j2n6s300_moveit_config)/launch/j2n6s300_demo.launch">
</include>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
</node>
<!-- 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="false" />
<arg name="tracking_base_frame" value="camera_link" />
<arg name="tracking_marker_frame" value="camera_marker" />
<arg name="robot_base_frame" value="j2n6s300_link_base" />
<arg name="robot_effector_frame" value="j2n6s300_link_6" />
<!--disable automatic robot movement-->
<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>
3.2 准备aruco码
https://chev.me/arucogen/
Dictionary: Original ArUco
Marker ID:582
Marker size:100
# 注:Marker ID 必须为~/catkin_ws/src/aruco_ros/aruco_ros/etc文件夹中存在的ID,且Dictionary必须为Original ArUco,生成pdf后,原尺寸打印
3.3 标定
(1) 将calibrate.launch文件中的第十三行move_group的default value改为arm
(2)运行kinova_realsense.launch,只能得到两个rviz图形界面,且报错原因不固定,一直在变,应该是python解释器版本冲突问题导致cv2导入出问题:
先
python -m pip install opencv-contrib-python
再运行launch,如果没解决:
# 打开文件 ~/catkin_ws/src/easy_handeye/easy_handeye/src/easy_handeye/handeye_calibration_backend_opencv.py
# 将
import cv2
# 改为
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')
(3)调不出image-view窗口:
# 另开窗口,运行:
rqt_image_view
# 话题选择/aruco_tracker/result
(4)eye on base:将aruco码固定在机械臂末端执行器上
(5)Cannot calibrate from current position:手动调整机械臂位置,调整一次,采样一次,采样17次后,点击compute,得到外参
参考链接
https://blog.csdn.net/miss_future/article/details/111826016
https://blog.csdn.net/weixin_45393946/article/details/103580657