
Ubuntu20.04下vins-mono调用摄像头并跑通(D435i)
系统:Ubuntu 20.04ros:noetic相机:D435i。
目录
一、安装RealSense SDK2.0 (包括调用摄像头)
1)/realsense_ros/realsense2_camera/launch/rs_camera.launch
2)/VINS-Mono/config/realsense/realsense_color_config.yaml
又是从零开始,今天也在持续痛苦面具中
系统:Ubuntu 20.04
ros:noetic
相机:D435i
一、安装RealSense SDK2.0 (包括调用摄像头)
1、注册服务器公钥
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
2、服务器添加到存储库列表
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
3、安装SDK2
# 基础安装
sudo apt update
sudo apt install librealsense2-dkms
sudo apt install librealsense2-utils
# 选装
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
选装的命令行,如果用 apt 而不是 apt-get 可能会出现如下的错误:
4、测试结果
realsense-viewer
建议手动输入,不然可能会出现未找到命令的问题。
问题:
没有摄像头画面,查了一下发现虚拟机需要先调用外接摄像头。
解决办法1:(不一定有用,建议直接看2)
我用的虚拟机是 vbox
1)查虚拟机版本
在虚拟机管理器界面,选择 帮助-关于VirtualBox ,可以看到虚拟机版本
2)下载拓展包
①新版本
这里直接下
②旧版本
然后选择对应的版本,我是7.0.8
进去找到拓展包,点击下载
3) 安装拓展包
在vbox管理器界面
然后选择按顺序安装刚才下的拓展包,安装成功以后重启
4)测试
# 检查是否连接摄像头
ls /dev/video*
# 调用
# 方法一
sudo apt-get install cheese
cheese
cheese -d /dev/video5
# 方法二
sudo apt-get install -y xawtv
xawtv
xawtv -d /dev/video5
但是我两种办法都没有调用成功……就挺痛苦的
解决办法2:
查了一下,可能是usb接口版本不对
关闭虚拟机,在管理器页面选择 设置-USB设备
把这个选到3.0,灰色是因为我已经调过了,截图时没关虚拟机
ps:看看自己连得是usb2.0还是3.0,有时候检测不出设备可能换个接口就出来了
然后打开虚拟机(注意检查设备那里有没有勾选USB,找不见的重启试试看),继续用上面的调用方法,终于出来了
设备选的是USB不是摄像头!!!
设备选的是USB不是摄像头!!!
设备选的是USB不是摄像头!!!
喜极而泣的进行下一步
realsense-viewer
出来后没画面,但是有相机和选项了,点击左侧的on,出现画面了
Stereo Module——深度图
RGB Module——RGB影像
Motion Module——IMU相关数据
至此相机调试完毕
5、读相机参数
D435i的参数已经标好了的,直接读取就行,但这个是全部参数,后面修改文件的话用别的方法
二、安装realsense-ros
1、安装rgbd-launch
sudo apt-get install ros-noetic-rgbd-launch
2、源码安装
# 进入工作空间
cd ~/catkin_ws/src/
# 源码
git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
cd ..
#安装ddynamic_reconfigure
sudo apt-get install ros-noetic-ddynamic-reconfigure
# 编译
catkin_init_workspace
cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
# 添加环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
3、验证
1 )启动相机节点
roscore
roslaunch realsense2_camera rs_camera.launch
2 )查看话题列表
rostopic list
有一堆话题(但是咱也看不太懂)
3 )查看rgb图和深度图
rosrun rqt_image_view rqt_image_view
这里可以调不同的影像,如果没有显示画面就是这里没有调
三、运行vins-mono
1、修改文件
1)/realsense_ros/realsense2_camera/launch/rs_camera.launch
①第43,44行,打开imu流
②第52行,开机相机和IMU的同步
③第64行,让IMU的角速度和加速度作为一个topic输出
保存退出,顺便检查一下输出话题是否含有/camera/imu
roslaunch realsense2_camera rs_camera.launch
rostopic list
2)/VINS-Mono/config/realsense/realsense_color_config.yaml
①第4,5行,修改订阅的topic
②第11,12行,第19-22行,修改相机内参
先打开终端读一下相机内参
# 运行realsense
roslaunch realsense2_camera rs_camera.launch
# 获取内参
rostopic echo /camera/color/camera_info
友情提示,因为获取内参是一直在进行的,为了方便观察,可以适当关闭第一个终端让获取过程停止
主要修改一下红框里的内容,其中K里的非零数依次为fx,cx,fy,cy
我自己改成科学计数法了,为了一致性,不改应该也行
③第25行,IMU到相机的变换矩阵,不知道外参选2(自动修正)
④第59-62行IMU参数,全部改成后面注释给的参数
重力加速度我按照我的地区改了,如果不想改就直接9.8
⑤第72行,在线估计同步时差,因为realsense D435i已经做好了硬件同步,改成0(不需要)
⑥第76行,相机曝光改成0(全局曝光)
⑦第7,69行,改成自己的路径
保存关闭
2、重新编译
cd ~/catkin_ws
catkin_make
3、添加环境变量
这步很重要,如果不添加环境变量,运行的时候就会报错报错报错(安详.jpg)
sudo gedit ~/.bashrc
在文件的末尾加上工作路径
source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/
# 重启
source ~/.bashrc
# 查询路径
echo $ROS_PACKAGE_PATH
4、运行
# 第一个终端
roslaunch realsense2_camera rs_camera.launch
# 第二个终端
roslaunch vins_estimator realsense_color.launch
# 第三个终端
roslaunch vins_estimator vins_rviz.launch
如果环境变量已经添加了,运行还是出现 RLException 这个报错的话,重启吧:)
结果如图
完毕~
四、参考文章
Ubuntu20.04LTS下安装Intel Realsense D435i驱动与ROS包
virtualBox虚拟机下的ubuntu16.04调用摄像头
Intel RealSense D435i:简介、安装与使用(ROS、Python)
virtualBox下安装的ubuntu20.04虚拟机打开外接摄像头后摄像头屏幕黑屏
T265/D435i相机和相机与IMU参数获取,也可以通过realsense-viewer直接获取
RLException: [xx.launch] is neither a launch file in package [x] nor is [x] a launch file name的解决方法
更多推荐
所有评论(0)