calibration包是利用手眼标定估计相机上Motion Capture的marker刚体和相机坐标系之间的变换Tmc(Camera中的点的坐标变换到Marker body坐标系中)的工具包,涵盖了4个独立程序:
collect_intrinsic_data:
a. 用于采集相机内参标定图像(按 's'/'S'键保存);
b. 需要设置Image_Topic
,以及输出保存路径;
c. 输出为保存的图片
以及形成的图片列表image_list.yaml
calibrate_intrinsic:
a. 基于opencv 的sample 修改成的相机内参标定程序;
b. 需要设置标定板的参数,以及图片列表路径;
c. 输出为内参标定结果calibrate_result.yaml
collect_hand_eye_data:
a. 将相机和Motion Capure的data stream进行时间戳对齐,并保存('s'/'S'按键)用于手眼标定;
b. 需要设置Image_Topic
,Motion Capture发布的位姿Marker_Pose_Topic
,以及保存路径;
c. 输出为保存的图片
以及形成的图片列表image_list.yaml
,以及相应的Marker姿态marker_poses.yaml
calibrate_hand_eye:
a. 采用多种方法进行手眼标定计算,得到Tmc, 并统计Twb = Twm . Tmc. Tcb(标定板坐标系在MC的世界坐标系中的位姿12个元素分别的误差统计(越小越好)
b. 设置相机内参文件路径calibrate_result.yaml
, 以及手眼标定的图片列表image_list.yaml
, 以及相应的Marker姿态marker_poses.yaml
c. 输出为手眼标定结果及误差统计,保存在handeye_result.yaml
中
代码需要在catkin工作空间中
下载calibration代码
cd ~/catkin_ws/src
git clone https://gitee.com/xubinlin/calibration/tree/master
CMakeLists.txt
。我采用前者,重新编译cv_bridge:cd ~/catkin_ws/src
git clone https://github.com/ros-perception/vision_opencv.git
cd vision_opencv
git branch -a
git checkout origin/melodic
export OpenCV_DIR=/usr/local/share/OpenCV
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release
使用的时候主要是修改Settings.yaml中的Topic名称,标定板参数,以及各个程序的输入、输出文件名及路径;
不一定要使用这个包的内参标定程序,但是手眼标定的时候需要有内参标定文件calibrate_result.yaml
,需要按照相应的格式手动更改数据;
代码运行指令:
## 内参
roslaunch kinect2_bridge kinect2_bridge.launch
rosrun calibration collect_intrinsic_data <PATH_TO_SRC>/Settings.yaml
rosrun calibration calibrate_intrinsic <PATH_TO_SRC>/Settings.yaml
##手眼标定
roslaunch kinect2_bridge kinect2_bridge.launch
roslaunch vrpn_client_ros sample.launch
rosrun calibration collect_hand_eye_data <PATH_TO_SRC>/Settings.yaml
rosrun calibration calibrate_hand_eye
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。