参考文章了链接:
https://blog.csdn.net/zhang970187013/article/details/81098175
https://github.com/IFL-CAMP/easy_handeye/tree/master
https://blog.csdn.net/sinat_23853639/article/details/80276848
跑了一个星期参考文章,一点点推进但是一直有问题,各种乱七八糟节点冲突 没有发布话题 ,坐标系也老是跳,页面出现闪退的情况,干脆把文章写的launch前面的几步单独拎出来跑,没想到问题竟然就这样解决了...
IntelRealsense ZR300相机外参标定
首先,标定的原理是:基坐标系(base_tree)和相机(camera_tree)两个坐标系属于不同的tree,通过将标签贴到手上,相机识别出标签的position 和 orention,并通过hand_eye标定包得到marker_frame(机械手),进一步得到相对于base的位置关系。即子坐标系(camera_rgb_optical_frame)到父坐标系(base_link)之间的关系。在之后如果摄像头识别到物体的位置(在camera坐标系下),即可通过transform(这种转换关系),转化为base(也就是机器人知道的自己的位置坐标系)坐标系下的位置,这样机器人就通过转化关系得到相机识别到的位置实际在空间中的位置。
总体步骤为:
1.清除无关节点
#rosnode cleanup
2.启动相机驱动程序
#roslaunch realsense_camera zr300_nodelet_rgbd.launch
3.连接机器人
#roslaunch ur_control ur10_control.launch robot_ip:=192.168.2.24
4.启动moveit和rviz
#roslaunch ur10_rg2_moveit_config demo.launch
5.启动标定程序 launch节点
#roslaunch ur10_realsense_handeyecalibration.launch
launch文件经过修改后:(单独终端跑就解决了rviz老是闪退、坐标系跳动、采集错误等问题)
其中:start robot/robot222 以及前面的start realsense单独拎出来在节点里面跑,这样就解决了问题。
<launch>
<arg name="namespace_prefix" default="ur10_realsense_handeyecalibration" />
<arg name="robot_ip" doc="The IP address of the UR10 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 realsense -->
<!-- <include file="$(find kinect2_bridge)/launch/kinect2_bridge.launch" /> -->
<!-- <group ns="namespace1"> -->
<!-- <include file="$(find realsense_camera)/launch/zr300_nodelet_rgbd.launch" /> -->
<!-- <arg name="depth_registration" value="true" /> -->
<!-- </group> -->
<!-- </include> -->
<!-- start ArUco -->
<node name="aruco_tracker" pkg="aruco_ros" type="single">
<!-- <remap from="/camera_info" to="/kinect2/hd/camera_info" /> -->
<remap from="/camera_info" to="/camera/rgb/camera_info" />
<!-- <remap from="/image" to="/kinect2/hd/image_color_rect" /> -->
<remap from="/image" to="/camera/rgb/image_rect_color" />
<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="kinect2_rgb_optical_frame"/>
<param name="camera_frame" value="kinect2_rgb_optical_frame"/> -->
<param name="reference_frame" value="camera_rgb_optical_frame"/>
<param name="camera_frame" value="camera_rgb_optical_frame"/>
<param name="marker_frame" value="camera_marker" />
</node>
<!-- start the robot -->
<!-- <include file="$(find ur_modern_driver)/launch/ur10_bringup.launch">
<arg name="limited" value="true&#