ROS实验笔记之——基于l515激光相机的FLVIS与MLMapping

2023-05-16

之前博客《ROS实验笔记之——VINS-Mono在l515上的实现》在l515上实现了vins,博客《ROS实验笔记之——SLAM无人驾驶初入门》配置flvis并跑了对应的kitti数据集

本博文在l515上先实现flvis然后再用mlmapping来建图。

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="-1"/>
  <arg name="fisheye_height"      default="-1"/>
  <arg name="enable_fisheye"      default="false"/>

  <arg name="depth_width"         default="1280"/>
  <arg name="depth_height"        default="720"/>
  <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="1280"/>
  <arg name="infra_height"        default="720"/>
  <arg name="enable_infra"        default="true"/>
  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="false"/>
  <arg name="infra_rgb"           default="false"/>

  <arg name="color_width"         default="1280"/>
  <arg name="color_height"        default="720"/>
  <arg name="enable_color"        default="false"/>

  <arg name="fisheye_fps"         default="-1"/>
  <arg name="depth_fps"           default="-1"/>
  <arg name="infra_fps"           default="30"/>
  <arg name="color_fps"           default="-1"/>
  <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_COLOR"/>
  <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=""/>
  <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>
</launch>

l515.launch

<?xml version="1.0"?>
<launch>

<!--Input######################################################################################################-->

<!--FLVIS######################################################################################################-->
    <arg name="node_start_delay"  default="1.0" />
    <param name="/yamlconfigfile" type="string" value="$(find flvis)/launch/d435i/l515.yaml"/>
    <param name="/voc"            type="string" value="$(find flvis)/voc/voc_orb.dbow3"/>


    <!-- Manager -->
    <node pkg="nodelet" type="nodelet"
          name="flvis_nodelet_manager" args="manager" output="screen"
          launch-prefix="bash -c 'sleep 0; $0 $@' ">
          <param name="num_worker_threads" value="8" />
    </node>

    <!-- TrackingNode -->
    <node pkg="nodelet" type="nodelet" args="load flvis/TrackingNodeletClass flvis_nodelet_manager"
        name="TrackingNodeletClass_loader" output="screen"
        launch-prefix="bash -c 'sleep $(arg node_start_delay); $0 $@' ">
        <!-- D435i -->
        <remap from="/vo/input_image_0"  to="/camera/infra/image_raw"/>
        <remap from="/vo/input_image_1"  to="/camera/depth/image_rect_raw"/>
        <remap from="/imu"               to="/camera/imu"/>
    </node>


    
    <!-- LoopClosingNode -->
    <node pkg="nodelet" type="nodelet" args="load flvis/LoopClosingNodeletClass flvis_nodelet_manager"
        name="LoopClosingNodeletClass_loader" output="screen"
        launch-prefix="bash -c 'sleep $(arg node_start_delay); $0 $@' ">
    </node>



    <node type="rviz" name="rviz" pkg="rviz" args="-d $(find flvis)/launch/rviz/euroc.rviz" />


</launch>






515的yaml

#type_of_vi:
#0---d435i_depth
#1---euroc mav dataset
#2---d435+pixhawk
#3---d435i_stereo
#4---KITTI_stereo_mode

type_of_vi: 0
#depth image is aligned to left cam0
image_width:  640
image_height: 480
cam0_intrinsics: [457.09765625, 457.234375, 304.328125, 254.6796875]#fx fy cx cy
cam0_distortion_coeffs: [0, 0, 0, 0]#k1 k2 r1 r2
depth_factor: 1000.0
T_imu_cam0:
[ 0.0,  0.0,  1.0,  0.0,
 -1.0,  0.0,  0.0,  0.0,
  0.0, -1.0,  0.0,  0.0,
  0.0,  0.0,  0.0,  1.0]


is_lite_version:   False

##vifusion parameter
#Madgwick beta
vifusion_para1: 0.1
#proportion of vision feedforware(roll and pich)
vifusion_para2: 0.01
#acc-bias feedback parameter
vifusion_para3: 0.001
#gyro-bias feedback parameter
vifusion_para4: 0.001
#acc saturation level
vifusion_para5: 0.1
#gyro saturation level
vifusion_para6: 0.1


