搞了将近半个月的驱动,终于把该弄的驱动问题全都搞定了

目前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下面了