SLAM遇到的问题及技巧

2023-05-16

文章目录

    • 1. rosbag太大了,打不开
    • 2.机器人的三维变换
    • roslaunch的node强制关闭了,exit code -11

1. rosbag太大了,打不开

以LZ4格式压缩

rosbag compress --lz4 slam_2019-12-14-23-24-43_filter.bag

我不太清楚这种压缩的形式会不会对数据有影响,有多大的影响,也不知道要怎样的配置才可以能直接打开rosbag,反正至少这样做了能够在一秒左右就直接打开,而原来我两分钟还没有打开。
如果还是觉得太大,可以截取一段时间,
或者仅仅播放一段时间,具体操作见rosbag命令讲解中包过滤与包播放的内容。

2.机器人的三维变换

在“从零开始做无人驾驶定位”系列里,Tag3.0有这样一行代码:

odometry *= lidar_to_imu

a *= b 相当于 a = a *b,因此,上面代码等效于:

odometry = odometry * lidar_to_imu

显然,这里用的是右乘,但我们一般对点云进行变换的时候,都是变换矩阵左乘点的位姿。那么,如何理解呢?
三维矩阵旋转变换中,讲的挺清楚了。这里做个概括。
在矩阵中,有左行右列这个说法。
当我们在世界坐标系进行变换时,每行都要变,因此左乘。
当我们基于自身的旋转坐标系进行变换时,绕一个轴动的话,就变一列就可以了,所以右乘。

不过,我其实也不太理解这两者数学意义上的区别是什么,有空再研究吧。
而在这一例子中,照这个理解,就是kitti2bag在转换的时候的tf是根据旋转坐标系来的,因此需要右乘。

roslaunch的node强制关闭了,exit code -11

用roslaunch打开re0_demo的tag5.0的时候,node被杀死,报错信息如下:

hurricanezj@ZhaoJie-Alienware-17-R4:~/catkin_ws$ roslaunch lidar_localization front_end.launch 
... logging to /home/hurricanezj/.ros/log/99c924c4-88fd-11ea-91e7-9cb6d0effb2d/roslaunch-ZhaoJie-Alienware-17-R4-25122.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://ZhaoJie-Alienware-17-R4:34547/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.14

NODES
  /
    front_end_node (lidar_localization/front_end_node)
    rviz (rviz/rviz)

ROS_MASTER_URI=http://localhost:11311

process[rviz-1]: started with pid [25139]
process[front_end_node-2]: started with pid [25140]
[front_end_node-2] process has died [pid 25140, exit code -11, cmd /home/hurricanezj/catkin_ws/devel/lib/lidar_localization/front_end_node __name:=front_end_node __log:=/home/hurricanezj/.ros/log/99c924c4-88fd-11ea-91e7-9cb6d0effb2d/front_end_node-2.log].
log file: /home/hurricanezj/.ros/log/99c924c4-88fd-11ea-91e7-9cb6d0effb2d/front_end_node-2*.log

国内博客没看到怎么解析这个错误的,后来Google一下,发现一个很厉害的技巧,可以用gdb查错。见用GDB诊断错误。
我做了如下操作:

gdb -arg /home/hurricanezj/catkin_ws/devel/lib/lidar_localization/front_end_node 

进入gdb环境后,输入 r,敲回车,输出为

(gdb) r
Starting program: /home/hurricanezj/catkin_ws/devel/lib/lidar_localization/front_end_node 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffa9c49700 (LWP 6350)]
[New Thread 0x7fffa9448700 (LWP 6351)]
[New Thread 0x7fffa8c47700 (LWP 6352)]
[New Thread 0x7fffa3fff700 (LWP 6357)]
[New Thread 0x7fffa37fe700 (LWP 6389)]

Thread 1 "front_end_node" received signal SIGSEGV, Segmentation fault.
__GI___libc_free (mem=0xe) at malloc.c:2951
2951	malloc.c: No such file or directory.

我查询了received signal SIGSEGV, Segmentation fault.,找到了可能原因

也就是说,可能我的node对空指针进行操作了。
接下来,可能就是二分查错了。在找错这方面,尤其是别人的代码,我并不是很擅长,处理结果等解决了再回来补充。

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

