当前位置: 首页 > news >正文

在ros2 jazzy和gazebo harmonic下的建图导航(cartographer和navigation)实现(基本)

我的github分支!!!
你可以在这里找到相对应的源码。
DWDROME的MOGI分支
来源于!!
MOGI-ROS/Week-3-4-Gazebo-basics

学习分支整理日志

分支概述

这是一个用于个人学习的新分支,目的是扩展基本模型并添加更多组件,以适应实际开发需求。


进展日志
  • 2025-01-03
    • 完善了源库中的重要部分,为后续开发打下了基础。
    • 调整了基础模型,提高了其在仿真环境中的稳定性。
  • 2025-01-04
    • Cartographer 部分
      • 集成了 Cartographer 激光雷达 SLAM 功能。
      • 完成 cartographer.launch.py 配置,支持在 Gazebo 中实时生成地图。
      • 添加了 fishbot_2d.lua 配置文件,优化了激光雷达参数。
    • Nav2 部分
      • 增加了 Nav2 功能包,实现路径规划和导航功能。
      • 添加 bme_nav2.launch.py 启动文件,支持加载保存的地图。
      • 配置了 bme_nav2.yaml 参数文件,优化局部和全局规划器。

下一步计划
  1. 扩展模型
    • 为机器人添加更多传感器(如深度摄像头、激光雷达等)。
    • 增加机械臂组件以支持复杂操作。
  2. 完善导航功能
    • 集成目标检测和避障算法,提升导航的智能性。
    • 调整地图更新频率和导航行为,优化性能。
  3. 学习与实践
    • 学习更多 ROS 2 与 Gazebo 的集成技巧。
    • 通过自定义插件,提升 Gazebo 模拟环境的功能。

总结

这个分支已经具备了基本 SLAM 和导航功能,为进一步学习和实验提供了良好的基础。接下来,将继续扩展和完善,以支持更多场景的需求! 🚀

分布树

├── bme_cartographer
│   ├── CMakeLists.txt
│   ├── config
│   │   └── fishbot_2d.lua
│   ├── include
│   ├── launch
│   │   └── cartographer.launch.py
│   ├── LICENSE
│   ├── package.xml
│   ├── rviz
│   │   └── cartographer.rviz
│   └── src
│       └── map
│           ├── bme_map.pgm
│           └── bme_map.yaml
├── bme_gazebo_basics
│   ├── CMakeLists.txt
│   ├── config
│   │   └── ros_gz_bridge.yaml
│   ├── launch
│   │   ├── check_urdf.launch.py
│   │   ├── spawn_robot.launch.py
│   │   └── world.launch.py
│   ├── meshes
│   ├── package.xml
│   ├── rviz
│   │   ├── rviz.rviz
│   │   └── urdf.rviz
│   ├── urdf
│   │   ├── materials.xacro
│   │   ├── mogi_bot.gazebo
│   │   ├── mogi_bot_old.gazebo
│   │   └── mogi_bot.urdf
│   └── worlds
│       ├── empty.sdf
│       └── world.sdf
├── bme_navigation2
│   ├── CMakeLists.txt
│   ├── include
│   │   └── bme_navigation2
│   ├── launch
│   │   └── bme_nav2.launch.py
│   ├── LICENSE
│   ├── maps
│   │   ├── bme_map.pgm
│   │   └── bme_map.yaml
│   ├── package.xml
│   ├── param
│   │   └── bme_nav2.yaml
│   └── src
│       └── nav2.py
└── mogi_trajectory_server├── LICENSE├── mogi_trajectory_server│   ├── __init__.py│   └── trajectory.py├── package.xml├── README.md├── resource│   └── mogi_trajectory_server├── setup.cfg└── setup.py

使用方法指南

以下是项目中每个功能包的详细说明和使用方法,帮你快速上手!😄


1. bme_cartographer

功能:激光雷达 SLAM,用来生成地图,支持在 RViz 中实时查看。

  • 怎么用:

    1. 启动 Cartographer SLAM:

      ros2 launch bme_cartographer cartographer.launch.py
      

      默认配置文件是 config/fishbot_2d.lua

    2. 查看地图:

      • 在 RViz 中加载配置文件:

        rviz2 -d install/bme_cartographer/share/bme_cartographer/rviz/cartographer.rviz
        

2. bme_gazebo_basics

