Cartographer重入门到精通(二):运行作者demo及自己的数据集

在demo数据包上运行cartographer

现在Cartographer和Cartographer的Ros包已经都安装好了,你可以下载官方的数据集到指定的目录(比如在Deutsches Museum用背包采集的2D和3D
数据),然后使用roslauch来启动demo。

注:launch文件会自动同时启动roscore和rviz。

当你想运行cartographer_ros,你可能先要使用source install_isolated/setup.bash来加载你的ros运行环境。install_isolated换成你自己的安装路径即可。一般ubuntu系统只要source setup.bash就可以,其他版本可能source setup.zsh。

Deutsches Museum数据集(著名的德意志国家图书馆)

在这里插入图片描述

下载2D激光数据包,也可以从这里获取 百度云盘 提取码: ng5b

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag

然后运行2d激光的demo

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

下载3D激光数据包,

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag

然后运行3D激光的demo

roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag
Pure localization(纯定位)

这里纯定位demo使用2个数据包,一个数据包用于建图,第2个数据包用来运行纯定位。这里解释一下,一般我们机器人来到一个未知环境,首先需要探索并先建立地图,然后我们才能使用建立好地图用来定位自己的信息。这里纯定位的“纯”是相对于建图来说,纯定位的时候地图是已知的,使用之前建立好的地图进行纯粹的定位功能,所以这个demo并不像建图一样占用大量的cpu。

下载2d数据包,下面是2条指令,下载2个数据包

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-05-14-44-52.bag
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-27-12-31-41.bag

生成地图(等待cartographer_offline_node完成建图后,会生成pbstream地图文件),然后再运行纯定位demo

使用离线数据包建图

roslaunch cartographer_ros offline_backpack_3d.launch bag_filenames:=${HOME}/Downloads/b3-2016-04-05-13-54-42.bag

使用生成的地图进行定位

roslaunch cartographer_ros demo_backpack_3d_localization.launch \load_state_filename:=${HOME}/Downloads/b3-2016-04-05-13-54-42.bag.pbstream \bag_filename:=${HOME}/Downloads/b3-2016-04-05-15-52-20.bag
Static landmarks(静态路标)

这个demo是个大杀器,我们知道很多场景是不断变化的,那么我们之前建立的激光地图可能就会失效,那我们频繁的更新激光地图是不是太麻烦,所以我们人为的设置一些路标,就可以大大提高我们定位时的稳定性,实际测试效果也很好。
静态路标可以使用二维码(可以贴在地上、也可以贴在墙上,根据自己的相机安装位置不同决定)、反光柱、反光贴纸、反光柱组合等,有些还会使用自定义的激光特征。
一种贴在地面的二维码,可以配套使用使用海康、大华agv读码器。
在这里插入图片描述

反光柱
在这里插入图片描述

下载数据包

# Download the landmarks example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/mir/landmarks_demo_uncalibrated.bag

运行landmark的demo

# Launch the landmarks demo.
roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filename:=${HOME}/Downloads/landmarks_demo_uncalibrated.bag
Revo LDS

下载并运行一个低成本激光雷达的demo,这个数据来自一个叫做Neato Robotics的吸尘机器人的Revo的激光雷达。这也是carto的亮点,他可以在精度比较差的激光雷达上稳定运行,证明了carto算法的通用性和高效性,并不挑硬件和精度。
下载数据

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/revo_lds/cartographer_paper_revo_lds.bag

运行demo

roslaunch cartographer_ros demo_revo_lds.launch bag_filename:=${HOME}/Downloads/cartographer_paper_revo_lds.bag

还有一些数据集并没有突出亮点,我们就不一一举例了。然后我们下面采集自己的数据集合并测试运行cartograher。

测试自己的数据集

简单一下几个步骤

  1. 根据传感器的frame_id,创建自己机器人的模型文件,即urdf文件。
  2. 然后在对应的launch文件中修改使用自己的urdf文件。
  3. 运行demo就可以了。

这里分享我自己的一些数据包 网页地址

一般来说精度好一些的激光雷达(比如倍加福R2000、sick等)和陀螺仪(100以上都可以)运行时用默认的lua参数就可以。

效果如图
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IO半虚拟化-Virtio学习笔记

参考:《深入浅出DPDK》及大佬们的各种博客 Virtio简介&运行环境 Virtio 是一种用于虚拟化环境中的半虚拟化 I/O 框架,目的是在虚拟机和主机之间提供一种高效的 I/O 机制。关于什么是半虚拟化和全虚拟化:见SR-IOV学习笔记。 YES&#xf…

PDMS二次开发(二十二)——关于1.0.3.1版本升级内容的说明

目录 1.更新内容介绍2.效果演示3.关于重构自动添加焊口功能的说明3.1错误示例 3.问题交流1.创建焊口提示失败2.程序崩溃 1.更新内容介绍 在添加焊口之前先清除当前branch已有焊口;显示清除焊口的个数和添加焊口的个数;重构了自动添加焊口功能&#xff0…

值得关注的数据资产入表

不错的讲解视频,来自:第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办-20240708_哔哩哔哩_bilibili

《A++ 敏捷开发》- 10 二八原则

团队成员协作,利用项目数据,分析根本原因,制定纠正措施,并立马尝试,判断是否有效,是改善的“基本功”。10-12章会探索里面的注意事项,13章会看两家公司的实施情况和常见问题。 如果已经获得高层…

