cartographer 学习

news2025/1/10 1:42:01

cartographer 学习

编译并运行代码

由于cartographer整体分成了两个包

  • 一个是cartographer,不带ros的内容
  • 另一个是cartographer_ros,是已ros项目构建的
    这样因为带了普通cmake的包,就没法使用catkin_make了,只能使用catkin_make_isolated

编译:catkin_make_isolated --install --use-ninja

catkin_make_isolated会生成三个目录:

  • build_isolated
  • devel_isolated
  • install_isolated

其中所有的launch文件会被复制一份到install_isolated的share中。
也就是修改cartographer_ros中的launch文件,需要再编译一次才会生效(这里编译其实就是再拷一份文件),而catkin_make修改launch文件是不需要重新编译的


编译后source一下对应目录,然后启动就好了:
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

启动demo的launch文件分析

demo_backpack_2d.launch

<launch>
  <param name="/use_sim_time" value="true" />

  <include file="$(find cartographer_ros)/launch/backpack_2d.launch" />

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
  <node name="playbag" pkg="rosbag" type="play"
      args="--clock $(arg bag_filename)" />
</launch>
  • param是设置参数服务器,/use_sim_time设置成true是播放bag是使用仿真时间
  • include是添加其它的launch配置文件
  • node是启动节点,启动了rviz,并且required="true"是必须要启动成功,如果rviz节点无法正常启动,launch文件将会终止运行并报错。-d设置rviz的配置文件
  • 还启动了playbag节点,用于播放包,其中参数$(arg bag_filename)是执行roslaunch时指定的

backpack_2d.launch

<launch>
  <param name="robot_description"
    textfile="$(find cartographer_ros)/urdf/backpack_2d.urdf" />

  <node name="robot_state_publisher" pkg="robot_state_publisher"
    type="robot_state_publisher" />

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory $(find cartographer_ros)/configuration_files
          -configuration_basename backpack_2d.lua"
      output="screen">
    <remap from="echoes" to="horizontal_laser_2d" />
  </node>

  <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
      type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
</launch>
  • 设置了参数robot_description,值是文本文件,这个参数用于提供机器人的URDF描述。
  • 运行了节点robot_state_publisher,用于将机器人的关节状态发布为tf变换。
  • 运行了节点cartographer_node,输入参数给了一个lua配置文件
  • <remap>标签用于重新映射节点的话题,将echoes话题重映射为horizontal_laser_2d话题。这样订阅echoes可以很方便的更改为horizontal_laser_2d而不需要重新编译
  • 运行了节点cartographer_occupancy_grid_node用来生成占据网格地图,设置了参数resolution,网格分辨率是0.05m

查看相应信息

使用rqt_graph可以查看节点连接情况
在这里插入图片描述

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

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

相关文章

Global mapper24.1最新中文版本教程以及安装包

Global mapper成为如此用户友好的数据编辑、分析等工具的部分原因是它如何处理已删除的要素。从撤消管理器到独立工作空间&#xff0c;已删除的功能并不总是消失。矢量特征以一种简单的方式&#xff0c;当您在需要时遇到它时几乎感觉像魔术一样&#xff0c;矢量特征存储在工作区…

【python基础知识】8.编程思维:如何解决问题-思维篇

文章目录 前言瓶颈1&#xff1a;知识学完就忘用法查询笔记深度理解笔记知识管理 瓶颈2&#xff1a;缺乏解题能力如何解题分析问题&#xff0c;明确结果思考需要的知识&#xff0c;或搜索新知识思考切入点尝试解决问题的一部分尝试重复1-4步 总结 前言 Hi&#xff0c;欢迎来到第…

three.js 纹理

默认情况下&#xff0c;您在 Three.js 中渲染的所有内容都会发送到屏幕上。毕竟&#xff0c;如果你看不到它&#xff0c;渲染它有什么意义呢&#xff1f;事实证明&#xff0c;有一个非常重要的点&#xff1a;在数据发送到屏幕&#xff08;从而丢失&#xff09;之前捕获数据。 …

Apache Doris 2.0 如何实现导入性能提升 2-8 倍

数据导入吞吐是 OLAP 系统性能的重要衡量标准之一&#xff0c;高效的数据导入能力能够加速数据实时处理和分析的效率。随着 Apache Doris 用户规模的不断扩大&#xff0c; 越来越多用户对数据导入提出更高的要求&#xff0c;这也为 Apache Doris 的数据导入能力带来了更大的挑战…

二进制+八进制+十进制+十六进制的转换关系

二进制+八进制+十进制+十六进制的转换关系 1.十进制:由0-9这九个数字组成,逢10进1,我们日常生活中用的就是十进制; 2.二进制:由0和1两个数字组成,逢2进1; 3.八进制:由0-7这8个数字组成,逢8进1; 4.十六进制:由0-9、A、B、C、D、E、F组成,A-F对应的是10-15,逢16进…

【Redis】为什么要学 Redis

文章目录 前言一、Redis 为什么快二、Redis 的特性2.1 将数据储存到内存中2.2 可编程性2.3 可扩展性2.4 持久性2.5 支持集群2.6 高可用性 三、Redis 的应用场景四、不能使用 Redis 的场景 前言 关于为什么要学 Redis 这个问题&#xff0c;一个字就可以回答&#xff0c;那就是&…

