D435i运行VINS
从零开始使用Realsense D435i运行VINS-Mono
- 从零开始使用Realsense D435i运行VINS-Mono
- (1)安装测试librealsense SDK 2.0
- (2)安装测试realsense
- (3)安装测试VINS-Mono
- (4)在D435i上运行VINS-Mono
从零开始使用Realsense D435i运行VINS-Mono
这次测试D435i过程还是比较顺利的,仅仅花了一个下午就搞定了,比之前测试ZR300和SR300要好多了,下面是我用D435i跑VINS-Mono的全过程(没啥技术含量),首先说下我的电脑配置,
我的电脑的配置:
CPU:Intel® Core™ i5-4590 CPU @ 3.30GHz × 4
内存:11.7 GiB
显卡:GeForce GTX 750 Ti/PCIe/SSE2
系统版本:Ubuntu16.04
系统内核:4.15.0-47-generic(命令:cat /proc/version)
ROS版本:Kinetic
(1)安装测试librealsense SDK 2.0
librealsense SDK相当于相机的驱动,SR300和ZR300的支持驱动是librealsense SDK 1.0,而D435i是librealsense SDK 2.0,貌似一台电脑上不能同时装两个SDK,所以要注意下。SDK的安装方式有两种,一个是从源码编译安装,一个是直接命令行安装,之前librealsense SDK 1.0我采用的是从源码编译安装,感觉比较麻烦,所以这次用尝试下了直接命令行安装,没想到出乎意料地顺利。
官方安装教程Intel® RealSense™ SDK 2.0,这里我把当回搬运工:
- 注册公匙
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE
- 1
- 添加repositories(Ubuntu 16 LTS)
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u
- 1
- 安装library
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
- 1
- 2
- 安装developer和debug packages
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
- 1
- 2
- 测试SDK
realsense-viewer
- 1
运行完上面测试命令之后会弹出来一个看上去还满酷的SDK界面,打开三个按钮可以看到RGB、双目和IMU的结果就证明你的SDK装成功了。
(2)安装测试realsense
这个realsense指的是对应的realsense相机的ROS包,官方教程如下ROS Wrapper for Intel® RealSense™ Devices
这里就很简单啦,先进入你的ROS工作空间
cd ~/catkin_ws/src
git clone https://github.com/intel-ros/realsense.git
cd ..
catkin_make
rospack profile
source devel/setup.sh
- 1
- 2
- 3
- 4
- 5
- 6
然后运行(不加filters:=pointcloud好像没有点云的节点)
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud
- 1
打开rviz,添加PointCloud2的mudule就可以看到点云,如下
(3)安装测试VINS-Mono
这一步先用数据集测试VINS-Mono
同样,进入你的ROS工作空间
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ..
catkin_make
source ~/catkin_ws/devel/setup.bash
- 1
- 2
- 3
- 4
- 5
这里编译可能需要安装ceres,安装ceres的步骤自行百度就好,编译源码的同时可以把数据集给下了,测试用的bag文件会比较方便,数据集地址
然后打开三个terminal,分别运行
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play MH_01_easy.bag
- 1
- 2
- 3
结果如下图
有趣的是,数据集里面可以看到测试人员开始的时候拿着摄像头前后左右晃了晃,这个应该是给IMU初始化用的。
(4)在D435i上运行VINS-Mono
前面都测试好之后就可以再D435i上运行VINS-Mone了,这里特地感谢下博客如何用Realsense D435i运行VINS-Mono等VIO算法 获取IMU同步数据的作者Manii,让这个过程变得非常简单,如果大家需要对这个过程有一个更加详细的了解可以去参考那个博客,研究出来下面的步骤还是挺费时间的,这里我简单说下流程:
- 修改realsense包里的rs_camera.launch文件
第一处,修改unite_imu_method如下,这里是让IMU的角速度和加速度作为一个topic输出
<arg name="unite_imu_method" default="copy"/>
- 1
第二处,修改enable_sync参数为true,这里是开机相机和IMU的同步
<arg name="enable_sync" default="true"/>
- 1
- 修改VINS-Mono包里的realsense_color_config.yaml文件
第一处,修改订阅的topic
imu_topic: "/camera/imu"
image_topic: "/camera/color/image_raw"
- 1
- 2
第二处,修改相机内参,这里先再次打开运行realsesne包,然后可以通过如下命令获取相机内参
rostopic echo /camera/color/camera_info
- 1
第三处,IMU到相机的变换矩阵,这里我根据注释的提示修改成2
# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 2 # 0 Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.# 1 Have an initial guess about extrinsic parameters. We will optimize around your initial guess.# 2 Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning.
#If you choose 0 or 1, you should write down the following matrix.
- 1
- 2
- 3
- 4
- 5
第四处,IMU参数,这里我全部修改注释给的参数
#imu parameters The more accurate parameters you provide, the better performance
acc_n: 0.2 # accelerometer measurement noise standard deviation. #0.2
gyr_n: 0.05 # gyroscope measurement noise standard deviation. #0.05
acc_w: 0.02 # accelerometer bias random work noise standard deviation. #0.02
gyr_w: 4.0e-5 # gyroscope bias random work noise standard deviation. #4.0e-5
g_norm: 9.80 # gravity magnitude
- 1
- 2
- 3
- 4
- 5
- 6
第五处,是否需要在线估计同步时差,根据上述博主的建议这里选择不需要
#unsynchronization parameters
estimate_td: 0 # online estimate time offset between camera and imu
td: 0.000 # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)
- 1
- 2
- 3
第六处,相机曝光改成全局曝光
#rolling shutter parameters
rolling_shutter: 0 # 0: global shutter camera, 1: rolling shutter camera
rolling_shutter_tr: 0 # unit: s. rolling shutter read out time per frame (from data sheet).
- 1
- 2
- 3
3. 打开摄像头,运行VINS-Mono
roslaunch realsense2_camera rs_camera.launch
roslaunch vins_estimator realsense_color.launch
roslaunch vins_estimator vins_rviz.launch
- 1
- 2
- 3
结果如下:
步骤到此就结束啦,五一假期闲着没事在实验室测试了下VINS,之后好好学习下原理读下源码,如果可以的话应用到自己项目中来。
</div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet"></div>
D435i运行VINS相关推荐
- 在 NVIDIA jetson tx2 上基于 realsense d435i 相机运行 vins 相关配置
在 NVIDIA jetson tx2 上基于 realsense d435i 相机运行 vins 相关配置 一.tx2刷机 二.安装librealsense,realsense驱动 1.安装依赖库 ...
- 从零开始使用Realsense D435i运行VINS-Mono
从零开始使用Realsense D435i运行VINS-Mono 从零开始使用Realsense D435i运行VINS-Mono (1)安装测试librealsense SDK 2.0 (2)安装测 ...
- 2 用D435i运行VINS-fusion
文章目录 1 VINS-fusion的安装 1.1 环境和依赖的安装 1.2 编译VINS-Fusion 1.3 编译错误解决方法 2 VINS-Fusion跑数据集 3 用相机运行VINS-Fusi ...
- Realsense D435i 运行 Vins-fusion
无人机控制和规划都需要定位信息,飞控输出的位置信息一是精度低,二是室内环境无法使用,三是本身有漂移.港科大高飞博士在其最近的路径规划文章中均使用d435i跑vins来提供位置和姿态信息,本文记录整个调 ...
- 视觉SLAM——D435i运行ORB-SLAM3-mono(依赖ros版)
一.下载和编译ORB_SLAM3 git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod +x build.s ...
- 视觉SLAM——D435i运行ORB-SLAM2-RGB-D(依赖ros版)
我的.bashrc文件配置 我自己遇到的错误 配置相机内参 D435i.yaml %YAML:1.0#------------------------------------------------- ...
- 的环境下 qt 运行在_Ubuntu16.04环境下运行vins mono(环境配置及编译)之ROS kinetic的安装...
所需环境:ubuntu16.04+ROS kinetic+opencv 3.3.1+eigen3.3.3+ceres solver 1.14 1.ROS Kinetic 的安装 (1)设置source ...
- VINS on RealSense D435i
关于Realsense D435i运行VINS系列 前言 在SLAM中,主要是以激光SLAM和视觉SLAM为主,激光雷达直接可以获取三维点云坐标信息,所以激光SLAM会比视觉SLAM稳定许多,但是由于 ...
- realsense d435i标定imu与camera
realsense d435i标定imu与camera 1.标定目的 realsense d435i包含两个红外相机.红外发射器.RGB相机和IMU四个模块,显然四个传感器的空间位置是不同的,我们在处 ...
最新文章
- 16. Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】
- 存储过程如何处理异常
- 关于使用python的open函数时报No Such File or DIr的错误
- mysql 存储地理信息_使用Amazon Aurora存储和处理地理信息数据
- Linux下安装Tomcat7
- 游戏玩家的留存率统计SQL实现
- 【BZOJ1899】[Zjoi2004]Lunch 午餐 贪心+DP
- Windows 下更换pip源为阿里源
- Python的GUI框架PySide
- CCIE-LAB-第四篇-OSPFv2+SHA384+BFD
- Mac text edit pdf reader
- java qlv转mp4 代码_如何将QLV视频格式转换成MP4视频
- 人脸美化随笔1——研究方向总结
- 智渔课堂官方免费教程二十六:Java基础教程之数组
- windows server 远程登录后总是出现屏幕键盘,烦死人了
- 在Linux中连接和使用云存储的三种途径
- tomcat乱码_中文乱码
- 七夕,眼光长远点,聊点孩子的事?
- uboot研读笔记 | 13 - uboot编译构建Makefile分析研读(2016.03版本)
- vim的下载安装与基本使用
热门文章
- 商业模式是利益相关者的交易结构
- FAT16文件系统解析(C 版本)
- 刷卡分期的套路有多深?信用卡、花呗、白条没有善人
- 如何用计算机算p,App Store 上的“计算器++P”
- 道德引擎——灾难来临,你够资格登上诺亚方舟?墨尔本大学《java面向对象》结辩作业
- Snovio软件怎么用?请看这篇邮件群发平台使用指南
- 笔记本不能用无线网策略服务器,明明有无线网笔记本就是搜索不到怎么处理
- 步骤条的实现原理及AliceUI中步骤条Step的应用
- 使用Python rembg库进行抠图:一行命令就搞定
- 软件测试——前言介绍