SLAM遇到的问题及技巧 的相关文章

  • 大师兄!SLAM 为什么需要李群与李代数?

    from https mp weixin qq com s sVjy9kr 8qc9W9VN78JoDQ 作者 electech6 来源 计算机视觉life 编辑 Tony 很多刚刚接触SLAM的小伙伴在看到李群和李代数这部分的时候 都有点
  • ROS STAGE教程2(地图定义和GMAPPING建图)

    目前用在ROS Kinetic上的stage版本为4 1 官方教程http rtv github io Stage modules html 用户可以用stage或者gazebo来创建地图和机器人 传感器模型来进行仿真 并与自己的SLAM模
  • LIO-SAM:在高斯牛顿法求解过程中用SO3代替欧拉角

    LIO SAM发表于IROS2020 是一个效果非常好的惯性 激光紧耦合里程计 我打算给我们的机器人搞一个激光里程计 于是打算把LIO SAM改一改搞过来 修改过程中发现一个问题 在里程计求解 mapOptimization的LMOptim
  • 激光SLAM直接线性方法里程计运动模型及标定

    原创作者 W Tortoise 原创作者文章 https blog csdn net learning tortosie article details 107763626 1 里程计运动模型 1 1 两轮差分底盘的运动模型 1 2 三轮全
  • 对最小二乘法的一点理解 - slam学习笔记

    我对最小二乘法的理解 在给定参数个数和函数模型之后 根据测试数据 找出与所有测试数据的偏差的平方和最小的参数 这里面应该有两个问题 1 为什么选取与真实数据平方和最小的拟合函数 2 如何求参数 为什么选取与真实数据平方和最小的拟合函数 极大
  • 经典坐标变换案例代码剖析

    题目 设有小萝卜一号和小萝卜二号位于世界坐标系中 记世界坐标系为W 小萝卜们的坐标系为R1和 R2 小萝卜一号的位姿为q2 0 35 0 2 0 3 0 1 T t1 0 3 0 1 0 1 T 小萝卜二号的位姿为q2 0 5 0 4 0
  • 单目视觉里程记代码

    在Github上发现了一个简单的单目vo 有接近500星 链接如下 https github com avisingh599 mono vo 这个单目里程计主要依靠opencv实现 提取fast角点并进行光流跟踪 然后求取本质矩阵并恢复两帧
  • [SLAM四元数基础系列一] 四元数定义 Hamilton vs JPL

    四元数定义 Hamilton vs JPL 简介 四种区分方式 Hamilton vs JPL 引用 不管是卡尔曼滤波或者BA优化形式的SLAM或者VIO系统中 都需要用到单位四元数 Quaternion 来表示旋转 主要是单位四元数表示旋
  • vscode配置eigen3

    目录 1 头文件包含 2 c cpp properties json 3 CMakeList txt 4 完整代码 1 头文件包含 Eigen 核心部分 include
  • 图像匹配算法

    图像匹配算法分为3类 基于灰度的匹配算法 基于特征的匹配算法 基于关系的匹配算法 1 基于灰度的模板匹配算法 模板匹配 Blocking Matching 是根据已知模板图像到另一幅图像中寻找与模板图像相似的子图像 基于灰度的匹配算法也称作
  • 互转(经纬度、地心坐标、东北天坐标)

    Part1三种坐标系介绍 经纬度坐标 假设空间某点P 用经纬度表示的话 你们B代表纬度 L代表经度 H代表大地高 纬度B P点沿着地球法线方向与赤道面的夹角 向北为正称为北纬 0 90 向南为负称为南纬 0 90 实际表示可以用 90 90
  • 视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM)

    SLAM 同时定位与地图构建 机器人和计算机视觉领域的基本问题 在未知环境中定位自身方位并同时构建环境三维地图 应用广泛 增强现实 虚拟现实 机器人 无人驾驶 SLAM常用的传感器 红外传感器 较近距离感应 常用与扫地机器人 激光雷达 单线
  • Eigen::aligned_allocator

    如果STL容器中的元素是Eigen库数据结构 例如这里定义一个vector容器 元素是Matrix4d 如下所示 vector
  • SLAM--三角测量SVD分解法、最小二乘法及R t矩阵的判断

    目录 一 三角测量 方法一 SVD分解法的推导 方法二 最小二乘法求解 二 ORB SLAM2 三角测量源码 三 利用Eigen源码实现三角测量 方法一 SVD分解法 方法二 最小二乘法求解 速度最快 方法三 利用OpenCV自带函数 四
  • 无人车

    1 无人车四大核心技术 自动驾驶实际包含三个问题 一是我在哪 二是我要去哪 三是如何去 第一个问题是环境感知和精确定位 无人车需要的是厘米级定位 厘米级定位是无人驾驶的难点之一 不光是车辆本身的语义级定位 还有一个绝对坐标定位 第二个问题是
  • LOAM算法详解

    激光SLAM 帧间匹配方法 Point to Plane ICP NDT Feature based Method 回环检测方法 Scan to Scan Scan to Map LOAM创新点 定位和建图的分离 里程计模块 高频低质量的帧
  • BLAM跑自己的数据包无法显示全局点云地图解决(速腾聚创RS-LiDAR-16 雷达 )-SLAM不学无术小问题

    BLAM算法跑自己的数据包无法显示全局点云地图解决 适配速腾聚创RS LiDAR 16 雷达 提示 本文笔者使用环境Ubuntu18 04 ROS melodic版本 首先放一个效果链接 由b站up VladimirDuan上传 非官方 官
  • 视觉SLAM漫谈

    视觉SLAM漫谈 1 前言 开始做SLAM 机器人同时定位与建图 研究已经近一年了 从一年级开始对这个方向产生兴趣 到现在为止 也算是对这个领域有了大致的了解 然而越了解 越觉得这个方向难度很大 总体来讲有以下几个原因 入门资料很少 虽然国
  • LIO-SAM运行自己数据包遇到的问题解决--SLAM不学无数术小问题

    LIO SAM 成功适配自己数据集 注意本文测试环境 Ubuntu18 04 ROS melodic版本 笔者用到的硬件以简单参数 激光雷达 速腾聚创16线激光雷达 RS Lidar 16 IMU 超核电子CH110型 9轴惯导 使用频率1
  • 什么是深度学习的无监督学习与有监督学习

    无监督学习 深度学习中的无监督学习方法是一种训练算法 它在没有标注输出的情况下从输入数据中学习模式和特征 这种方法的核心是探索和理解数据的内在结构和分布 而不是通过已知的输出来指导学习过程 无监督学习在深度学习领域有许多不同的形式和应用 以

