树莓派4B(ubuntu mate系统)使用d435i运行vins

2023-05-16

树莓派4B(ubuntu mate系统)使用d435i运行vins

提示本文为随手笔记,并不严谨,可参考:博客和博客进行配置
树莓派 ubuntu mate 20系统安装ros的步骤可以参考博客来完成

有一个树莓派4B,运行了ubuntu mate20的系统,现在需要基于ros运行realsense的d435i摄像头,并运行vins-fusion实现定位。
已经在台式机ubuntu18运行成功了历程,精度还算可以
参考:

  1. 前提需要

需要安装好ros、完成工作空间的创建,xtdrone代码的下载(方便复制vins代码)

  1. realsense-sdk的安装(非必须)

realsense-sdk的安装非必须,并且树莓派使用常规安装会报错,需要参考其他,我按照该博客完成了一半,后来发现无需也可以运行ros代码
sdk的作用是在电脑端运行官方界面,然后实现建图和定点的作用
但是我们只需要使用到ros代码,所以非必要安装

  1. realsense-ros安装

参考github即可。
安装驱动,maybe这样的叫法

# sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
# 我们使用的是noetic的ros,因此是
sudo apt-get install ros-noetic-realsense2-camera

创建工作空间并编译包,按需复制代码

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
# git clone https://github.com/IntelRealSense/realsense-ros.git
# 使用gitee代理
git clone https://gitee.com/olderking/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
cd ..
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

运行测试

# 运行
roslaunch realsense2_camera rs_camera.launch

查看数据和图像

rostopic list
rqt_image_view
  1. 安装vins-ros

同样参考github
创建工作空间

    cd ~/catkin_ws/src
    # git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
    # gitee
    git clone https://gitee.com/stancy_sun/vins_fusion.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash
  1. 继续运行,开始泡桐

虽说运行上述两个launch即可,但是需要根据d435i的参考,修改一些内容,参考:博客和博客
修改Realsense文件:复制修改~/catkin_ws/src/realsense/realsense2_camera/launch/目录下的rs_camera.launch,重命名为rs_camera_vins.launch,并修改让其发布双目灰度图像数据(实际是一样的数据)。参考第一个博客,有提供修改后的文件
修改VINS文件:目的是提供摄像头参数,并告知是一个imu+假双目的方式,同样参考第一篇博客
运行:

roslaunch realsense2_camera rs_camera_vins.launch 
roslaunch vins vins_rviz.launch 		# 用于启动界面,应该可以不用
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml

  1. 由于运行realsense一直报错,或其他原因,导致vins无法正常工作。【吐槽:奇了怪了,读取图像和imu数据,要多少性能啊,就读取不了】,最后修改realsens_ros中的文件为以下,才勉强运行了一点点,但是巨卡,CPU占用95%以上(包括了px4、realsense和vins)。修改主要为:帧数降低,去除同步和深度对齐,但是一段时间后会显示无imu数据。
<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="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="infra_width"        default="640"/>
  <arg name="infra_height"       default="480"/>
  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="true"/>

  <arg name="color_width"         default="640"/>
  <arg name="color_height"        default="480"/>
  <arg name="enable_color"        default="true"/>

  <arg name="fisheye_fps"         default="15"/>
  <arg name="depth_fps"           default="15"/>
  <arg name="infra_fps"           default="15"/>
  <arg name="color_fps"           default="15"/>
  <arg name="gyro_fps"            default="200"/>
  <arg name="accel_fps"           default="250"/>
  <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="enable_sync"               default="false"/>
  <arg name="align_depth"               default="false"/>

  <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="linear_interpolation"/>
  <arg name="topic_odom_in"             default="odom_in"/>
  <arg name="calib_odom_file"           default=""/>
  <arg name="publish_odom_tf"           default="true"/>
  <arg name="allow_no_texture_points"   default="false"/>
  <arg name="emitter_enable"   		default="false"/>



  <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="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="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_infra1"            value="$(arg enable_infra1)"/>
      <arg name="enable_infra2"            value="$(arg enable_infra2)"/>

      <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="allow_no_texture_points"  value="$(arg allow_no_texture_points)"/>
    </include>
  </group>
</launch>

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

树莓派4B(ubuntu mate系统)使用d435i运行vins 的相关文章

