费雪信息场增量建场实际实验

2023-05-16

写在前面

上一阶段的工作是基础是在张子潮大佬的费雪信息场这几篇论文的基础上进行的
Beyond Point Clouds: Fisher Information Field for Active Visual Localization, Zichao Zhang, Davide SacaramuzzaFisher Information Field:an Efficient and Differentiable Map for Perception-ware Planning. Zichao Zhang, Davide Sacaramuzza
然后想用这个费雪信息场(FIF)做实际的增量建场的实验,在实验中遇到了一些问题,现在记录一下。

准备工作

费雪信息场代码来建一个场,计算任意位姿下的费雪信息大小,用于具有感知意识的规划,前端用SVO提供路标点信息,用Voxblox提供地图的可视化显示。用D455相机提供图像信息来跑SVO算法,定位我没有用SVO的定位,用的是t265的定位。定位我也试了VinS的定位,可能是由于相机参数不准确,因为我没标相机,直接用终端输出的相机参数,所以效果都没有t265的好。这一部分存在不合理的地方,因为路标点信息用的是svo,svo输出的pointcloud也是和位姿联合优化来的,因此,所以这部分用t265的位姿信息不太合理,但是voxblox建图的定位消息是t265提供的,比较准确,建出来的场能用,所以就都用t265消息了,如何觉得不合理,把建费雪信息场需要的位姿信息改成SVO提供就可以。

用D455提供图像信息,跑SVO算法

1. 在realsense目录下编写一个launch文件

首先,我们需要D455的图像信息,因此要在realsense目录下编写一个launch文件,启动相机节点。后续还需要t265的定位消息,因此在realsense代码自带的文件rs_d400_and_t265.launch就可以改就可以。将图像的宽度和高度改一下,d455默认的应该是width为848,height为480。然后需要两个图像分别的信息和imu信息,因此在相机2的代码中加入如下语句。

      <arg name="enable_infra"        default="true"/>
      <arg name="enable_infra1"       default="true"/>
      <arg name="enable_infra2"       default="true"/>
      <arg name="enable_gyro"         default="true"/>
      <arg name="enable_accel"        default="true"/>
      <arg name="unite_imu_method"    default="linear_interpolation"/>

2. 在SVO目录下编写一个launch文件

SVO需要提供的话题就是双目相机的两个图像信息和imu信息,因此把这两个信息改成d455输出的信息。

    <param name="cam0_topic" value="/d400/infra1/image_rect_raw" type="str" /> 
    <param name="cam1_topic" value="/d400/infra2/image_rect_raw" type="str" /> 
    <param name="imu_topic" value="/d400/imu" type="str" />

同时,标定文件也要改成d455对应的标定文件,相机参数我是直接在终端输出的相机信息中填的,也没有对相机进行标定。

3. 启动SVO节点

这时,启动两个节点,就能在rviz中看到SVO输出的图像,带有路标点的信息,这时候在终端输出话题/svo/pointcloud就能看到路标点的输出,但是SVO默认的是输出关键帧的路标点,所以输出的比较少,因为后续还要用路标点信息做建场,所以去SVO里改了下判定条件,输出每一帧的路标点信息。

用t265提供定位信息

这一部分其实启动realsense节点,t265就能提供定位信息,但是t265提供的是nav_msgs/odometry, 而FIF建场所需要的是,因此在t265的代码中做了一下修改,输出了的消息。

FIF增量建场

1. 编写建场launch文件

首先,用SVO输出的点云信息提供路标点,用t265输出的定位信息提供位姿,使用t265_odom_frame作为参考坐标系。因此在文件中添加信息

     <param name="features3d_topic_name" value="/svo/pointcloud" />
     <param name="body_pose_topic_name" value="/t265/odom/geometry" />
     <param name="cam_frame0" value="t265_odom_frame" />

建场的kernel类型,我选择的是quad_trace,info的好像在代码中没实现,然后gp_trace的我试了一下建场的速度特别慢,所以在文件中添加

   <node name="act_map" pkg="act_map_ros" type="trace_map_server_node" output="screen" args="-alsologtostderr --v=1" clear_params="true">

同时,world和t265_odom_frame没有建立联系,因此在文件中添加

     <node pkg="tf" type="static_transform_publisher" name="t265_to_world" args="0 0 0 0 0 0 /world /t265_odom_frame  100"/>

