Kinect2通过ROS标定
搞了将近半个月的驱动,终于把该弄的驱动问题全都搞定了
目前libfreenect2,iai-kinect2,ORB_SLAM2都能正常的跑起来,更进一步的问题来了,如何使用我们亲爱的kinect v2去完成我们的orb_slam2呢?让我们来慢慢研究研究
https://blog.csdn.net/wangshuailpp/article/details/75299865
首先肯定是先给相机做标定
https://github.com/code-iai/iai_kinect2/tree/master/kinect2_calibration
!
在实验室里面找到一块6x8x0.02的标定板
注意,6,8对应的是黑白格相邻的边的数量,我拿到的板子实际上是横着7个格子,竖着9个格子的,但是还是6x8x0.02。0.02是格子宽度
空格/s截屏
我这里对应执行rosrun kinect2_calibration kinect2_calibration record color circle6x8x0.02
以上是注意事项,翻译一下就是:
1.打印完标定棋盘后贴在一个平板上面,通过尺子确定一下标定板上黑白格的间距确实为2/3cm
2.搞两个三脚架,一个固定kinect2,一个固定固定标定板(然而根本没有这样的条件),拍照时一定要稳
3.检测到的时候会有彩色线覆盖在标定板上,然后按空格拍照
4.要从不同角度和不同距离拍标定板,凑够100张图每calibration set
5.从近往远做标定
6.把标定板放在画面左上角,右下角等等……
详细步骤
看上面也行,看下面的博客也行
https://blog.csdn.net/weixin_39928309/article/details/83047473
标定时如果成功识别了的话是会出现彩线的
我是放在了004797164947的文件夹下,标定的照片放在kinect_cal_data下面,这样标定的工作就算是再半个小时之内给我搞定了
之后再rosrun kinect2_bridge的时候会自动去找到标定的结果
https://blog.csdn.net/learning_tortosie/article/details/81157805
看了一下高翔的博客,他是直接自己魔改了kinect2_viewer,搓了段orb_slam的代码在里面来跑,有点恐怖,我暂时先不模仿
https://blog.csdn.net/learning_tortosie/article/details/79881165
将ORB_SLAM安装为ROS接口
https://blog.csdn.net/rainvictor1/article/details/72854137
这个里面提到的几个注意事项倒是挺重要的,就是不讲人话
1.修改节点
这里安装ORB_SLAM的ROS接口时给的提示
ORB-SLAM默认订阅的话题为/camera/image_raw,而usb_cam节点发布的话题为/usb_cam/image_raw,因此需要在ros_mono.cc中修改订阅的话题,这点要特别注意。因为源文件的更改必须要重新编译,这非常耗时。
第一个地方:在目录Example/ROS/ORBSLAM2/src/ros_rgbd.cc中:因为kinect发布的topic改变了,不是程序中默认的,所以需要改动,在启动
roslaunch kinect_bridge kinect_bridge.launch 后,执行rostopic list,查看发布的话题,本文为:
"/kinect2/hd/image_color"和"kinect2/hd/image_depth_rect"
按照以上博客的说法,其实就是要把默认订阅话题进行修改
在源代码中默认订阅为
Rgb_sub(nh,"/camera/gdb/image_raw",1)
Depth_sub(nh,"camera/depth_registered/image_raw",1)
对应修改成
Rgb_sub(nh,"/kinect2/hd/image_color",1)
Depth_sub(nh,"kinect2/hd/image_depth_rect",1)
下面的博客佐证了我的想法
下一步执行build_ros.sh,然后我就遇到了各种各样的麻烦,现在非常头疼,正在尝试重新git clone下来orb_slam2然后重新build一遍
顺便一提可能是因为我之前删了一些opengl有关的库,现在直接编译也是有一点小问题,缺少一个相关的依赖
git clone都没clone完,但是进度得要放一放了,下次来实验室得先clone完ORBSLAM2,然后按照上面说的重新修改一下代码,然后跑build_ros
需要在bashrc里面添加的
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/Path/ORB_SLAM2/Examples/ROS
我已经添加过了
标定的结果我已经放在kinect2_bridge/data/004797164947下面了