realsense d455 运行vins-mono,vins-rgbd

2024-02-28 18:52

本文主要是介绍realsense d455 运行vins-mono,vins-rgbd,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GitHub - STAR-Center/VINS-RGBD

https://github.com/HKUST-Aerial-Robotics/VINS-Mono

读取realsense的内外参,也可以自己标定。

保证realsense-view安装成功,读取方法:

1.rs-enumerate-devices -c > realsense.txt

Extrinsic from "Color"	  To	  "Accel" :Rotation Matrix:0.999999         0.00110609       0.00129019    -0.00109996       0.999988        -0.00473814    -0.00129542       0.00473672       0.999988      Translation Vector: 0.028938414528966  0.00733212847262621  0.0157662034034729  Intrinsic of "Color" / 640x480 / {YUYV/RGB8/BGR8/RGBA8/BGRA8/Y16}Width:      	640Height:     	480PPX:        	327.825469970703PPY:        	241.276077270508Fx:         	383.595825195312Fy:         	382.700103759766Distortion: 	Inverse Brown ConradyCoeffs:     	-0.0555242449045181  	0.0690231919288635  	-0.000249441509367898  	0.000958832504693419  	-0.0218870621174574  FOV (deg):  	79.65 x 64.18

修改rs_camera.launch 文件