创建java文件 自动添加作者、时间等信息 – IDEA 技巧

文章目录 效果修改位置配置信息 效果 每次创建文件的时候&#xff0c;自动加上作者、时间等信息 修改位置 打开&#xff1a;File —> Settings —> Editor —> File and Code Templates —> includes —> FileHeader 配置信息 /*** author : JavaPub 王仕宇* d…

文件包含漏洞实战

加粗样式 文章目录 漏洞原理特点利用方法包含图片木马读取敏感文件 封装协议 复现环境准备漏洞点代码审计验证漏洞点读取敏感文件 文件包含漏洞文件上传漏洞深度利用中国蚁剑-getshell突破文件上传漏洞限制读取文件源码执行PHP命令远程文件包含 文件包含漏洞防御 本次测试仅供…

SMB 协议详解之-SMB1文件写入交互过程详解

本文介绍一下SMB协议的交互过程。由于SMB涉及非常多的字段,绝大多数人员没有必要对每个字段进行深入的了解(那可能更多的是协议开发人员需要做的工作)。对于SMB协议的学习,主要的目的是能够根据数据包的交互过程,还原出这次SMB交互干了什么,产生了哪些操作。因此本文聚焦…

centos执行systemctl restart命令报连接超时

centos执行systemctl restart命令报连接超时 Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.TimedOut: Activation of org.freedesktop.PolicyKit1 tim…

LeetCode 18 四数之和

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 固定两个数&#xff0c;然后利用双指针来进行剩下两个数的筛选 主要使用的是三数之和的思想&#xff0c;具体可以看我上篇博客 注意去重 代码 class Solution { public:vector<…

学习笔记二十:Pod生命周期-启动钩子、停止钩子

Pod生命周期-启动钩子、停止钩子 Pod生命周期pod在整个生命周期的过程中总会处于以下几个状态&#xff1a;pod生命周期的重要行为&#xff1a;容器探测三种探针用于Pod检测 容器的重启策略定义是否重启Pod对象pod的终止过程 Init容器初始化容器与主容器区别是:初始化容器使用 P…

[Arduino电子近源渗透] Night of 19 v1.2.0

Github>https://github.com/MartinxMax/Night_of_19 首页 历史更新: Night of 19 v1.2.0 :自动获取IP,提升稳定性 Night of 19 v1.0.0 :需要静态配置IP地址 功能说明 受害者反弹shell到该设备,该设备通过蓝牙转发数据给攻击者,攻击者可远程命令执行 使用方法 #pyt…

ES6的面向对象编程以及ES6中的类和对象

一、面向对象 1、面向对象 &#xff08;1&#xff09;是一种开发思想&#xff0c;并不是具体的一种技术 &#xff08;2&#xff09;一切事物均为对象&#xff0c;在项目中主要是对象的分工协作 2、对象的特征 &#xff08;1&#xff09;对象是属性和行为的结合体 &#x…

Nodejs+vue+mysql网上药店购药系统 9h2k5

本毕业设计的内容是设计并且实现一个基于vue.js框架的空巢老人购药系统。采用MYSQL为数据库开发平台&#xff0c;nodejs语言&#xff0c;网络信息服务作为应用服务器。空巢老人购药系统的功能已基本实现&#xff0c;主要用户、家属、养生知识、药品信息、身体信息等。 论文主要…

java -- 深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝

java -- 深拷贝和浅拷贝的区别 & 如何实现深拷贝和浅拷贝 一、 深拷贝和浅拷贝的区别二、重载clone()方法 一、 深拷贝和浅拷贝的区别 浅拷贝&#xff1a;对基本数据类型进行值传递&#xff0c;对引用数据类型进行引用传递般的拷贝&#xff0c;此为浅拷贝。 深拷贝&#x…

C#,数值计算——NRf3的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class NRf3 : UniVarRealValueFun { public double xsav, ysav; public RealValueFun func3d; public NRf3() { } public double funk(double z) { …

InnoDB全文索引是如何实现的?

分析&回答 全文索引的底层实现为倒排索引。 为什么叫倒排索引&#xff08;反向索引&#xff09; 当表上存在全文索引时&#xff0c;就会隐式的建立一个名为FTS_DOC_ID的列&#xff0c;并在其上创建一个唯一索引&#xff0c;用于标识分词出现的记录行。你也可以显式的创建…

中国电信研究院发布《5G+数字孪生赋能城市数字化应用研究报告》

9月5日&#xff0c;中国电信研究院战略发展研究所联合中关村智慧城市产业技术创新战略联盟在2023年中国国际服务贸易交易会数字孪生专题论坛正式对外发布《5G数字孪生赋能城市数字化应用研究报告》。 会上&#xff0c;中国电信研究院战略发展研究所副所长季鸿从数字中国…

力扣(LeetCode)算法_C++——稀疏矩阵的乘法

给定两个 稀疏矩阵 &#xff1a;大小为 m x k 的稀疏矩阵 mat1 和大小为 k x n 的稀疏矩阵 mat2 &#xff0c;返回 mat1 x mat2 的结果。你可以假设乘法总是可能的。 示例 1&#xff1a; 输入&#xff1a;mat1 [[1,0,0],[-1,0,3]], mat2 [[7,0,0],[0,0,0],[0,0,1]] 输出&am…