#feature relate parameter
#max features in a grid
feature_para1: 15
#min features in a grid
feature_para2: 30
#distance of features
feature_para3: 5
#goodFeaturesToTrack detector maxCorners
feature_para4: 1000
#goodFeaturesToTrack detector qualityLevel
feature_para5: 0.01
#goodFeaturesToTrack detector minDistance
feature_para6: 5

#depth recovery
#IIR filter ratio
dr_para1: 0.98
#triangulate range
dr_para2: 40
#Dummy depth enable 1.0, enable 0.0,disable
dr_para3: 1.0

#LocalMapThread
output_sparse_map: False
window_size:       8

#LoopClosureTheread
#define lcKFStart
lcKFStart: 25
#define lcKFDist
lcKFDist: 18
#define lcKFMaxDist
lcKFMaxDist: 50
#define lcKFLast
lcKFLast: 20
#define lcNKFClosest
lcNKFClosest: 2
#define ratioMax
ratioMax: 0.5
#define ratioRansac
ratioRansac: 0.5
#define minPts
minPts: 20
#define minScore
minScore: 0.12
 roslaunch flvis camera.launch
 roslaunch flvis l515.launch

效果如下:

flvis

加上mlmapping

 roslaunch flvis camera.launch
 roslaunch flvis l515.launch
 roslaunch mlmapping mlmapping_l515.launch

但发现不能生成,改为试试glmapping(GitHub - HKPolyU-UAV/glmapping: Global-Local Mapping Kit)

好像也不行。。。

参考资料