java中的String 以及其方法(超详细!!!)

文章目录 一、String类型是什么String不可变的原因(经典面试题)String不可变的好处 二、String的常用构造形式1.使用常量串构造2.使用newString对象构造3.字符串数组构造 三、常用方法1. length() 获取字符串的长度2. charAt() 获取字符串中指定字符的值 (代码单元)3. codePoin…

水的几个科学问题及引发的思考

水的几个科学问题及引发的思考 两个相同的容器A和B,分别装有同质量的水,然后,在A容器中加入水,在B容器中加入冰,如果加入水和冰的质量相同。问,容器B的水位将与容器A的水位相同吗(假设冰未融化时…

【ZooKeeper学习笔记】

1. ZooKeeper基本概念 Zookeeper官网:https://zookeeper.apache.org/index.html Zookeeper是Apache Hadoop项目中的一个子项目,是一个树形目录服务Zookeeper翻译过来就是动物园管理员,用来管理Hadoop(大象)、Hive&…

AR0132AT 1/3 英寸 CMOS 数字图像传感器可提供百万像素 HDR 图像处理(器件编号包含:AR0132AT6R、AR0132AT6C)

AR0132AT 1/3 英寸 CMOS 数字图像传感器,带 1280H x 960V 有效像素阵列。它能在线性或高动态模式下捕捉图像,且带有卷帘快门读取。它包含了多种复杂的摄像功能,如自动曝光控制、开窗,以及视频和单帧模式。它适用于低光度和高动态范…

QML界面控件加载与显示顺序

一、QML界面控件加载顺序 QML在界面加载时的顺序和我们认知的有很大的不同,有时候会对我们获取参数以及界面实现造成很大的困扰 1、加载顺序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …

九盾安防:如何调控叉车限速器的报警速度呢

在繁忙的物流仓储和制造业环境中,叉车是不可或缺的搬运设备。然而,其高速行驶也带来了潜在的安全隐患。为了确保作业人员和货物的安全,又车限速器的设置显得尤为关键。那么,如何调控叉车限速器的报警速度呢? 叉车限速器的速度调整…

复制vmware虚拟机文件并改名(文件名使用python替换)得到一台新的虚拟机

文章目录 需求实验复制文件夹并重命名使用python将所有文件名“WinSer2022”字符替换成“wingetmac”修改虚拟机配置文件(.vmx)打开新的虚拟机成功 需求 将已有的Winser2022虚拟机复制成wingetmac并开机 实验 复制文件夹并重命名 将"WinSer2022…

了解并缓解 IP 欺骗攻击

欺骗是黑客用来未经授权访问计算机或网络的一种网络攻击,IP 欺骗是其他欺骗方法中最常见的欺骗类型。通过 IP 欺骗,攻击者可以隐藏 IP 数据包的真实来源,使攻击来源难以知晓。一旦访问网络或设备/主机,网络犯罪分子通常会挖掘其中…

1559. 二维网格图中探测环

1559. 二维网格图中探测环 给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在 相同值 形成的环。 一个环是一条开始和结束于同一个格子的长度 大于等于 4 的路径。对于一个给定的格子,你可以移动到它上、下、左、右…

【Qt 初识】QPushButton 的详解以及 Qt 中的坐标

文章目录 1. Qt 中的信号槽机制 🍎2. 通过图形化界面的方式实现 🍎3. 通过纯代码的方式实现按钮版的HelloWorld 🍎4. 设置坐标 🍎 1. Qt 中的信号槽机制 🍎 》🐧 本质就是给按钮的点击操作,关联…

GuLi商城-商品服务-API-品牌管理-OSS获取服务端签名(续)

如何进行服务端签名直传_对象存储(OSS)-阿里云帮助中心 gulimall-third-party服务的代码: package com.nanjing.gulimall.thirdparty.controller;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.BinaryUtil; impor…

Linux开发:Fuse介绍

Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持,开发者只需要根据fuse提供的接口实现具体的文件操作时所对应的回调函数,就可以实现一个文件系统。由于其主要实现代码位于用户空间中,因此不需要重新编译内…

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(二)

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(二) 0. 引言1. 关于m_geodesic2. 关于mygrid_sand23. 结语 0. 引言 通过前面篇节已经将m_map绘图工具中大多绘图有关的函数进行过介绍,已经能够满足基本的绘图需求,本节…

个人倒计时页面源码,实用倒计时单页源码

一、源码描述 这是一款非常实用的个人倒计时页面,支持设置未来一年时间,支持设置背景音乐,支持自定义下拉页面,点击向下箭头查看。 二、源码截图 三、源码下载

深入探讨【C++容器适配器】:现代编程中的【Stack与Queue】的实现

目录 一、Stack(栈) 1.1 Stack的介绍 1.2 Stack的使用 1.3 Stack的模拟实现 二、Queue(队列) 2.1 Queue的介绍 2.2 Queue的使用 2.3 Queue的模拟实现 三、容器适配器 3.1 什么是适配器 3.2 为什么选择deque作为stack和…

基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件

基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件 摘要 随着前端技术的迅速发展和业务场景的日益复杂,传统的整块应用开发方式已无法满足现代开发的需求。组件化开发作为一种有效的解决方案,能够将系统拆分为独立、…