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

一、Android 工具下载

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

下载命令:

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

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

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

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

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

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

cd Android_Camera-IMU

roslaunch android_cam-imu.launch

 手机端连接:

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

二、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<unistd.h>

 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

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

 其他报错也可以参考:

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

 

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

 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/

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

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

 四、运行

使用安卓手机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

 

 


参考文献:

 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

DroidCam 可以让运行安卓系统的手机作为PC的摄像头使用,通过wifi,蓝牙,USB等通讯方式,实现Linux外部加载摄像头功能.要求手机PC处于同一局域网内. 需要分别安装PC端安卓端软件方可运行.PC端支持Linux系统windows系统. 手机端apk文件可从本文中进行下载 以下是Ubuntu 14版本下的安装步骤:(亲测成功) 1, 确认 gcc, make, linux-headers已经在您的系统中进行了安装, 如果没有可以通过以下命令安装:sudo apt-get install gcc make linux-headers-`uname -r` 2,在控制台终端使用以下命令安装 Droidcam 在Linux。 cd /tmp/ bits=`getconf LONG_BIT` file="droidcam_081219_${bits}bit.tar.bz2" wget "https://www.dev47apps.com/files/linux/$file" [[ ${bits} == "32" ]] && checksum=661effc75e2772f20466e738027a16d4 [[ ${bits} == "64" ]] && checksum=eb676cd06c92a722ab8b3c4c771baf94 echo "${checksum} ${file}" | md5sum -c -- 以上步骤如果没问题,请继续执行以下命令 tar xjf $file cd droidcam-${bits}bit/ sudo ./install 3, 使用以下命令,确认Linux内核在v4.0或以上版本, gcc版本在 v4.9或以上版本 uname -r # prints linux version gcc -v # prints gcc version 4,一旦以上步骤没有问题, 可以执行 lsmod 查看到 ‘v4l2loopback_dc’ 表示安装成功! 5,执行droidcam 打开客户端。 此时确保手机端也打开了 对应应用程序, 输入IP地址即可开始连接
运行ORB-SLAM3时是否需要使用IMU,可以根据具体需求来确定。根据引用[3]中的描述,ORB-SLAM3可以在带有或不带有IMU的立体或单眼摄像头上运行,并且还可以在带有或不带有IMU的鱼眼立体或单眼摄像头上运行。所以,如果你想在运行ORB-SLAM3时使用IMU,可以选择带有IMU的摄像头。如果你不需要使用IMU,则可以选择不带有IMU的摄像头。请注意,IMU是惯性测量单元的缩写,它可以提供加速度计陀螺仪等传感器的数据,用于定位导航。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Ubuntu 18.04配置ORB-SLAM2ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+SLAM相关库的安装](https://blog.csdn.net/zardforever123/article/details/127138151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [ORB_SLAM3:ORB-SLAM3](https://download.csdn.net/download/weixin_42168902/18556983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值