LIO-SAM学习与运行测试数据集

2023-05-16

文章目录

  • 0. 说明
    • 0.1 环境配置说明
    • 0.2 LIO-SAM
    • 0.3 系统架构
    • 0.4 LIO-SAM youtube视频演示:
      • Rotation Dataset:
      • Walking Dataset:
      • Park Dataset:
      • Campus Dataset:
      • Amsterdam Dataset:
      • stress test:
  • 1. 编译与运行
    • 1.1 依赖
    • 1.2 gstam
    • 1.2 安装
    • 1.3 运行
      • (1) launch文件:
      • (2) 播放数据包:
  • 2 lidar和imu数据准备
    • 2.1 准备lidar数据
      • 2.1.1 提供点云的时间戳
      • 2.1.2 提供点所在环号(point ring number)
    • 2.2 准备imu数据
      • (1)imu准备
      • (2)imu对齐alignment
      • (3)imu调试
  • 3 样例数据集
    • 3.1 可使用默认设置运行的数据集
      • (1)数据集
      • (2)公园数据集
    • 3.2 需要配置参数的数据集
    • 3.3 Ouster (OS1-128) 数据集--Rooftop dataset
      • (1)数据集描述
      • (2)准备工作
      • (3)自己运行
      • (4)自我体会
    • 3.4 Livox Horizon数据集--Livox Horizon
      • (1)说明:
      • (2)配置
      • (3)自己运行
      • (4)自我体会
    • 3.5 KITTI 数据集--2011_09_30_drive_0028
      • (1)数据集描述
      • (2)数据集外部参数修改
      • (3)github参考建图效果
      • (4)自己运行
      • (5)自我体会
  • 4 其他说明
    • 4.1 params.yaml

0. 说明

0.1 环境配置说明

环境配置: ubuntu18.04, ros1(ros-melodic)
注: 在ros1的kinetic, melodic, noetic(https://github.com/TixiaoShan/LIO-SAM/issues/206)上被测试过;
ros1的github代码: https://github.com/TixiaoShan/LIO-SAM/tree/master
ros2的github代码: https://github.com/TixiaoShan/LIO-SAM/tree/ros2

0.2 LIO-SAM

论文:LIO-SAM:Tightly-coupled Lidar Inertial Odometry vis Smoothing and Mapping
是一个 实时激光雷达惯性里程计(lidar-inertial odometry)包。

0.3 系统架构

在这里插入图片描述

我们设计了一个系统,该系统可以维护两个图形,并且运行速度比实时快 10 倍。(比实时快10倍,实时是指的是激光雷达的频率吗?)
"mapOptimization.cpp"中的因子图 (the factor graph) 优化了激光雷达里程计因子和 GPS 因子 (lidar odometry factor and GPS factor)。该因子图在整个测试过程中始终保持不变。
"imuPreintegration.cpp"中的因子图优化了 IMU 和激光雷达里程计因子(IMU and lidar odometry factor)并估计了 IMU 偏差。该因子图会定期重置,并保证在 IMU 频率下的实时里程估计。

0.4 LIO-SAM youtube视频演示:

https://www.youtube.com/watch?v=A0H8CoORZJU
视频部分截图如下:

Rotation Dataset:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Walking Dataset:

在这里插入图片描述

在这里插入图片描述

Park Dataset:

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

Campus Dataset:

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

Amsterdam Dataset:

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

stress test:

在这里插入图片描述

1. 编译与运行

1.1 依赖

ROS相关:

sudo apt-get install -y ros-melodic-navigation
sudo apt-get install -y ros-melodic-robot-localization
sudo apt-get install -y ros-melodic-robot-state-publisher

1.2 gstam

先不要急着安装)使用apt方法安装方式如下:

sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt install libgtsam-dev libgtsam-unstable-dev

之前用源码编译安装的,如下,这次就先不安装
https://blog.csdn.net/BIT_HXZ/article/details/127135551

1.2 安装

cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make

1.3 运行

(1) launch文件:

roslaunch lio_sam run.launch
如果出现报错:

[lio_sam_imuPreintegration-2] process has died [pid 1671, exit code 127, cmd /home/meng/subject/Lio_sam_ws/devel/lib/lio_sam/lio_sam_imuPreintegration __name:=lio_sam_imuPreintegration __log:=/home/meng/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_imuPreintegration-2.log].
[lio_sam_mapOptmization-5] process has died [pid 1672, exit code 127, cmd /home/meng/subject/Lio_sam_ws/devel/lib/lio_sam/lio_sam_mapOptmization __name:=lio_sam_mapOptmization __log:=/home/meng/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_mapOptmization-5.log].

在这里插入图片描述

缺少一些库。它们已安装但不可用,因为不在 LD_LIBRARY_PATH 环境变量中。所以将 /usr/local/lib 目录添加到变量中解决了我的问题。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

在这里插入图片描述

(2) 播放数据包:

rosbag play your-bag.bag -r 3

2 lidar和imu数据准备

2.1 准备lidar数据

用户需要准备正确格式的点云数据以进行点云校正(cloud deskewing),这主要在“imageProjection.cpp”中完成。

2.1.1 提供点云的时间戳

LIO-SAM 使用 IMU 数据执行点云校正. 因此,需要知道扫描中的相对点时间(the relative point time), 最新的 Velodyne ROS 驱动程序应直接输出此信息。在这里,我们假设点时间通道被称为"time"。点类型的定义位于"imageProjection.cpp"的顶部。"deskewPoint()"函数利用这个相对时间来获得这个点相对于扫描开始(the beginning of the scan)的变换。当激光雷达以 10Hz 旋转时,一个点的时间戳应该在 0 到 0.1 秒之间变化。
如果您使用其他激光雷达传感器,您可能需要更改此时间通道的名称,并确保它是扫描中的相对时间。

2.1.2 提供点所在环号(point ring number)

LIO-SAM 使用此信息在矩阵中正确组织点, 环号表示该点属于传感器的哪个通道。点类型的定义位于"imageProjection.cpp"的顶部, 最新的 Velodyne ROS 驱动程序应直接输出此信息。
同样,如果您使用其他激光雷达传感器,您可能需要重命名此信息。请注意,该软件包目前仅支持机械激光雷达。

2.2 准备imu数据

(1)imu准备

与最初的 LOAM 实现一样,LIO-SAM 仅适用于 9-axis IMU,它提供横滚、俯仰和偏航估计(roll, pitch, and yaw estimation)。横滚和俯仰估计主要用于将系统初始化为正确的姿态。当使用 GPS 数据时,偏航估计将系统初始化在正确的航向。
从理论上讲,像 VINS-Mono 这样的初始化程序将使 LIO-SAM 能够与 6 轴 IMU 一起工作。系统的性能很大程度上取决于 IMU 测量的质量。 IMU 数据速率越高,系统精度就越好。
我们使用 Microstrain 3DM-GX5-25,它以 500Hz 的频率输出数据。我们建议使用至少提供 200Hz 输出速率的 IMU。注意,Ouster 激光雷达的内部 IMU 是一个 6 轴 IMU。

(2)imu对齐alignment

LIO-SAM 将 IMU 原始数据从 IMU 帧转换为 Lidar 帧,遵循 ROS REP-105[ROS坐标系] 法则(x - 向前,y - 左,z - 向上)。为了使系统正常运行,需要在"params.yaml"文件中提供正确的外部转换(the correct extrinsic transformation)。之所以有两个extrinsic(是extrinsicRot和extrinsicRPY嘛?),是因为我的IMU(Microstrain 3DM-GX5-25)加速度(acceleration)和姿态(attitude)坐标不同。取决于您的 IMU 制造商,您的 IMU 的两个外在参数可能相同也可能不同
以作者的设置为例:
==>>需要设置 x-z 加速度(x-z acceleration)和陀螺仪负值(gyro negative)的读数来转换激光雷达坐标系(the lidar frame)中的 IMU 数据,这在 “params.yaml” 中由 “extrinsicRot” 表示。
==>>姿态读数的转变可能略有不同。 IMU的姿态测量q_wb通常是指IMU坐标系中的点到世界坐标系(例如ENU)的旋转。但是,该算法需要 q_wl,即从激光雷达到世界的旋转。所以我们需要从激光雷达到 IMU 的旋转 q_bl,其中 q_wl = q_wb * q_bl。为方便起见,用户只需在"params.yaml"中提供q_lb为"extrinsicRPY"(如果加速度和姿态坐标相同,则与"extrinsicRot"相同)。