功能:用于 Gazebo 仿真,主要负责加载机器人模型和启动仿真环境。

  • 怎么用:

    1. 检查机器人模型 (URDF):

      ros2 launch bme_gazebo_basics check_urdf.launch.py
      
    2. 将机器人加载到 Gazebo 中:

      ros2 launch bme_gazebo_basics spawn_robot.launch.py
      
    3. 运行仿真世界:

      ros2 launch bme_gazebo_basics world.launch.py
      

3. bme_navigation2

功能:负责导航功能,用 SLAM 生成的地图进行路径规划和运动控制。

  • 怎么用:

    1. 启动导航系统:

      ros2 launch bme_navigation2 bme_nav2.launch.py
      
    2. 修改参数:

      • 导航的参数文件是 param/bme_nav2.yaml,可以根据需求调整代价地图、控制器等参数。
    3. 加载地图:

      • 确保 maps/bme_map.pgmmaps/bme_map.yaml 已经保存并正确配置。

4. mogi_trajectory_server

功能:负责轨迹服务,提供轨迹生成和跟踪功能。

  • 怎么用:

    1. 安装依赖:

      pip install -e .
      
    2. 运行轨迹服务(以集成在spawn中):

      ros2 run mogi_trajectory_server trajectory.py
      

整体流程

  1. 运行 Gazebo 仿真环境

    ros2 launch bme_gazebo_basics world.launch.py
    
  2. 启动 Cartographer SLAM

    ros2 launch bme_cartographer cartographer.launch.py
    
  3. 保存地图

    ros2 run nav2_map_server map_saver_cli -f maps/bme_map
    
  4. 启动导航功能

    ros2 launch bme_navigation2 bme_nav2.launch.py
    
  5. 运行轨迹服务

    ros2 run mogi_trajectory_server trajectory.py
    

小贴士

  • 所有功能包依赖安装好了吗?一定要检查哦~

  • 启动之前记得 source 环境:

    source install/setup.zsh
    
  • 如果有啥问题,随时调整配置文件,或者来问我!💡

希望这些说明能帮到你,祝你玩得开心!🚀

相关文章:

在ros2 jazzy和gazebo harmonic下的建图导航(cartographer和navigation)实现(基本)

我的github分支!!! 你可以在这里找到相对应的源码。 DWDROME的MOGI分支 来源于!! MOGI-ROS/Week-3-4-Gazebo-basics 学习分支整理日志 分支概述 这是一个用于个人学习的新分支,目的是扩展基本模型并添加…...

《Rust权威指南》学习笔记(五)

高级特性 1.在Rust中,unsafe是一种允许绕过Rust的安全性保证的机制,用于执行一些Rust默认情况下不允许的操作。unsafe存在的原因是:unsafe 允许执行某些可能被 Rust 的安全性检查阻止的操作,从而可以进行性能优化,如手…...

GitHub的简单操作

引言 今天开始就要开始做项目了,上午是要把git搭好。搭的过程中遇到好多好多的问题。下面就说一下git的简单操作流程。我们是使用的GitHub,下面也就以这个为例了 一、GitHub账号的登录注册 https://github.com/ 通过这个网址可以来到GitHub首页 点击中间绿色的S…...

「Mac畅玩鸿蒙与硬件54」UI互动应用篇31 - 滑动解锁屏幕功能

本篇教程将实现滑动解锁屏幕功能,通过 Slider 组件实现滑动操作,学习事件监听、状态更新和交互逻辑的实现方法。 关键词 滑动解锁UI交互状态管理动态更新事件监听 一、功能说明 滑动解锁屏幕功能包含以下功能: 滑动解锁区域:用…...

SMMU软件指南之系统架构考虑

安全之安全(security)博客目录导读 目录 5.1 I/O 一致性 5.2 客户端设备 5.2.1 地址大小 5.2.2 缓存 5.3 PCIe 注意事项 5.3.1 点对点通信 5.3.2 No_snoop 5.3.3 ATS 5.4 StreamID 分配 5.5 MSI 本博客介绍与 SMMU 相关的一些系统架构注意事项。 5.1 I/O 一致性 如…...

使用高云小蜜蜂GW1N-2实现MIPI到LVDS(DVP)转换案例分享

作者:Hello,Panda 大家晚上好,熊猫君又来了。 今天要分享的是一个简单的MIPI到LVDS(DVP)接口转换的案例。目的就是要把低成本FPGA的应用潜力充分利用起来。 一、应用背景 这个案例的应用背景是:现在还在…...

「C++笔记」unordered_map:哈希化的无序映射函数(键值对)