https://github.com/HKPolyU-UAV/FLVIShttps://github.com/HKPolyU-UAV/FLVIShttps://github.com/HKPolyU-UAV/MLMappinghttps://github.com/HKPolyU-UAV/MLMapping

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS实验笔记之——基于l515激光相机的FLVIS与MLMapping 的相关文章

  • VSCode中如何让终端默认在当前文件的路径启动

    VSCode中如何让终端默认在当前文件的路径启动 1 只改变当前工作区的设置2 改变所有打开工程的设置 经常使用VSCode运行调试文件 xff0c 又不想每次都手动cd目录的话 xff0c 可以通过修改设置让终端默认在当前文件的路径启动
  • emWin - Movie篇

    STemWin版本 xff1a 544 xff08 ST购买了emWin的license xff0c 可以在ST芯片中使用emWin工具包 xff0c 就叫STemWin xff09 emWin开发工具包可以转换JPG BMP GIF等各种
  • 芯片端子的多路复用

    嵌入式软件的开发 xff0c 经常要和芯片打交道 xff0c 和个人电脑的通用平台的CPU使用X86或X64架构不同 xff0c 嵌入式电子产品使用的主控芯片是各种各样的 xff0c 从8051单片机 xff0c 到ARM Cortex M
  • 小说三要素和六要素

    小说是以刻画人物为中心 xff0c 通过完整的故事情节和具体的环境描写反映社会生活的一种文学体裁 或通过情节的展开和环境的渲染反映社会生活的一种文学体裁 小说有三个要素 xff1a 人物形象 故事情节 典型环境 xff08 自然环境和社会环
  • POV写作手法

    POV xff08 Point of View xff09 xff0c 一种写作手法 xff0c 即 视点人物写作手法 xff0c 在叙述同一件事可以自由选取最丰厚的角度 xff0c 大大加强了叙述的灵活性 xff0c 在讲述故事的同时作者
  • 工具说明书 - 搜索引擎推荐

    Yandex 俄罗斯人用的多 Yet Another Indexer 34 xff08 另一个索引 xff09 把定位改到美国 xff0c 再把搜索设置为无限制 www yandex com CC Search 查一些版权免费的图片和音视频
  • 嵌入式 - 在嵌入式软件开发中使用stdint.h头文件

    在嵌入式系统软件开发上 xff0c 对不同的平台 xff0c 其每个机器字长都可能不同 在这个硬件平台上使用int xff0c 可能是4个字节 xff0c 你做一个很大整数的运算也没问题 但换个硬件平台 xff0c int可能变成了2个字节
  • 编程参考 - C语言中将字符串转换为整数

    C语言 xff0c 主要有两种方法可以将字符串转为整数 xff1a atoi 和 strtol 1 xff0c atoi Syntax int atoi const char str 包含的头文件是 xff1a stdlib h 给定字符串
  • 工具及方法 - Excel插件XLTools

    立即开始使用XLTools XLTools是一个功能强大的Excel插件 xff0c 专为商业用户设计 它将帮助您在Excel中更快 更容易地准备数据 跟踪变化和实现任务自动化 无论您是刚刚开始免费试用还是购买了终身许可证 xff0c 本介
  • Linux - Ubuntu里安装Python的包

    在Ubuntu中 xff0c apt install python xff0c 默认是安装python2 要安装python3 要使用apt install python3 安装后运行python python2 xff0c 调用的都是py
  • CURL访问HTTPS证书登录

    curl cacert test crt https abc com test crt指服务端公钥 若服务端要求客户端认证 xff0c 需要将pfx证书转换成pem格式 openssl pkcs12 clcerts nokeys in ce
  • 司空见惯 - 体彩中奖交多少税

    体彩中奖交多少税 彩票只有大盘彩如双色球 大乐透等才在中奖1万元以上的情况下交20 的意外所得税 xff0c 小盘彩如3D 排列三等无论中多少都是不用交税的 对于中奖金额在1万元以下的 xff0c 是可以享受免征个人所得税福利政策的 对于中
  • 司空见惯 - 一树春风

    一树春风有两般 南枝向暖北枝寒 现前一段西来意 一片西飞一片东 xff08 一片东来一片西 xff09 了元 一树春风 了元是谁 xff1f 了元 xff0c 字觉老 xff0c 号佛印 xff0c 浮梁王氏子 北宋著名诗僧 xff0c 禅
  • 知识点滴 - 世界化工企业百强

    2022年7月25日 xff0c 美国 化学与工程新闻 xff08 C amp EN xff09 发布2022年全球化工企业50强名单 2022 09 21日附近 xff0c 国际石化市场信息服务商安迅思ICIS发布了最新世界化工企业100
  • 工具及方法 - 安装播放器pot player

    官网下载 xff1a potplayer daum net 可能国内访问有问题 xff0c 还有一个网站 xff1a Global Potplayer 或者为了纯净安全些 xff0c 找下国外可下载网站 xff1a PotPlayer 23
  • cpprestsdk应用实例

    RESTful REST全称是Representational State Transfer xff0c 通常译为表述性状态转移 xff0c 是一种网络应用程序的设计风格和开发方式 它首次出现在2000年Roy Fielding的博士论文中
  • VS2013中如何安装NuGet插件

    1 点击菜单栏的工具 gt 拓展和更新 2 点击左边的联机 xff0c 在右边的输入框中输入NuGet Package Manager xff0c 在中间栏中显示结果 xff0c 点击安装按钮即可完成安装 我这里已经安装过了 xff0c 所
  • vs2013中如何安装OpencvSharp并使用

    1 使用本方法前请确保你的vs已经安装了NuGet插件 xff0c 如果没有安装可以根据下面链接方法进行安装 VS2013中如何安装NuGet插件 2 右击你的项目 xff0c 选择 管理NuGet工具包 3 在弹出的窗口左边点击 联机 x
  • I2C 基础原理详解

    今天来学习下I2C通信 I2C Inter Intergrated Circuit 指的是 IC Intergrated Circuit 之间的 Inter 通信方式 如上图所以有很多的周边设备都是用I2C通信方式进行通信的 I2C Int
  • 简单一招破解网站内容不能复制+图片不能右击(naver blog有效)

    很多网站为了保护权利设置了内容不可复制 xff0c 并且图片右击无法获取图片链接或者是下载图片 xff0c 网上看了很多方法 xff0c 获取针对别的网站有效 xff0c 但是韩国的naver blog不行 今天一大早又谷歌了一下 xff0

随机推荐