2. 编写voxblox文件

把需要的点云信息改成d400提供的点云信息,然后把坐标系改一下

    <arg name="world_frame" default="t265_odom_frame" />
    <remap from="pointcloud" to="/d400/depth/color/points"/>

3. 启动建场节点

这时候启动节点,开始移动建场,就能看到费雪信息场的可视化显示了,也就是论文中提到的每一个体素的best_views显示。

4.保存建的场

这个服务的名称我记不住了,大概就是这个,用 rosservice list 看一下就可以了

rosservice call /act_map/save_map_layers "file_path: "

执行完这个语句之后,就会在你提供的这个文件路径下保存两个文件,如果你想用费雪信息场做规划的话需要用到这两个文件。

遇到的各种问题

1. 找不到d455的陀螺仪

这个问题很奇怪,给几个电脑都装过realsense,都没有遇到过找不到陀螺仪的情况,具体表现就是,终端输出

sensor gyro_3d not found

然后用realsense-viewer看,点陀螺仪也看不到,最终在一个讨论中看到了解决方案,文章提供了两种方法,方法1:把系统 SECURITY BOOT关闭,我用的是这个方法,可行。
方法2:换内核,具体的方法见上面文章,我没尝试。

2. 各种进程终止

这个大概率是launch或者yaml文件有问题,比如说图片的分辨率和算法的分辨率对应不上,比如d455提供的图片480848,但svo算法里默认参数是480752,那么就需要改一下。

3. 建不出来场

这块可能的问题有很多,我最开始的时候也是建不出来,最开始我输出SVO的pointcloud,发现它输出的特别慢,可能几秒才输出一次,看SVO代码发现它那个是输出关键帧的点云信息,然后我把它改成了输出每一帧的点云信息,还有可能是体素大小过小,FIF每个体素的尺寸我设置为0.2,当过小的时候,建的就非常慢,然后SVO的特征点数量也让我改小了,这样也能提升建场的速度。

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

