当前位置: 首页 > 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…...

探索AI在地质科研绘图中的应用:ChatGPT与Midjourney绘图流程与效果对比

文章目录 个人感受一、AI绘图流程1.1 Midjourney&#xff08;1&#xff09;环境配置&#xff08;2&#xff09;生成prompt&#xff08;3&#xff09;完善prompt&#xff08;4&#xff09;开始绘图&#xff08;5&#xff09;后处理 1.2 ChatGPT不合理的出图结果解决方案 二、主题…...

【竞技宝】CS2:HLTV 2024 TOP11-w0nderful

北京时间2025年1月4日&#xff0c;HLTV年度选手排名正在持续公布中&#xff0c;今日凌晨正式公布了今年的TOP11为NAVI战队的w0nderful。 选手简介 w0nderful是一名来自于乌克兰的CS选手&#xff0c;现年20岁&#xff0c;目前在比赛中司职狙击手。w0nderful于2020年开启了自己的…...

Lua迭代器如何使用?

在Lua中&#xff0c;迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法&#xff0c;对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 12.1.1 迭代器介绍 迭代器是一种设计模式&#xff0c;它提供了一种访问集合元素的方法&#xff0c;而不需要…...

qt中如何判断字符串是否为数字,整数,浮点数?

在 Qt 中&#xff0c;可以使用多种方法来判断字符串是否为数字、整数或浮点数。Qt 提供了一些方便的字符串和数值处理函数&#xff0c;可以帮助你实现这些判断。以下是几种常见的方法&#xff1a; 1. 使用 QRegularExpression Qt 提供了 QRegularExpression 类&#xff0c;可…...

Oracle sql developer and Toad for Oracle set start DBMS output

Oracle sql developer Toad for Oracle...

【踩坑】SparkSQL union/unionAll 函数的去重问题

【踩坑】SparkSQL union/unionAll 函数的去重问题 测试数据 case class Employee(first_name:String)val employeeDF1 spark.createDataset(Seq( Employee("Mary"), Employee("Mandy"),Employee("Kurt") )) val employeeDF2 spark.createDat…...

域上的多项式环,整除,相通,互质

例1.已知 (R,,x)为域&#xff0c;请选出正确的说法:(A)(R,,x)也是整区; ABCD (B)R中无零因子; C)R在x运算上满足第一、二、三指数律; (D)R只有平凡理想; (E)R只有平凡子环。 域的特征&#xff1a; 域中&#xff0c;非0元素的加法周期 思考、在模7整数环R,中&#xff0c;…...

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Julia语言的学习路线

Julia语言的学习路线 引言 在现代编程世界中&#xff0c;编程语言如同工具&#xff0c;各自具有独特的特点与优势。Julia语言自2012年发布以来&#xff0c;以其优越的性能和优雅的语法逐渐吸引了越来越多的数据科学家、工程师和研究人员的关注。在本篇文章中&#xff0c;我们…...

对计网大题的一些指正(中间介绍一下CDM的原理和应用)

目录 前言&#xff1a; &#xff08;1&#xff09;五层原理体系结构每层功能&#xff1a; 下面是文档的答案&#xff1a; 我在之前的博客里面有介绍过五层原理体系结构&#xff0c; 按理来说&#xff0c;第五层应该是应用层才对&#xff0c;而会话层的功能应该被放到应用层…...