mid360使用cartorapher进行3d建图导航
1. 添加urdf配置文件:
添加IMU配置关节点和laser关节点
<!-- imu livox -->
<joint name="livox_frame_joint" type="fixed">
<parent link="base_link" />
<child link="livox_frame" />
<origin xyz="0 0 0" rpy="3.1416 0 0" />
</joint>
2. 配置文件cartographer_ros/configuration_files/backpack_3d.lua
使用base_link
map_frame = "map", --map
tracking_frame = "base_link", --base_link imu_link rslidar
published_frame = "base_link", --base_link rslidar
3. 配置cartographer_ros/launch/backpack_3d.launch....貌似这个建图的时候配置的,定位没用着!
转换topic:使用mid360的topic!
<remap from="points2" to="/livox/lidar />
<remap from="imu" to="/livox/imu" /> <!-- -->
4.配置 cartographer_ros/configuration_files/backpack_3d_localization.lua
把纯定位给去掉,不知道为什么,应该是pure_localization参数多了一个
include "backpack_3d.lua"
--TRAJECTORY_BUILDER.pure_localization = true
POSE_GRAPH.optimize_every_n_nodes = 100
return options
5.修改 cartographer_ros/launch/3d_local_wish.launch文件,就是3d_localization.launch文件,其它不做任何修改
<remap from="points2" to="/livox/lidar />
<remap from="imu" to="/livox/imu" /> <!-- -->
6.测试launch启动:使用提前建好的图
roslaunch cartographer_ros 3d_local_wish.launch load_map:=/home/wishchin/map3d/innercross.pbstream

结果:mid360的数据就是比较恍眼,定位成功

