当前位置: 首页 > 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
    
  • 如果有啥问题,随时调整配置文件,或者来问我!💡

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

http://www.lryc.cn/news/515457.html

相关文章:

  • 《Rust权威指南》学习笔记(五)
  • GitHub的简单操作
  • 「Mac畅玩鸿蒙与硬件54」UI互动应用篇31 - 滑动解锁屏幕功能
  • SMMU软件指南之系统架构考虑
  • 使用高云小蜜蜂GW1N-2实现MIPI到LVDS(DVP)转换案例分享
  • 「C++笔记」unordered_map:哈希化的无序映射函数(键值对)
  • Linux 安装jdk
  • asp.net core 发布到iis后,一直500.19,IIS设置没问题,安装了sdk,文件夹权限都有,还是报错
  • 【Go】运行自己的第一个Go程序
  • qt qss文件的使用
  • 【管道——二分+区间合并】
  • 宽带、光猫、路由器、WiFi、光纤之间的关系
  • 如何排查 Apache Doris 中 “Failed to commit txn“ 导入失败问题?
  • 回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测
  • HCIA-Access V2.5_7_3_XG(S)原理_关键技术
  • leetcode hot 100 不同路径
  • 智慧工地解决方案 1
  • LeetCode -Hot100 - 53. 最大子数组和
  • php 多进程那点事,用 swoole 如何解决呢 ?
  • 探索AI在地质科研绘图中的应用:ChatGPT与Midjourney绘图流程与效果对比
  • 【竞技宝】CS2:HLTV 2024 TOP11-w0nderful
  • Lua迭代器如何使用?
  • qt中如何判断字符串是否为数字,整数,浮点数?
  • Oracle sql developer and Toad for Oracle set start DBMS output
  • 【踩坑】SparkSQL union/unionAll 函数的去重问题
  • 域上的多项式环,整除,相通,互质
  • 计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习
  • Julia语言的学习路线
  • 对计网大题的一些指正(中间介绍一下CDM的原理和应用)
  • UGUI 优化DrawCall操作记录(基于Unity2021.3.18)