Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2

一、Android 工具下载

1、下载Android_Camera-IMU,将其中的Camera-Imu.apk文件发送至手机端进行安装。

下载命令:

git clone https://github.com/hitcm/Android_Camera-IMU.git

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第1张图片

 发送至手机的文件在手机端安装以后的软件

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第2张图片

 在手机端安装好以后的软件如下:

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第3张图片

 2、安装功能依赖包:sudo apt-get install ros-melodic-imu-tools  # 修改对应自己的 ROS 版本

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第4张图片

3、连接手机相机一个终端输入命令:roscore

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第5张图片

打开另一个终端输入命令:ip address 查看ip地址,并输入以下命令:

cd Android_Camera-IMU

roslaunch android_cam-imu.launch

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第6张图片

 手机端连接:

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第7张图片

4、显示 image,需要 Add - By topic - 添加/camera/image_raw/image 显示 imu,则需要 Add - By topic - 添加 imu,且在 Fix Frame 中 将 map 改为 imu。

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第8张图片

二、ORB-SLAM2下载编译

1、在/catkin/src/目录下安装ORB-SLAM2:

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

进行编译:

chmod +x build.sh

./build.sh

 编译时出现usleep的错误,需要在以下文件中添加 #include

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第9张图片

 2、因为需要在ROS环境下运行ORB_SLAM2所以要执行下面命令:

chmod +x build_ros.sh

sudo  gedit ~/.bashrc

添加,其中/home/zj/catkin_ws/src/需要根据自己下载的位置进行修改:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/zj/catkin_ws/src/ORB_SLAM2/Examples/ROS

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第10张图片

如果输入命令:./build_ros.sh  出现Cmake的报错,出现报错需要在/catkin/src/ORB_SLAM2/Examples/ROS/ORM_SLAM2/目录下的CmakeLists.txt文件中以下内容修改为自己的OPENCV版本:

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第11张图片

 其他报错也可以参考:

https://blog.csdn.net/weixin_45137708/article/details/105650078https://blog.csdn.net/sinat_33297498/article/details/88777422

 三、相机标定

 1、安装相机校准功能包:

sudo apt-get install ros-melodic-camera-calibration

再输入:

sudo apt-get install libcanberra-gtk-module

终端一:

roscore

终端二:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/camera/image_raw camera:=/camera --no-service-check

 Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第12张图片

2、标定过程如下所示,在GUI屏幕的右侧,可以看到一个标有X、Y、Size和Skew的条形控件。这是校准 的进展状态,都以绿色填满意味着校准完成。在校准过程中需要将棋盘对着相机朝着左/ 右/上/下/前/后移动,还需要倾斜棋盘。校准所需的所有图像都记录下来之后,CALIBRATE按钮会被激活。 点击这个按钮后会进行实际的校准计算。

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第13张图片

 3、上述步骤计算保存后:

打开另一个新的终端,创建一个包含相机校准参数的相机参数文件(camera.yaml)解压缩calibrationdata.tar.gz文件以查看图像文件(*.png)和记录了校准中使用的校准参数的ost.txt文件。 命令:  

cd /tmp  

tar -xvzf calibrationdata.tar.gz

 4、将ost.txt文件改名为ost.ini,并使用camera_calibration_parsers功能包 的convert节点创建相机参数文件(camera.yaml)。创建完成后,将其保存在~/.ros/camera_info/目录中,则ROS中使用的相机相关功能包会引用此信息。使用命令如下:

mv ost.txt ost.ini

rosrun camera_calibration_parsers convert ost.ini camera.yaml

mkdir ~/.ros/camera_info

mv camera.yaml ~/.ros/camera_info/

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第14张图片

 5、查看标定以后的文件内容如右图所示。 是相机内参矩阵,顺序为 fx, 0, cx; 0, fy, cy; 0, 0, 1。 是畸变参数,其顺序为 k1, k2, p1, p2, k3。

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第15张图片

6、然后在/catkin_ws/src/ORB_SLAM2/Examples/Monocular/目录下中新建一个配置文件 AndroidPhone.yaml,将 TUM1.yaml 的内容拷贝过来,并修改fx、fy、cx、cy、k1、k2、k3、p1、p2。

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第16张图片

 四、运行

使用安卓手机Camera和IMU信息运行ORB-SLAM2,手机端软件打开需要连接,电脑端命令如下:

终端一:

roscore

终端二:

cd Android_Camera-IMU

roslaunch android_cam-imu.launch

终端三:

rosrun ORB_SLAM2 Mono /home/zj/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/zj/catkin_ws/src/ORB_SLAM2/Examples/Monocular/AndroidPhone.yaml

 Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第17张图片

Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2_第18张图片

 


参考文献:

 https://blog.csdn.net/qqGHJ/article/details/127397326 https://blog.csdn.net/qq_42585108/article/details/104957092 https://blog.csdn.net/m0_48609250/article/details/125019291 https://www.cnblogs.com/MingruiYu/p/12404730.html https://blog.csdn.net/KID_yuan/article/details/101272481 https://blog.csdn.net/weixin_45137708/article/details/105650078 https://blog.csdn.net/sinat_33297498/article/details/88777422

你可能感兴趣的:(android)