随机推荐

  • [pixhawk笔记]6-uORB流程及关键函数解析

    本文中将结合代码 文档及注释 xff0c 给出uORB执行流程及关键函数的解析 xff0c 由于uORB的机制实现较为复杂 xff0c 所以本文主要学习如何使用uORB的接口来实现通信 回到上一篇笔记中的代码 xff1a include l
  • 基于1553B总线的ARINC 661指令传输(一)--1553B的一些要点

    来自www hoopercao com 1553B MIL STD 1553B 数据总线标准是20世纪70年代由美国公布的一种串行多路数据总线标准 它最初 是为飞机提出的内部电子系统连网标准 xff0c 后来由于其可靠性高 传输率较高 技术
  • 35、标准模板类(STL)(一),综述、容器及其操作

    C 43 43 的 STL 是一个功能强大的库 xff0c 它是建立在模板机制上 xff0c 能够满足用户对存储管理不同类型数据的通用容器和施加在这些容器上的通用算法的巨大需求 xff0c 并且具有完全的可移植性 因此在寻求程序的解决方案时
  • 搬运: CVonline: 图像数据库(二) (更新于20190821)

    对象数据库 各种物体和场景的2 5D 3D数据集 xff08 Ajmal Mian xff09 3D对象识别立体数据集此数据集由9个对象和80个测试图像组成 xff08 Akash Kushal和Jean Ponce xff09 3D摄影数
  • 串口通信——写串口(C语言)

    C语言程序 xff0c 将一个文件中保存的控制LED的十六进制数读取 xff0c 并写入串口由433M发送至连接有另一433M的MSP430单片机 C语言程序 xff1a include lt stdio h gt include lt w
  • Keil 官网下载PACK包的地址

    转至 xff1a http www keil com dd2 Pack eula container 下载Pack包什么的有点用啊 xff0c 希望网址不要变了 截图如下 xff1a ARM公司的支持包下载地址 xff1a Common M
  • reStructuredText 表格快速生成

    reStructuredText 是个好东西 xff0c 但是如果要编写的表格里面包含中文实在是太蛋疼了 网上找了半天都没有找到一个合理的工具 xff0c 索性自己就写了个工具 xff0c 工具如下图 xff0c 简单的很 运行效果图如下
  • STM32CUBEMX使用PWM+DMA驱动WS2812

    STM32CUBEMX使用PWM 43 DMA驱动WS2812 首先在stm32cubemx中设置pwm和dma 我设置了TIM1的CH1为PWM引脚编写DMA响应函数 xff0c 即PWM DMA完成数据发送后的回调函数 PWM DMA
  • Arduino IDE配置STM32开发环境和程序烧录

    Arduino IDE配置STM32开发环境和烧录 前言 xff1a 最近在制作3D打印机 xff0c 自己画了一块STM32F446的3D打印机板子 xff08 RUMBA32 xff09 xff0c 但是在Arduino编译Marlin
  • Altium Designer 20(AD20)的PCB文件在嘉立创下单显示无外型文件解决方法

    Altium Designer 20 AD20 的PCB文件在嘉立创下单显示无外型文件解决方法 如上图 xff0c 在机械层1中生成外形 xff0c 勾选最后两个 如果不行 xff0c 修改宽度为10mil试一下
  • CH552 USB HID键盘

    客制化键盘制作V1 CH552工程 目前正在客制化一个小键盘 xff0c 计划8月中旬在咸鱼上售卖 xff0c 功能包括 xff1a 蓝牙有线双模 xff0c 蓝牙 5 0 xff08 nrf52810 xff09 xff0c 低功耗模式按
  • [pixhawk笔记]5-uORB消息传递

    本文主要内容翻译自官方文档 xff1a https dev px4 io en middleware uorb html 在前一篇笔记中使用uORB完成消息传递 xff0c 实现了一个简单示例程序 xff0c 本文将对uORB进行系统学习
  • 2019全国电赛总结

    准备阶段 xff1a 赛前大约一个星期就开始全力备战电赛 xff0c 由于学校条件不算太好 xff0c 所以选题上就不选放大器设计之类的题目 xff0c 只能选择一些电源题 xff0c 控制题 xff0c 造飞机题 技术准备 xff1a 这
  • UBUNTU使用RTL8811CU网卡(包含树莓派)

    8811cu 8821 github链接 一 普通的Ubuntu系统 xff0c 测试的是ubuntu18 04 下载驱动 从绿联中下载 xff1a 链接 下载解压后 xff0c chmod Linux文件夹 sudo chmod R 77
  • XTDrone ROS安装

    XTDrone ROS安装 本博客是参考XTDrone内容 xff0c 进行ROS安装和配置 参考连接 xff1a XTDrone 梗概ubuntu18的源 xff0c 并更新 参考 xff1a 更改ubunut源 sudo apt upd
  • PX4 GAZEBO无人机添加相机并进行图像识别

    PX4 GAZEBO无人机添加摄像头并进行图像识别 在之前完成了ROS的安装和PX4的安装 xff0c 并可以通过roslaunch启动软件仿真 接下来为无人及添加相机 xff0c 并将图像用python函数读取 xff0c 用于后续操作
  • XTDrone 视觉SLAM环境配置

    基于XTDrone的视觉SLAM章节 xff0c 进行环境配置 中途遇到了一些问题 xff0c 一一解决后成功完成了 xff0c 记录该流程 一 遇到的问题与参考链接 XTDrone相关参考连接 xff1a 链接依赖安装教程 xff1a O
  • XTDrone 视觉惯性里程计(VIO)配置

    XTDrone 视觉惯性里程计 xff08 VIO xff09 配置 参考XTDron进行配置 xff0c 对于依赖的配置写成文档 xff0c 参考主要为 xff1a XTDrone Ceres Solver 2 0 0 1 下载2 0 0
  • ros realsense D435i摄像头配置

    ros realsense D435i摄像头配置 之前在ubunut18中配置了ROS环境 xff0c 现在需要在此基础上 xff0c 配置D435i相机的SDK和ROS包 一 参考 https github com IntelRealSe
  • 树莓派4B(ubuntu mate系统)使用d435i运行vins

    树莓派4B xff08 ubuntu mate系统 xff09 使用d435i运行vins 提示本文为随手笔记 xff0c 并不严谨 xff0c 可参考 xff1a 博客和博客进行配置 树莓派 ubuntu mate 20系统安装ros的步