<launch><arg name="serial_no"           default=""/><arg name="usb_port_id"         default=""/><arg name="device_type"         default=""/><arg name="json_file_path"      default=""/><arg name="camera"              default="camera"/><arg name="tf_prefix"           default="$(arg camera)"/><arg name="external_manager"    default="false"/><arg name="manager"             default="realsense2_camera_manager"/><arg name="output"              default="screen"/><arg name="respawn"              default="false"/><arg name="fisheye_width"       default="640"/><arg name="fisheye_height"      default="480"/><arg name="enable_fisheye"      default="false"/><arg name="depth_width"         default="640"/><arg name="depth_height"        default="480"/><arg name="enable_depth"        default="true"/><arg name="confidence_width"    default="-1"/><arg name="confidence_height"   default="-1"/><arg name="enable_confidence"   default="true"/><arg name="confidence_fps"      default="-1"/><arg name="infra_width"         default="640"/><arg name="infra_height"        default="480"/><arg name="enable_infra"        default="false"/><arg name="enable_infra1"       default="false"/><arg name="enable_infra2"       default="false"/><arg name="infra_rgb"           default="false"/><arg name="color_width"         default="640"/><arg name="color_height"        default="480"/><arg name="enable_color"        default="true"/><arg name="fisheye_fps"         default="30"/><arg name="depth_fps"           default="30"/><arg name="infra_fps"           default="-1"/><arg name="color_fps"           default="30"/><arg name="gyro_fps"            default="-1"/><arg name="accel_fps"           default="-1"/><arg name="enable_gyro"         default="true"/><arg name="enable_accel"        default="true"/><arg name="enable_pointcloud"         default="false"/><arg name="pointcloud_texture_stream" default="RS2_STREAM_ANY"/><arg name="pointcloud_texture_index"  default="0"/><arg name="allow_no_texture_points"   default="false"/><arg name="ordered_pc"                default="false"/><arg name="enable_sync"               default="true"/><arg name="align_depth"               default="true"/><arg name="publish_tf"                default="true"/><arg name="tf_publish_rate"           default="0"/><arg name="filters"                   default="pointcloud"/><arg name="clip_distance"             default="-2"/><arg name="linear_accel_cov"          default="0.01"/><arg name="initial_reset"             default="false"/><arg name="unite_imu_method"          default="copy"/><arg name="topic_odom_in"             default="odom_in"/><arg name="calib_odom_file"           default=""/><arg name="publish_odom_tf"           default="true"/><arg name="stereo_module/exposure/1"  default="7500"/><arg name="stereo_module/gain/1"      default="16"/><arg name="stereo_module/exposure/2"  default="1"/><arg name="stereo_module/gain/2"      default="16"/><group ns="$(arg camera)"><include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml"><arg name="tf_prefix"                value="$(arg tf_prefix)"/><arg name="external_manager"         value="$(arg external_manager)"/><arg name="manager"                  value="$(arg manager)"/><arg name="output"                   value="$(arg output)"/><arg name="respawn"                  value="$(arg respawn)"/><arg name="serial_no"                value="$(arg serial_no)"/><arg name="usb_port_id"              value="$(arg usb_port_id)"/><arg name="device_type"              value="$(arg device_type)"/><arg name="json_file_path"           value="$(arg json_file_path)"/><arg name="enable_pointcloud"        value="$(arg enable_pointcloud)"/><arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/><arg name="pointcloud_texture_index"  value="$(arg pointcloud_texture_index)"/><arg name="enable_sync"              value="$(arg enable_sync)"/><arg name="align_depth"              value="$(arg align_depth)"/><arg name="fisheye_width"            value="$(arg fisheye_width)"/><arg name="fisheye_height"           value="$(arg fisheye_height)"/><arg name="enable_fisheye"           value="$(arg enable_fisheye)"/><arg name="depth_width"              value="$(arg depth_width)"/><arg name="depth_height"             value="$(arg depth_height)"/><arg name="enable_depth"             value="$(arg enable_depth)"/><arg name="confidence_width"         value="$(arg confidence_width)"/><arg name="confidence_height"        value="$(arg confidence_height)"/><arg name="enable_confidence"        value="$(arg enable_confidence)"/><arg name="confidence_fps"           value="$(arg confidence_fps)"/><arg name="color_width"              value="$(arg color_width)"/><arg name="color_height"             value="$(arg color_height)"/><arg name="enable_color"             value="$(arg enable_color)"/><arg name="infra_width"              value="$(arg infra_width)"/><arg name="infra_height"             value="$(arg infra_height)"/><arg name="enable_infra"             value="$(arg enable_infra)"/><arg name="enable_infra1"            value="$(arg enable_infra1)"/><arg name="enable_infra2"            value="$(arg enable_infra2)"/><arg name="infra_rgb"                value="$(arg infra_rgb)"/><arg name="fisheye_fps"              value="$(arg fisheye_fps)"/><arg name="depth_fps"                value="$(arg depth_fps)"/><arg name="infra_fps"                value="$(arg infra_fps)"/><arg name="color_fps"                value="$(arg color_fps)"/><arg name="gyro_fps"                 value="$(arg gyro_fps)"/><arg name="accel_fps"                value="$(arg accel_fps)"/><arg name="enable_gyro"              value="$(arg enable_gyro)"/><arg name="enable_accel"             value="$(arg enable_accel)"/><arg name="publish_tf"               value="$(arg publish_tf)"/><arg name="tf_publish_rate"          value="$(arg tf_publish_rate)"/><arg name="filters"                  value="$(arg filters)"/><arg name="clip_distance"            value="$(arg clip_distance)"/><arg name="linear_accel_cov"         value="$(arg linear_accel_cov)"/><arg name="initial_reset"            value="$(arg initial_reset)"/><arg name="unite_imu_method"         value="$(arg unite_imu_method)"/><arg name="topic_odom_in"            value="$(arg topic_odom_in)"/><arg name="calib_odom_file"          value="$(arg calib_odom_file)"/><arg name="publish_odom_tf"          value="$(arg publish_odom_tf)"/><arg name="stereo_module/exposure/1" value="$(arg stereo_module/exposure/1)"/><arg name="stereo_module/gain/1"     value="$(arg stereo_module/gain/1)"/><arg name="stereo_module/exposure/2" value="$(arg stereo_module/exposure/2)"/><arg name="stereo_module/gain/2"     value="$(arg stereo_module/gain/2)"/><arg name="allow_no_texture_points"  value="$(arg allow_no_texture_points)"/><arg name="ordered_pc"               value="$(arg ordered_pc)"/></include></group><node pkg="tf" type="static_transform_publisher" name="base_link_to_realsense" args="0.0 0.0 0.0 4.71 0 0.0 /zvision_lidar /camera_link 50" /><!---->
</launch>


2.rs-sensor-control

插上设备输入0,读取内参,分辨率88(640*480 rgb8)

一、vins_mono

修改realsense_color_config.yaml