随机推荐

  • STM32CubeMX配置串口DMA传输实现不定长数据收发

    串口简介 串口是全双工的串行通信协议 串口通信指串口按位 xff08 bit xff09 发送和接收字节 xff08 一个字节有8位 xff09 尽管比特字节 xff08 byte xff09 的串行通信慢 xff0c 但是串口可以在使用一
  • 单片机串口不够用怎么办?

    扩展串口 一 为什么要扩展串口 xff1f 一块单片机的串口是有限的 xff0c 一般2 4个 当我们做一个项目时需要连接多个外设时跟单片机通讯时 xff0c 且通讯都是以串口形式 那么我们只能去扩展串口来满足我们的应用需求 二 解决方法
  • C语言:自定义实现strcat函数

    include lt stdio h gt include lt assert h gt char My Strcat char str1 const char str2 assert str1 amp amp str2 指针不为空 cha
  • 了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形

    文章目录 前言一 串口协议1 RS 2322 485标准 二 RS 232 485和TTL电平1 RS 232电平2 4853 TTL电平4 区别 三 USB TTL转2321 CH3402 发送接收3 USB转RS 232 四 完成一个S
  • UART RS232 RS485协议原理及应用

    一 URAT UART Universal Asynchronous Receiver Transmitter 通用异步收发传输器 xff0c 简称串口 xff0c 是设备间进行异步通信的模块 UART负责处理数据总线和串行口之间的串 并
  • 2022年电赛E题声源定位跟踪系统

    我们组本来是奔着视觉题去的 xff0c 可是到比赛的时候突然发现好像就无人机比较合适 xff0c 但是我们都没玩过无人机 xff0c 本想转战小车 xff0c 可是材料突然发现要两辆小车 xff0c 材料也不够来不及买 xff0c 于是我们
  • Python中requests库使用方法详解

    python中requests库使用方法详解 前言 xff1a 一 什么是Requests二 安装Requests库三 各种请求方式1 基本的GET请求2 带参数的GET请求3 解析json4 获取二进制数据5 添加headers6 基本P
  • File Browser的安装(适用于Kali/Ubuntu/Debian)

    filebrowser是一个基于Go开发的开源轻量级免费的文件浏览器 xff0c 可以把电脑上的文件快速传到其他设备上 1 下载 下载地址 xff1a https github com filebrowser filebrowser rel
  • Ubuntu 挂载硬盘到 /home 目录下扩容

    实验室提供的 NVIDIA Jetson NX 内存容量太小 xff0c 只有16G xff0c 刷完机装上系统和 CUDA 等安装包后 xff0c 系统只剩下一点多个G xff0c 后面完全是不够用的 xff0c 因此需要加硬盘并挂载才能
  • vue-element-admin 二次开发 报错修改

    安装 GitHub git clone https github com PanJiaChen vue element admin git Gitee https gitee com panjiachen vue element admin
  • 常用字符串函数

    1 strlen 函数 strlen 函数用来计算字符串长度 用法 xff1a 结果 xff1a 2 strcpy 函数 用来将一个数组的内容拷贝到另一个数组 用法 xff1a 结果 xff1a 注意 xff1a 如果a1中的比a2中的长
  • C++ 学习日志——STL中的容器 Vector

    本文简单的介绍下STL下的容器 vector的简单的存放和遍历方法 目录 一 vector存放和访问方式 二 三种遍历方式 三 vector存放对象 四 vector存放指针 难点 一 vector存放和访问方式 迭代器 xff1a vec
  • ARM汇编程序入门实践

    一 stm32程序 1 新建工程 1 xff09 双击打开keil xff0c 点击菜单栏Project gt New Vision Project xff0c 新建项目 xff0c 在弹窗中设置工程项目的名称和路径 xff0c 在这里 x
  • 【STM32学习笔记】(5)—— STM32工程添加源文件和头文件

    向工程目录里创建头文件和源文件 STM32的工程文件构成较为复杂 xff0c 同时为STM32工程文件添加源文件和头文件也是较为复杂的 xff0c 下面就由此文章来介绍怎么给STM32工程添加源文件 xff08 c xff09 与头文件 x
  • 在STM32中使用printf函数

    一 目的 利用printf函数使得输出打印到串口中 二 工作原理 我们在C语言中为什么能够调用printf函数打印数据到控制台中 xff0c 那是因为printf函数又调用了fputc 函数 那么我们我们可不可以说printf函数之所以能够
  • 电赛备赛日记(一):K210与STM32串口通信

    拖更了n久的备赛日记终于来啦 xff0c 最近实现了关于K210图像识别并将所需数据 xff08 即目标类别 xff0c 目标在图像中的加权坐标 xff09 其中 xff0c 加权坐标指K210识别到的目标并框出的框的宽和高与框左上顶点的坐
  • 实验作业2(数组)

    64 TOC实验题目2 xff1a 某公司生产5种产品 xff0c 每周记录生产的每种产品数量和销售数量 每个月月末 xff0c 公司将对其生产规划进行评估 该评估需要以下一个或多个信息 每周生成和销售的数量 xff1b 所有生产产品的总量
  • 函数作业

    仅供交流 xff0c 禁止抄袭 实验一 求序列的和 问题描述 求Y 61 1 1 2 43 1 3 1 4 43 1 2 n 的前n项之和 输入形式 从键盘输入n 输出形式 输出n项和 按四舍五入的方式精确到小数点后第二位 样例输入 30
  • Windows下MySQL安装及配置

    目录 1 MySQL下载2 MySQL配置 mysql版本 xff1a 5 7 注 xff1a 1 现在最新的mysql版本是8 0 xff0c 但是一般安装软件都不推荐安装最新版本的 xff0c 因为可能会有一些错误无法预见 xff0c
  • SLAM遇到的问题及技巧

    文章目录 1 rosbag太大了 xff0c 打不开2 机器人的三维变换roslaunch的node强制关闭了 xff0c exit code 11 1 rosbag太大了 xff0c 打不开 以LZ4格式压缩 rosbag compres