unordered_map 是 C 中一个经过哈希函数(Hash)处理的映射(map)容器。 本文中的map和set是差不多的,unordered_map与unordered_set也是对应的。所以不再单独写一篇了。 这里的内容建议看完本文之后再回过头来看 二者虽然…...

Linux 安装jdk

1、官网下载jdk https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html2、以tar包为例,在window或者Linux解压都可以,这里直接在win解压了,上传到服务器 3、在/usr/local/ 创建jdk目录,将jdk上传到…...

asp.net core 发布到iis后,一直500.19,IIS设置没问题,安装了sdk,文件夹权限都有,还是报错

原因就是没有安装ASP.NET Core 9.0 Runtime (v9.0.0) - Windows Hosting Bundle,我是只安装了.net core的sdk,下面介绍下sdk和hosting bundle的关系 在 .NET Core 和 ASP.NET Core 的开发中,SDK(Software Development Kit&#x…...

【Go】运行自己的第一个Go程序

运行自己的第一个Go程序 一、Go语言的安装Go环境安装查看是否安装成功配置GOPROXY(代理) 二、Goland安装三、Goland破解四、新建项目 开一篇专栏记录学习Go的过程,一门新语言从hello world开始,这篇文章详细讲解Go语言环境搭建及hello world实现 一、Go语…...

qt qss文件的使用

qt样式的修改方式 一 通过ui界面的改变样式表来直接修改显示效果。 不推荐,其他人不好修改,不够直观,不易维护。 二 通过setStyleSheet接口修改。 一般,界面很少的时候可以使用。一旦界面多起来,代码部分就显得杂乱…...

【管道——二分+区间合并】

题目 思路 区间合并 1、按照左端点排序2、遍历窗口,若窗口非法,继续遍历;否则执行33、若是第一个窗口,设定合并结果初值,判断结果左端点是否造成“起点过大”,是,FALSE退出;否则执行…...

宽带、光猫、路由器、WiFi、光纤之间的关系

1、宽带(Broadband) 1.1 宽带的定义宽带指的是一种高速互联网接入技术,通常包括ADSL、光纤、4G/5G等不同类型的接入方式。宽带的关键特点是能够提供较高的数据传输速率,使得用户可以享受到稳定的上网体验。 1.2 宽带的作用宽带是…...

如何排查 Apache Doris 中 “Failed to commit txn“ 导入失败问题?

今天来聊聊 Doris 数据导入那些事儿。你是不是在数据导入的时候遇到各种状况&#xff0c;让人头疼不已&#xff1f;别担心&#xff0c;这篇文章给你答案&#xff01; 在 Doris 的版本里&#xff0c;< 2.0.3 的时候&#xff0c;数据迁移存在一些已知的问题&#xff0c;比如可…...

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 数据准备&#x…...

HCIA-Access V2.5_7_3_XG(S)原理_关键技术

为什么需要测距 因为上行链路只有一根纤,而且每一个ONU到OLT的距离是不一样的,虽然上行通过TDMA技术,让每一个ONU在不同的时间段发送数据,但是仍然有可能在同一时刻到达分光器,产生数据冲突。 有测距的信元传输 所以为了避免碰撞冲突,通过ONU在注册的时候就会启动测距…...

leetcode hot 100 不同路径

62. 不同路径 已解答 中等 相关标签 相关企业 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09…...

智慧工地解决方案 1

建设背景与挑战 工地施工现场环境复杂&#xff0c;人员管理难度大&#xff0c;多工种交叉作业导致管理混乱&#xff0c;事故频发。传统管理方式难以实现科学、有效、集中式的管理&#xff0c;特别是在环境复杂、地点分散的情况下&#xff0c;监管困难&#xff0c;取证复杂。施…...

LeetCode -Hot100 - 53. 最大子数组和

前言 本专栏主要通过“LeetCode 热题100”&#xff0c;来捡起自己本科阶段的算法知识与技巧。语言主要使用c/java。如果同样正在练习LeetCode 热题100的朋友欢迎关注或订阅本专栏。有疑问欢迎留言交流~ 题目描述 题目链接 示例 1&#xff1a; 输入&#xff1a;nums [-2,1…...

php 多进程那点事,用 swoole 如何解决呢 ?

在 PHP 中&#xff0c;多进程的处理通常会遇到一些挑战&#xff0c;比如资源共享、进程间通信、性能优化等。Swoole 是一个高性能的协程和多进程框架&#xff0c;旨在为 PHP 提供异步、并发、协程等功能&#xff0c;解决了传统 PHP 环境中的多进程管理问题。通过使用 Swoole&am…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...