双机 Cartogtapher 建图文件配置

2024-04-01 11:20

本文主要是介绍双机 Cartogtapher 建图文件配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

双机cartogtapher建图

最近在做硕士毕设的最后一个实验,其中涉及到多机建图,经过调研最终采用cartographer建图算法,其中配置多机建图的文件有些麻烦,特此博客以记录

非常感谢我的同门 ”叶少“ 山上的稻草人-CSDN博客的帮助,经过他的点拨,第二天终于将搞明白了如何修改frame_id使得多机启动后tf不冲突,从而实现多机建图


本文不讲原理(因为我目前也不懂很多哈哈哈),只记录如何修改launch等文件实现多机使用cartographer建图不冲突

主要就是修改 frame_id,frame_id是TF坐标的参考

要修改的地方主要在:

无人车(或无人机等)的 urdf 文件

无人车启动相关launch 启动文件

底盘控制 launch 文件

描述 TF 关系的 launch文件

雷达launch文件

cartographer使用到的 lua 文件

PS:建议都把源文件复制一份,重新改名,这样能保存源文件,不至于修改后回不到开始原状态了

目录

一、修改cartographer的launch文件

二、修改无人车相关launch文件

三、修改后的TF树

四、双机运行展示效果

一、修改cartographer的launch文件

该文件名为:revo_lds.lua,路径为 /opt/ros/melodic/share/cartographer_ros/configuration_files

建议复制一份修改名字,我这里复制了一份,重命名为 hc_revo_lds.lua

修改如下三个地方
在这里插入图片描述

tracking_frame:一般设置为发布频率最高的传感器的frame_id

published_framecartographer发布的tf树最后将指向 published_frame,这个必须设置正确,否则TF树连接不成功,一般设置为地盘的 link name

为了区别其他的无人车,我这里加了前缀 “car1/”

odom_frameodom_frame与实际的里程计话题及消息没有什么关系,只是cartographer的一个中间话题,如果将 provide_odom_frame 设置为 true,则 TF 为 map -> odom_combined1 -> car1/base_footprint

如果将 provide_odom_frame 设置为 false,则 TF 为 map -> car1/base_footprint

这取决于是否需要 cartographer 来提供 odom信息

PS:修改建图 launch文件
在这里插入图片描述

如果第一步你修改了文件名,则这里需要修改一下


二、修改无人车相关launch文件
  1. 修改无人车底盘 frame_id

    hc_base_serial.launch
    在这里插入图片描述

  2. 修改无人车的 urdf 文件 hc_mini_mec_robot.urdf

    主要修改 link 的名字

    hc_mini_mec_robot.urdf

    在这里插入图片描述

  3. 修改 TF 坐标变化的 launch 文件,替换使用到的 URDF 文件名

    hc_robot_model_visualization.launch
    在这里插入图片描述

  4. 在 turn_on 功能包中修改用于建图、导航的 TF 关系与小车外形 launch文件(跟你自己的对应上即可)hc_turn_on_wheeltec_robot.launch
    在这里插入图片描述

  5. 修改雷达 launch 文件 hc_rplidar.launch,frame_id 加上前缀即可
    在这里插入图片描述

  6. 修改 mapping 建图 launch文件 ,修改几个launchw文件,添加 group 命名空间,与其他智能体区分

    hc_mapping.launch

在这里插入图片描述


三、修改后的TF树效果

所有的TF树

在这里插入图片描述

无人车1的TF树

在这里插入图片描述

无人车2的TF树(只改了无人车1,所以无人车2不动它了)

在这里插入图片描述

四、双机运行展示效果

无人车1

在这里插入图片描述

无人车2

在这里插入图片描述

这篇关于双机 Cartogtapher 建图文件配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/867037

相关文章

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则