%YAML:1.0#common parameters
imu_topic: "/camera/imu"
image_topic: "/camera/color/image_raw"
output_path: "/home/tony-ws1/output/"#camera calibration 
model_type: PINHOLE
camera_name: camera
image_width: 640
image_height: 480
distortion_parameters:k1: -5.58381e-02k2: 6.70407e-02p1: -2.42111e-04p2: -2.12417e-02
projection_parameters:fx: 383.595825195312fy: 382.700103759766cx: 327.825469970703cy: 241.276077270508# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 1   # 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.
#Rotation from camera frame to imu frame, imu^R_cam
extrinsicRotation: !!opencv-matrixrows: 3cols: 3dt: ddata: [0.999999  ,0.00110609,0.00129019,-0.00109996,0.999988  ,-0.00473814,    -0.00129542,0.00473672,0.999988 ]
#Translation from camera frame to imu frame, imu^T_cam
extrinsicTranslation: !!opencv-matrixrows: 3cols: 1dt: ddata: [0.028938414528966,0.00733212847262621,0.0157662034034729]#feature traker paprameters
max_cnt: 150            # max feature number in feature tracking
min_dist: 25            # min distance between two features 
freq: 10                # frequence (Hz) of publish tracking result. At least 10Hz for good estimation. If set 0, the frequence will be same as raw image 
F_threshold: 1.0        # ransac threshold (pixel)
show_track: 1           # publish tracking image as topic
equalize: 0             # if image is too dark or light, trun on equalize to find enough features
fisheye: 0              # if using fisheye, trun on it. A circle mask will be loaded to remove edge noisy points#optimization parameters
max_solver_time: 0.04  # max solver itration time (ms), to guarantee real time
max_num_iterations: 8   # max solver itrations, to guarantee real time
keyframe_parallax: 10.0 # keyframe selection threshold (pixel)#imu parameters       The more accurate parameters you provide, the better performance
acc_n: 0.1          # accelerometer measurement noise standard deviation. #0.2
gyr_n: 0.01         # gyroscope measurement noise standard deviation.     #0.05
acc_w: 0.0002         # accelerometer bias random work noise standard deviation.  #0.02
gyr_w: 2.0e-5       # gyroscope bias random work noise standard deviation.     #4.0e-5
g_norm: 9.805       # gravity magnitude#loop closure parameters
loop_closure: 1                    # start loop closure
fast_relocalization: 1             # useful in real-time and large project
load_previous_pose_graph: 0        # load and reuse previous pose graph; load from 'pose_graph_save_path'
pose_graph_save_path: "/home/jankin/linux/slam/vins-mono/src/log/" # save and load path#unsynchronization parameters
estimate_td: 1                      # 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)#rolling shutter parameters
rolling_shutter: 1                      # 0: global shutter camera, 1: rolling shutter camera
rolling_shutter_tr: 0.033               # unit: s. rolling shutter read out time per frame (from data sheet). #visualization parameters
save_image: 0                   # save image in pose graph for visualization prupose; you can close this function by setting 0 
visualize_imu_forward: 0        # output imu forward propogation to achieve low latency and high frequence results
visualize_camera_size: 0.4      # size of camera marker in RVIZ

如果不运行回环,将launch文件回环部分注释:

<launch><arg name="config_path" default = "$(find feature_tracker)/../config/realsense/realsense_color_config.yaml" /><arg name="vins_path" default = "$(find feature_tracker)/../config/../" /><node name="feature_tracker" pkg="feature_tracker" type="feature_tracker" output="log"><param name="config_file" type="string" value="$(arg config_path)" /><param name="vins_folder" type="string" value="$(arg vins_path)" /></node><node name="vins_estimator" pkg="vins_estimator" type="vins_estimator" output="screen"><param name="config_file" type="string" value="$(arg config_path)" /><param name="vins_folder" type="string" value="$(arg vins_path)" /></node><!--<node name="pose_graph" pkg="pose_graph" type="pose_graph" output="screen"><param name="config_file" type="string" value="$(arg config_path)" /><param name="visualization_shift_x" type="int" value="0" /><param name="visualization_shift_y" type="int" value="0" /><param name="skip_cnt" type="int" value="0" /><param name="skip_dis" type="double" value="0" /></node>--><node name="rvizvisualisation" pkg="rviz" type="rviz" output="log" args="-d $(find vins_estimator)/../config/vins_rviz_config.rviz" />
</launch>

运行程序:

roslaunch realsense2_camera rs_camera.launch
roslaunch vins_estimator realsense_color.launch

vins-rgb方法相同,精度也差不多,rgbd有场景图(不要关pose_graph,关了只有vins_estimator),在vins-Mono基础上修改了,rgbd对特征点深度校验,在feature_manger.cpp的深度三角化中,optimazation将深度校验的进行const。

这篇关于realsense d455 运行vins-mono,vins-rgbd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/756316

相关文章

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

如何在运行时修改serialVersionUID

优质博文:IT-BLOG-CN 问题 我正在使用第三方库连接到外部系统,一切运行正常,但突然出现序列化错误 java.io.InvalidClassException: com.essbase.api.base.EssException; local class incompatible: stream classdesc serialVersionUID = 90314637791991