相关文章:
mid360使用cartorapher进行3d建图导航
1. 添加urdf配置文件: 添加IMU配置关节点和laser关节点 <!-- imu livox --> <joint name"livox_frame_joint" type"fixed"> <parent link"base_link" /> <child link"livox_frame" /> <o…...
Ubuntu安装grafana
需求背景:管理服务器,并在线预警,通知 需求目的: 及时获取服务器状态 技能要求: 1、ubuntu 2、grafana 3、prometheus 4、node 步骤: 一、grafana安装 1、准备系统环境,配置号网络 2、…...
Java版-图论-最短路-Floyd算法
实现描述 网络延迟时间示例 根据上面提示,可以计算出,最大有100个点,最大耗时为100*wi,即最大的耗时为10000,任何耗时计算出来超过这个值可以理解为不可达了;从而得出实现代码里面的: int maxTime 10005…...
可视化建模以及UML期末复习篇----UML图
这是一篇相对较长的文章,如你们所见,比较详细,全长两万字。我不建议你们一次性看完,直接跳目录找你需要的知识点即可。 --------欢迎各位来到我UML国! 一、UML图 总共有如下几种: 用例图(Use Ca…...
HTML常见标签列表,涵盖了多种用途的标签。
文档结构标签 <!DOCTYPE html>:声明文档类型,告诉浏览器使用HTML5标准。<html>:HTML文档的根元素。<head>:包含文档的元数据(meta-data),如标题、字符集、样式表链接、脚本等…...
FPGA 16 ,Verilog中的位宽:深入理解与应用
目录 前言 一. 位宽的基本概念 二. 位宽的定义方法 1. 使用向量变量定义位宽 ① 向量类型及位宽指定 ② 位宽范围及位索引含义 ③ 存储数据与字节数据 2. 使用常量参数定义位宽 3. 使用宏定义位宽 4. 使用[:][-:]操作符定义位宽 1. 详细解释 : 操作符 -: 操作符 …...
vue-生命周期
Vue 的生命周期是指 Vue 实例从创建到销毁期间经历的一系列阶段。每个阶段都有相应的钩子函数(Lifecycle Hooks),允许开发者在这些关键时刻执行自定义逻辑。 一、钩子函数 1. 创建阶段 beforeCreate 在实例初始化之后,数据观测 …...
浅谈Kubernetes(K8s)之RC控制器与RS控制器
1.RC控制器 1.1RC概述 Replication Controller 控制器会持续监控正在运行的Pod列表,并保证相应类型的Pod的数量与期望相符合,如果Pod数量过少,它会根据Pod模板创建新的副本,反之则会删除多余副本。通过RC可实现了应用服务的高可用…...
本题要求采用选择法排序,将给定的n个整数从大到小排序后输出。
#include <stdio.h> #define MAXN 10 int main() { int i, index, k, n, temp; int a[MAXN]; scanf("%d", &n); for (i 0; i < n; i) { scanf("%d", &a[i]); } // 外层循环控制排序轮数,一共需要n-1轮 for (k 0; k < n…...
Linux: glibc: 频繁调用new/delete会不会导致内存的碎片
最近同事问了一个问题:频繁调用new/delete会不会导致内存的碎片。 下面是我想到的一些回答, glibc的内存处理机制,是在释放的时候会自动将小块内存整合成大块内存,为接下来满足大块的需求的可能。而且程序也不是一直占着内存不释放(如果是一直不释放,要考虑是不是内存泄漏…...
量子变分算法---损失函数
引子 关于损失函数,我们知道在强化学习中,会有一个函数,用来表示模型每一次行为的分数,通过最大化得分,建立一个正反馈机制,若模型为最优则加分最多,若决策不佳则加很少分或者扣分。而在神经网络…...
计算机的性能评估
目录 计算机的性能评估 确定性能指标 考虑通讯因素 考虑机器过热因素 综合评估模型 动态评估与调整 计算机的性能评估 在分布式计算机系统中,综合考虑各种因素来评估性能是一个复杂但重要的问题。以下是一种可能的方法来综合考虑评估分布式计算机性能,动态地考虑实际情…...
大数据之国产数据库_OceanBase数据库002_在centos7.9上_安装部署OceanBase001_踩坑指南_亲测可用
部署前最好看一下,部署前的要求, 主要是系统 以及系统内核版本,还有比如清理一下缓存等,按照做一做. 这些都是前置条件. 清一下缓存. 也就是说官网给的前置的条件,都要根据说明去执行一遍,如果不执行可能后面安装会报错. 然后用户最好也去创建一个用户. 注意前置...
【ETCD】【源码阅读】深入解析 EtcdServer.run 函数
EtcdServer.run 是 etcd 的核心运行逻辑之一,负责管理 Raft 状态机的应用、事件调度以及集群的核心操作。本文将逐步从源码层面分析 run 函数的逻辑,帮助读者理解其内部机制和设计思想。 函数签名与关键职责 func (s *EtcdServer) run() {... }关键职责…...
springboot/ssm校内订餐系统Java代码web项目美食外卖点餐配送源码
springboot/ssm校内订餐系统Java代码web项目美食外卖点餐配送源码 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库ÿ…...
floodfill算法
目录 什么是floodfill算法 题目一——733. 图像渲染 - 力扣(LeetCode) 题目二——200. 岛屿数量 - 力扣(LeetCode) 题目三——695. 岛屿的最大面积 - 力扣(LeetCode) 题目四—— 130. 被围绕的区域 …...
【JAVA】六亮增加贴
James Gosling(詹姆斯.高斯林) Java 语言源于 1991 年 4 月,Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序…...
git提交时出现merge branch main of xxx
git提交时出现merge branch main of xxx 原因: 1、同事commit了一个修改A,push到remote 2、我把这个修改直接pull了下来(pull是fetchmerge的操作,自动合并到本地workspace) 3、同事因为后续的commit有冲突,…...
lstm 输入数据的形状是怎么样的,他有两种输入方式,通过参数 batch_first来设置 默认是False
lstm 输入数据的形状是怎么样的,他有两种输入方式,通过参数 batch_first来设置 默认是False 当batch_firstFalse时,LSTM输入的数据形状通常是一个三维张量,其维度顺序为[sequence_length, batch_size, input_size]。下面是对这些维…...
Apache Doris 数据类型
Apache Doris 已支持的数据类型列表如下: 数值类型 类型名存储空间(字节)描述BOOLEAN1布尔值,0 代表 false,1 代表 true。TINYINT1有符号整数,范围 [-128, 127]。SMALLINT2有符号整数,范围 …...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...