(3)imu调试

强烈建议用户取消注释 “imageProjection.cpp” 的 “imuHandler()” 中的调试行并测试转换后的 IMU 数据的输出(会在终端打印输出)。用户可以旋转传感器套件以检查读数是否与传感器的运动相对应。可以在此处找到显示更正 IMU 数据的 YouTube 视频链接到 YouTube。
imu与雷达坐标系:
在这里插入图片描述

imu调试:

在这里插入图片描述

3 样例数据集

下载链接:https://drive.google.com/drive/folders/1gJHwfdHCRdjP7vuT556pv8atqrCJPbUq

在这里插入图片描述

3.1 可使用默认设置运行的数据集

(1)数据集

步行数据集–walking dataset
公园数据集–Park dataset
花园数据集–Garden dataset

(2)公园数据集

公园数据集用于使用 GPS 数据测试 LIO-SAM。该数据集由 Yewei Huang(https://robustfieldautonomylab.github.io/people.html) 收集。
要启用 GPS 功能,请将"params.yaml"中的"gpsTopic"更改为"odometry/gps"。在 Rviz 中,取消选中"地图(云)“并选中"地图(全局)”。还要检查"Odom GPS",它可以可视化 GPS 里程计。
可以调整"gpsCovThreshold"以过滤不良 GPS 读数。 “poseCovThreshold"可用于调整将 GPS 因子添加到图形的频率。例如,您会注意到 GPS 会不断修正轨迹,因为您将"poseCovThreshold"设置为 1.0。由于 iSAM 的重度优化(heavy optimization),建议播放速度为”-r 1"。

poseCovThreshold 保持为默认的25m^2时:

在这里插入图片描述

点云地图:

在这里插入图片描述

poseCovThreshold 设置为1m^2,并显示gps时:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.2 需要配置参数的数据集

(1)旋转数据集–Rotation dataset
(2)校园数据集(large)–Campus dataset (large)
(3)校园数据集(small)–Campus dataset (small)

在这些数据集中,点云主题是"points_raw"。 IMU 主题是"imu_correct",它给出了 ROS REP105 (ros的坐标系参考标准)标准中的 IMU 数据。由于此数据集不需要 IMU 转换,因此需要更改以下配置才能成功运行此数据集:
==>>“config/params.yaml"中的"imuTopic"参数需要设置为"imu_correct”。
imuTopic: "imu_raw" # IMU data
==>>"config/params.yaml"中的"extrinsicRot"和"extrinsicRPY"需要设置为单位矩阵(identity matrices)。

  # extrinsicRot: [1, 0, 0,
  #                 0, 1, 0,
  #                 0, 0, 1]
  # extrinsicRPY: [1, 0, 0,
  #                 0, 1, 0,
  #                 0, 0, 1]

3.3 Ouster (OS1-128) 数据集–Rooftop dataset

(1)数据集描述

如果您使用默认设置,则无需更改此数据集的外部参数。请按照下面的 Ouster 说明配置包以使用 Ouster 数据运行。可以在 YouTube 上找到该数据集的视频:

在这里插入图片描述

(2)准备工作

硬件部分:
==>>使用外部 IMU。 LIO-SAM 不适用于 Ouster 激光雷达的内部 6 轴 IMU。您需要将 9 轴 IMU 连接到激光雷达并执行数据收集(data-gathering)。
==>>配置驱动程序。将 Ouster 启动文件中的"timestamp_mode"更改为"TIME_FROM_PTP_1588",这样您就可以为点云设置 ROS 格式的时间戳。
Config:
==>>将"params.yaml"中的"sensor"更改为"ouster"。
==>>根据您的激光雷达更改"params.yaml"中的"N_SCAN"和"Horizo​​n_SCAN",即N_SCAN=128,Horizo​​n_SCAN=1024。

注:Gen 1 和 Gen 2 Ouster:似乎不同版本的点坐标定义可能不同。请参阅问题 #94 进行调试。

(3)自己运行

一个终端:
roslaunch lio_sam run.launch
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
另一个终端:
rosbag play your-bag.bag
运行效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全局地图:

在这里插入图片描述

(4)自我体会

可以清楚看出:数据集具有楼顶和地面两个平面,属于是多个平面了

3.4 Livox Horizon数据集–Livox Horizon

(1)说明:

请注意,固态激光雷达尚未经过 LIO-SAM 的广泛测试。这里也使用外部 IMU,而不是内部 IMU。对此类激光雷达的支持基于对机械激光雷达代码库的最小更改。需要使用定制的 livox_ros_driver 来发布 LIO-SAM 可以处理的点云格式。

(2)配置

请更改以下参数以使 LIO-SAM 与 Livox Horizo​​n 激光雷达一起工作:

    sensor: livox
    N_SCAN: 6
    Horizon_SCAN: 4000
    edgeFeatureMinValidNum: 1

(3)自己运行

在这里插入图片描述在这里插入图片描述

全局(点云)地图:

在这里插入图片描述

(4)自我体会

环境是不是选的不是很好?点云效果很乱
固态雷达不能和lio-sam很好地适应?

3.5 KITTI 数据集–2011_09_30_drive_0028

(1)数据集描述

数据集包括的话题和话题频率如下:

在这里插入图片描述

要使用其他 KITTI 原始数据生成更多包,您可以使用“config/doc/kitti2bag(之前的使用笔记:https://blog.csdn.net/BIT_HXZ/article/details/124319662)”中提供的 python 脚本。

(2)数据集外部参数修改

由于 LIO-SAM 需要高频 IMU 才能正常运行,因此我们需要使用 KITTI 原始数据(kitti raw data)进行测试。一个尚未解决的问题是 IMU 的内在特性是未知的,这对 LIO-SAM 的准确性有很大影响。下载提供的示例数据并在"params.yaml"中进行以下更改:

extrinsicTrans: [-8.086759e-01, 3.195559e-01, -7.997231e-01]
extrinsicRot: [9.999976e-01, 7.553071e-04, -2.035826e-03, -7.854027e-04, 9.998898e-01, -1.482298e-02, 2.024406e-03, 1.482454e-02, 9.998881e-01]
extrinsicRPY: [9.999976e-01, 7.553071e-04, -2.035826e-03, -7.854027e-04, 9.998898e-01, -1.482298e-02, 2.024406e-03, 1.482454e-02, 9.998881e-01]
N_SCAN: 64
downsampleRate: 2 or 4
loopClosureEnableFlag: true or false

(3)github参考建图效果

github参考图:

在这里插入图片描述

(4)自己运行

一个终端:
roslaunch lio_sam run.launch
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
另一个终端:(注意不要带上 -r 3,可能是因为kitti数据量比较大,带上的话建图会乱)
rosbag play your-bag.bag

在这里插入图片描述

(5)自我体会

可以清楚看出:没有滤除动态目标

4 其他说明

4.1 params.yaml

  # Export settings
  savePCD: true                              
  savePCDDirectory: "/Downloads/LOAM/"   

修改输出参数为true会在:/Downloads/LOAM/文件夹下生成pcd文件:

在这里插入图片描述

终端输入 pcl_viewer xx.pcd 即可查看

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

LIO-SAM学习与运行测试数据集 的相关文章

  • ROS入门:IMU&GPS融合定位实例

    1 声明 xff1a a 本文主要针对IMU amp GPS融合定位仿真环境的搭建过程进行讲解 xff0c 而没有对具体原理的介绍 b 本人作为技术小白 xff0c 完全参考了https zhuanlan zhihu com p 15266
  • vSLAM研究综述:2010-2016

    作为vSLAM领域小白 xff0c 学习完 视觉SLAM十四讲 后 xff0c 抱着学习的心态研究了论文Visual SLAM algorithms a survey from 2010 to 2016 作为入门的第一步 xff0c 会有很
  • ROS学习:cv_bridge与opencv版本冲突三种解决方案

    cv bridge与opencv版本冲突三种解决方案 1 问题描述 xff1a 2 解决方案 xff1a 2 1 不使用cv bridge包2 2 令cv bridge使用opencv版本切换为自己工程所使用的版本2 3 下载cv brid
  • Kubernetes实战指南(三十四): 高可用安装K8s集群1.20.x

    文章目录 1 安装说明2 节点规划3 基本配置4 内核配置5 基本组件安装6 高可用组件安装7 集群初始化8 高可用Master9 添加Node节点10 Calico安装11 Metrics Server部署12 Dashboard部署 1
  • 烤四轴

    烤四轴方法 xff0c 先盗图一张 先调试内环后外环 xff08 不明白自行搜索串级PID xff09 1 在飞机的起飞油门基础上进行 PID 参数的调整 xff1b 2 将角度外环去掉 xff0c 将打舵量作为内环的期望 xff1b 3
  • 最全面的linux信号量解析

    2012 06 28 15 08 285人阅读 评论 0 收藏 编辑 删除 信号量 一 xff0e 什么是信号量 信号量的使用主要是用来保护共享资源 xff0c 使得资源在一个时刻只有一个进程 xff08 线程 xff09 所拥有 信号量的
  • ubuntu(20):xargs:clang-format: 没有那个文件或目录与ubuntu18.04安装clang-format

    1 报错排查 xff1a xargs clang format 没有那个文件或目录 运行脚本中的命令如下 xff1b 需要注意这里的clang format后面没有跟数字 修改前脚本 find dogm demo dogm include
  • ORA-28000 the account is locked处理办法

    启动项目的时候提示ORA 28000 the account is locked 这是因为用户被锁定了 oracle11g中默认在default概要文件中设置了 FAILED LOGIN ATTEMPTS 61 10次 xff0c 当输入密
  • 安卓手机 相机和IMU数据获取标定 在VINS-MONO运行自己的数据集(含打包方法) (非常详细一步一步来)

    Android手机上图像和IMU数据采集的方法 网上有相关的教程 xff0c 但都讲的很模糊 xff0c 而且不全 xff0c 甚至还有人要收费 自己完整做了一遍发现还是有些麻烦 xff0c 固记录下来供大家参考 xff0c 希望能帮到大家
  • ros学习笔记--如何看可视化的话题与节点

    输入 rosrun rqt graph rqt graph 可以打开一个界面观察节点与话题的关系 绿色和蓝色的是节点 红色的是话题
  • opencv 环境相关

    拷贝志强服务器的环境需要配置下opencv 安装opencv的一些依赖项 xff0c 防止编译不通过 1 拷贝的库放在 opt下 xff0c 改名字为libs x64 2 安装opencv的依赖项 sudo apt get install
  • ROS CMakeLists 写法

    SET CMAKE BUILD TYPE 34 Debug 34 SET CMAKE CXX FLAGS DEBUG 34 ENV CXXFLAGS O0 Wall g ggdb 34 SET CMAKE CXX FLAGS RELEASE
  • SLAM中的小工具

    g2o中有用的小工具 ifndef G2O STUFF MISC H define G2O STUFF MISC H include 34 macros h 34 include lt cmath gt ifndef M PI define
  • Windows中公用网络与专用网络的区别

    当我们第一次打开一个Windows网络应用程序时 xff0c 会弹出选择网络类型 xff1a 专用网络 xff0c 公用网络 这个的确令人费解 xff0c 相信很多人都不知所措过 有的人干脆都选上 xff0c 这样就避免了被防火墙挡住 这里
  • ubuntu服务器修改ssh登录用户名及端口

    1 如果默认的ssh登录用户名为ubuntu xff0c 需要开通root账户 xff0c 添加密码 xff1a passwd root 还需修改配置 xff0c 具体方法 xff1a vi etc ssh sshd config 确保一下
  • 针对Android MediaCodec解码延时问题的替代解决方案

    如题 xff0c 本人在jni层实现了avc hevc的解码 xff0c 避免了在java上层调用系统的MediaCodec解码出现的延时问题 xff0c 完美支持1080P xff0c 4K xff08 具体看手机性能 xff09 xff
  • 系统环境变量path的列表不见了

    如题 xff0c 在编辑系统环境变量时 xff0c 发现path的环境变量原先是列表显示的 xff0c 看起来比较清晰 xff0c 而现在变成了一个文本框了 xff0c 就不那么一目了然了 于是在网上找到下面这个文章 xff0c 能很好解决
  • gazebo(1):gazebo常见问题及解决办法

    目录 1 将自己创建的gazebo模型导入后 xff0c 模型不停得抖动 xff0c 翻转 2 save world as 之后卡死 3 下载gazebo官方模型 xff1a 4 gazebo更新后无法打开 5 运行gazebo后报错 6
  • Makefile中的$(1)是什么

    Linux工程的编译要用到make工具 xff0c 平台不一样 xff0c 只是工具链不同 xff0c 但Makefile是编译系统的关键所在 xff0c 因此掌握Makefile的编写规则是非常重要的 尽管有了cmake这样更容易使用的编
  • gl的矩阵模式及其相应的矩阵变换函数

    以Android的GL10为例 xff0c 说明一下矩阵模式及其相应的矩阵变换函数 矩阵模式一共分为两种 xff1a gl glMatrixMode GL10 GL MODELVIEW 和 gl glMatrixMode GL10 GL P

随机推荐

  • 对md5sum程序的修改

    linux下自带md5sum工具 xff0c 可以对文件计算md5值 xff0c 但这个命令行工具不能直接对字符串求md5 xff0c 而对一个字符串求md5是一个比较有用的需求 xff0c 比如计算签名 于是对源码md5sum c修改了一
  • 物联网通信协议——比较-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP

    原文链接 xff1a https blog csdn net lightrain0 article details 84343857 AMQP amp MQTT amp DDS https www youtube com watch v 6
  • 门电路逻辑符号大全(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器等)

    最近要研究一下滤波器设计的无乘法器的实现 xff0c 所以要学习一下加法器的电路 xff0c 丢了一段时间 xff0c 忘的差不多了 xff0c 这里罗列一下常用的门电路的符号 这是一个1位全加器的数字电路组成 xff1a 以下两幅图可以复
  • 实函数傅里叶变换的奇偶虚实特性

    本文内容来源于他人的PPT xff0c 经本人整理而成 xff0c 算是对数字信号处理的复习吧 而实偶函数的傅里叶变换仍然是一个实偶函数的性质正是DCT的基础 xfeff xfeff
  • 多面体及欧拉公式及广义欧拉公式

    像正方体 xff0c 四棱锥这样的平面多面体属于简单多面体 xff0c 它们可以与球拓扑同构 xff0c 即可以连续拓扑变换成一个球 它们满足欧拉公式 xff1a v e 43 f 61 2 其中v是顶点 xff08 vertex xff0
  • mysql在表的某一位置增加一列的命令

    如果想在一个已经建好的表中添加一列 xff0c 可以用诸如 xff1a alter table t1 add column addr varchar 20 not null 这条语句会向已有的表t1中加入一列addr xff0c 这一列在表
  • tar命令中的-C作用

    tar xzvf abc tar gz C tmp 上面的命令将abc tar gz这个压缩包解压到当前目录下的tmp目录下 xff0c 而不是当前目录下 xff0c 这就是 C选项的作用
  • Java多线程

    一 基础概念 1 CPU核心数和线程数 多核心指的是单芯片多处理器 xff0c 将多个CPU集成到同一个芯片内 xff0c 不同的CPU可以单独的运行程序 目前主流的CPU有四核 六核 八核 增加核心数目的是为了增加线程数 xff0c 一般
  • ros(23):接收rviz中的2D Nav Goal、2D Pose Estimate消息

    1 rviz 教程 1 1 2D Nav Goal 2D Nav Goal Keyboard shortcut g This tool lets you set a goal sent on the 34 goal 34 ROS topic
  • RealSense SR300 坑4米 获取相机参数

    硬件 相机的原理我了解的也不甚多 xff0c 看到一篇讲的很好的文章 xff0c 就在这里引用了 SR300设备的红外线发射器 xff08 IR Laser Projector xff09 发射的 结构光 xff0c 经物体反射后会被红外线
  • 算法的分类

    算法有多种分类方式 xff0c 可以根据实现方式分类 xff0c 也可以根据设计方法分类 xff0c 还可以根据应用领域进行分类 不同的分类方式有不同的特点 按照实现方式分类 xff0c 可以将算法分为递归算法 迭代算法 逻辑算法 串行算法
  • Eclipse搭建stm32+jlink开发环境全攻略(进阶篇二)

    Eclipse搭建stm32 43 jlink开发环境全攻略 进阶篇 二 我们设计程序往往会遇到这样的一个需求 xff0c 那就是我们的程序起始位置需要重新定位 xff0c 并不是默认的0x08000000 xff0c 这种情况往往出现在有
  • 不要在小公司做底层软件开发

    在这里makekam对底层软件的理解就是指驱动开发 xff0c 代码移植等工作 其中也包括底层的算法 在小公司做软件不要做底层软件开发 xff0c 犹如在公司做硬件开发不要只是焊接电路板 小公司处于产业链的最末端 xff0c 没有自己的核心
  • 多旋翼飞控篇新手课堂教程(共九集)

    多旋翼飞控篇新手课堂第一课 xff0c 将你的NAZA M真正升级成NAZA V2 http www mxkong com thread 134 1 1 html 出处 模型控MxKong 多旋翼飞控篇新手课堂第二课 xff1a NAZA远
  • Java基础final详解

    final中文意思 最后的 最终的 final 可以修饰类 属性 方法和局部变量 1 当不希望类被继承时 可以用final修饰 final class A 不可被继承 2 当不希望父类的某个方法被子类覆盖 重写 override 时 可以用
  • socket编程总结

    socket编程总结 主机字节序和网络字节序 字节序分为大端字节序 xff08 big endian xff09 和小端字节序 xff08 little endian xff09 大端字节序 xff1a 一个整数的高位存在内存的底地址 xf
  • c++中的常见问题

    CSP J终于考完了啊 xff01 坐在考场 xff0c 是一种煎熬 xff1a 为什么那么多不会啊 xff01 xff01 xff01 这里 xff0c 总结一下在c 43 43 中的那些常见问题 xff08 作者亲身经历 xff09 x
  • 大陆毫米波雷达ARS408-21xx(内附毫米波雷达使用说明书)使用记录:第一期

    文章目录 前言一 硬件链接二 代码如何使用三 大陆毫米波雷达ARS408 21XX解析代码说明总结 前言 从我个人的学习成长历程来看 xff0c 从0到1确实很难 我个人在对这款毫米波雷达的学习的过程中也比较痛苦 xff0c 资料缺乏 xf
  • 2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~

    前言 昨晚逛了逛GitHub xff0c 无意中看到一位P8大佬的算法刷题笔记 xff0c 感觉发现了宝藏 xff01 有些小伙伴可能已经发现了 xff0c 但咱这里还是忍不住安利一波 xff0c 怕有些小伙伴没有看到 关于算法刷题的困惑和
  • LIO-SAM学习与运行测试数据集

    文章目录 0 说明0 1 环境配置说明0 2 LIO SAM0 3 系统架构0 4 LIO SAM youtube视频演示 xff1a Rotation Dataset Walking Dataset Park Dataset Campus