费雪信息场增量建场实际实验 的相关文章

  • 汇编语言学习04之X86计算机组件

    X86计算机组件 本文首先通过检查典型主板配置以及围绕 CPU 的芯片组来了解 x86 如何与其他组件的集成 然后讨论内存 I O 端口和通用设备接口 最后说明汇编语言程序怎样利用系统硬件 固件 xff0c 并调用操作系统函数来实现不同访问
  • 【翻译】服务器后端的编程语言

    对于那些需要web服务的初创公司里的大型新项目 xff0c 我会选择何种后端编程语言呢 xff1f 在客户端侧有CSS html和javascript xff08 包括CoffeeScript和TypeScript这类衍生语言 xff09
  • ubuntu换内核的方法适用于16-18系统

    2080ti的卡兼容18 04的5 0 0 37 generic内核驱动需要用418 56 ubuntu内核突然变了 导致nvidia显卡驱动用不了 进行内核降级 解决方法 查找可用的内核版本 grep menuentry boot gru
  • 统计信号估计 (二) 最小方差无偏估计量(MUV)的线性模型

    MVU表示最小方差无偏估计 xff0c 下面将推导一个线性模型的MVUE xff0c 即最小方差无偏估计量 线性模型可以表示为 xff1a x 61 H 43 w
  • python二级考试-每日刷题7

    知识导图 文件 文件的类型 文件的打开和关闭 文件的读写
  • 树莓派入门(笔记本当显示屏)

    树莓派入门 笔记本当显示屏 your elephant的博客 CSDN博客 树莓派连接笔记本屏幕
  • python-sklearn实现神经网络(数据量小的情况)

    以下内容笔记出自 跟着迪哥学python数据分析与机器学习实战 xff0c 外加个人整理添加 xff0c 仅供个人复习使用 神经网络 xff08 neural network 模块重要的有两个类 xff0c MLPClassifier 分类
  • 想免像控?RTK/PPK无人机 vs GCP 测绘精度对比

    无人机航拍测绘具有精度高 作业效率高 数据分析能力强的特点 xff0c 很大程度上解决了人工测绘的痛点 因此 xff0c 无人机在测绘工程中的应用越来越广泛 精度对于测绘从业人员来说精度至关重要 xff0c 针对RTK PPK 无人机和使用
  • ROS的GPS驱动包

    ROS WiKi地址 http wiki ros org nmea gps driver ROS功能包 xff1a nmea gps driver Package to parse NMEA strings and publish a ve
  • 【操作系统】进程切换到底是怎么个过程?

    首先 xff0c 我们要了解 xff0c 进程切换是个什么过程 xff1f 进程切换概念 其实很简单 xff0c 进程切换就是从正在运行的进程中 xff0c 收回CPU的使用权利 xff0c 交给下一个要运行的进程 实际上 xff0c 因为
  • docker设置多个环境变量

    在命令行直接使用 e或 env xff0c env file xff0c 每个变量写一次 e 2 在dockerfile里设置 这里键值是以空格分开的
  • 一些好用的c++ STL库函数

    stl可以说是懒癌患者福利了 持续更新 xff08 随缘更新 xff09 全排列函数next permutation 今天在洛谷做题的时候发现一个题简直是这个函数的完美应用 题目链接 xff1a 洛谷P1088 火星人 头文件 xff1a
  • 【FreeRTOS】中断机制

    FreeRTOS 之中断机制 在FreeRTOS中 xff0c 中断是实现实时性必要的操作 一款芯片的中断涉及到硬件触发 xff0c 软件触发 xff0c 软件中断处理 所以FreeRTOS的中断机制其实不好单独拿出来看 FreeRTOS关
  • 【VSPD虚拟串口】【Modbus Poll】【Modbus Slave】仿真工具的学习过程

    学习想法 xff1a 通信是工控行业内采集仪器仪表等设备信息的重要途径 xff0c 同时可以通过通信访问设备的工作状况对设备进行监控 xff0c 也可以通过通信对设备进行参数修改以及控制设备运行 xff0c 所以掌握通信是工控行业人员比不可
  • 【RISC-V】Trap和Exception

    文章目录 控制流 xff08 Control Flow xff09 和TrapRISC V Trap处理中涉及的寄存器mtvec Machine Trap Vector Base Address mepc Machine Exception
  • @TableId(type = IdType.AUTO)不生效问题

    随手记录一下 64 TableId type 61 IdType AUTO private Long id Cause java sql SQLException Field 39 id 39 doesn 39 t have a defau
  • Docker apt-get update报错

    在Docker改apt源出现问题 root 64 1ad3e492d821 etc apt apt get update Ign 1 http mirrors 163 com debian stretch InReleaseGet 2 ht
  • c语言 面试前必备基础知识

    目录 c语言 数据类型c语言 数据类型打印格式 c s d f lf p x o lu lldc语言 格式化输出 md 0md m nf c语言 常用字符的ASCII值c语言 变量 常量c语言 变量c语言 变量命名规范c语言 变量存储类型
  • **make[2]: *** [CMakeFiles/offb_node.dir/build.make:84:报错解决

    make报错很有可能是因为CmakeList里面的文件没有修改好 xff01 如果是cpp文件的话需要修改下面两部分 xff1a 1 修改的第一处 xff1a 把节点修改成自己文件的节点就可以 2 修改的第二处 xff1a
  • Ubuntu18.04下ROS+Gazebo+Mavros+PX4安装教程(最新!最全!)

    一 依赖安装 span class token function sudo span span class token function apt span span class token function install span nin

随机推荐

  • 在Gazebo仿真中修改仿真环境 (World)

    这一步是要把初始环境改成白色地板环境 xff0c 跑仿真或者基于地标降落的时候更容易观察 xff0c 让人看着也比较舒服 这一步只需要修改下面代码 原代码 xff1a xff08 初始环境 xff09 span class token op
  • 关于Arduino、树莓派和 Pixhawk微处理器对比分析

    摘要 xff1a Arduino是一款基于微控制器 xff08 单片机 xff09 的电子开发板 xff0c 它可以运行一些相对比较简单的应用程序 包含硬件 xff08 各种型号的Arduino板 xff09 和软件 xff08 Ardui
  • 关于STARMAC旋翼机的计算系统组成分析

    摘要 xff1a STARMAC xff0c 全称为 the Stanford Testbed of Autonomous Rotorcraft for Multi Agent Control xff0c 是斯坦福大学为为了突破先前飞行器笨
  • 读史铁生随笔摘要

    人可以走向天堂 xff0c 不可以走到天堂 物质的天堂注定难为 xff0c 而精神的天堂恰于走向中成立 永远的限制是其永远成立的依据 无所眺望或有所眺望都证明到达之地并非圆满 xff0c 而你若永远地走向它 xff0c 你便随时都在它的光照
  • IMAX B6电路原理详解

    IMAX B6电路原理详解 本文出自 手电大家谈 xff0c 原帖 xff1a http www shoudian org thread 447417 1 1 html
  • arduino实验第三代码

    include lt avr eeprom h gt define PinA 2 中断0 define led1 1 define led2 3 define led3 4 define led4 5 define da 6 define
  • pytorch总结——1:初步introduction

    pytorch简介 先说Torch xff0c 这是一个与Numpy类似的张量 xff08 Tensor xff09 操作库 xff0c 与Numpy不同的是Torch对GPU支持的很好 xff0c Lua是Torch的上层包装 但是Lua
  • pytorch_RNN相关函数介绍

    1 RNN背景介绍 RNN结构 参数介绍 input size 输入x的特征数量 hiddien size 隐藏层的特征数量 num layers RNN的层数 nonlinearity 指定激活函数是tanh还是relu xff0c 默认
  • 一些tensorflow-VIN 的笔记

    1tensorflow 使用flags定义命令行参数 2 product的执行 3 xff0c round函数 保留小数点后几位 96 a 61 1 12345 result 61 round a 2 print result 1 12 4
  • rosbag录制固定话题,多话题等

    ROS框架下可以很方便的进行数据记录 并且将其转换为txt文件进行matlab处理 下面介绍一下rosbag的日常使用方法 1 查找你所需要的话题 xff1a rostopic list 在ros节点开启的情况下 span class to
  • 相机与IMU标定教程

    标定教程 way 相机与IMU联合标定 1 imu utils 标定IMU的内参 1 imu utils标定IMU的内参 xff0c 可以校准IMU的噪声密度和随机游走噪声 2 kalibr包标定相机的内外参数 xff0c 相机与IMU之间
  • 如何在Win11中安装wsl Ubuntu系统

    目录 前言正文一 环境二 在 Windows 11 上启用 WSL四 按照官方文档进行安装五 安装ubuntu系统六 下载vcxSrv七 运行wsl八 总结 参考 前言 在笔记本上安装一下环境 xff0c 便于平常的工作 正文 一 环境 w
  • 下载PX4固件时网络太慢,经常出现克隆失败

    下载PX4固件时 xff0c 官网给的指令是 git clone https github com PX4 PX4 Autopilot git recursive 需要进行循环克隆 xff0c 在克隆过程中可能出现以下的情况 无法克隆 39
  • roslaunch mavros px4.launch 出现的问题

    在运行roslaunch mavros px4 launch fcu url 61 udp 14540 64 127 0 0 1t 14557 时出现了以下错误 xff0c 这是由于 符号是中文符号导致的 xff0c 切换成英文的即可 RL
  • 解决Ubuntu执行sudo命令后提示无法解析主机

    解决Ubuntu执行sudo命令后提示无法解析主机 异常现象异常原因查看修改主机名普通用户与管理员间的切换 异常现象 异常原因 etc hostname和 etc hosts文件中主机名称不一致导致 xff0c 将其修改一致即可 修改此文件
  • rosdep update 指令超时问题

    在执行rosdep update后出现超时问题 xff0c 报如下错误 reading in sources list data from etc ros rosdep sources list d ERROR unable to proc
  • 使用git --recursive进行循环克隆,由于网络原因,出现克隆失败的情况。

    git clone recursive 用于循环克隆git子项目 xff0c 但由于网络原因 xff0c 经常会出现克隆失败的情况 xff0c 这时不得不删掉克隆文件夹 xff0c 全部重新来过 xff0c 我们可以先将主文件克隆下来 xf
  • minimumsnap(1)微分平坦特性(Differential Flatness)

    本文内容参考论文 Minimum Snap Trajectory Generation and Control for Quadrotors Daniel Mellinger and Vijay Kumar 从名字可以看出 xff0c 我们
  • 未安装Ceres

    编译VINs的时候 xff0c 遇到了这个问题 xff0c 是没安装Ceres导致的 96 CMake Error at VINS Mono camera model CMakeLists txt 19 find package By no
  • 费雪信息场增量建场实际实验

    写在前面 上一阶段的工作是基础是在张子潮大佬的费雪信息场这几篇论文的基础上进行的 Beyond Point Clouds Fisher Information Field for Active Visual Localization Zic