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

【笔记】ROS1|3 Turtlebot3汉堡Burger建SLAM地图并导航【旧文转载】

由于发布在博客园的我自己的博客转不过来(CSDN关闭了博客搬家的功能),但是博客园大家刷又刷不到,老问我一些莫名其妙的问题,我把我自己的博客从博客园直接复制粘贴过来,之后如果有更新也一律在CSDN更新,望周知,原文链接:【ROS】3.1 Turtlebot3汉堡Burger建SLAM地图并导航 - shandianchengzi - 博客园

如果你期望更加美观的排版,可以去我的博客园看,如果你对排版不介意,就在这里看吧。
原发布时间:21/03/27 12:42,搬运时阅读量728。
由于是旧文,书写时不免有许多错漏,如有问题请在评论区指出或私信给我。

本文对应的视频版本教程:ROS|实验三 Burger小车SLAM地图构建+导航演示视频_哔哩哔哩_bilibili

文章目录

  • SLAM地图构建和导航
    • 准备
    • 正式开始
    • order.txt
    • 常见问题
    • 总结

SLAM地图构建和导航

准备

  • 本实验新用的功能包:

    注意ros版本。

sudo apt-get install ros-noetic-map-server # 用到map_server中的map_saver
sudo apt-get install ros-noetic-navigation # 导航包navigation
  • 了解如何远程控制Burger小车。

正式开始

  1. 配置网络连接gedit ~/.bashrc。
  2. 建立远程控制连接。
  3. SLAM建图。
  4. 保存SLAM地图。
  5. 读取保存的地图文件并实现导航。

在这里插入图片描述

详见order.txt及注释。

order.txt

A表示主机,B表示从机,数字k表示第k个终端。

# 1. 网络配置
A1:
ifconfig # 查看主机IP地址
gedit ~/.bashrc # 在.bashrc文件中进行网络配置
... # 详见上一篇博客https://shandianchengzi.gitee.io/2021/03/19/ROS%E8%BF%9C%E7%A8%8B%E6%8E%A7%E5%88%B6/
source ~/.bashrc # 使网络配置生效
roscore # 启动roscore并检验网络配置是否成功
B1:
ssh -Y pi@192.168.1.133 # ssh连接从机
ifconfig # 查看从机IP地址
gedit ~/.bashrc
...
source ~/.bashrc
roscore# 2. 建立远程控制连接
B2:
ssh -Y pi@192.168.1.133
roslaunch turtlebot3_bringup turtlebot3_robot.launch # 在机器人桌面终端调用Turtlebot3 应用程序# 3. SLAM建图
A2:
roslaunch turtlebot3_slam turtlebot3_slam.launch # 执行slam启动命令
A3:
rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_slam.rviz # 在Rviz中打开模拟界面
# rviz的使用说明:
# https://zhuanlan.zhihu.com/p/64603248
A4:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch # 启动键盘控制teleop命令
# 操作:操控机器人把实验场地都浏览一遍
# 1、扫描过程中需要注意尽量不要使机器人与环境产生接触。
# 2、不要人为在机器人附近活动。
# 3、不要将机器人速度提升到太快,太快的移动速递会导致环境探测信号量减少。
# 4、按照规范操作,以便得到正确的地形数据。# 4. 保存SLAM地图
A5:
sudo apt-get install ros-noetic-map-server # 若已经下载了map_server功能包,则可以略过这个指令
rosrun map_server map_saver -f ~/map # 保存SLAM地图至~/map。将生成map.pgm/map.yaml两个文件
A2/A3/A4:Ctrl+C # 停止A3/A4/A5中运行的程序# 5. 读取保存的地图文件,并实现导航
A2:
rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_slam.rviz # 在Rviz中打开模拟界面
A3:
sudo apt-get install ros-noetic-navigation # 若已经下载了navigation功能包,则可以略过这个指令
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml # 读取测量好的地图数据~/map.yaml
# 操作:确定机器人相对于地图所处的位置和初始姿态:
# 点击工具栏2D Pose Estimate按键。
# 在地图上点击机器人相对于环境的正确位置并拖动箭头以确定机器人的姿态,可以通过多次调整确定最合适的初始位置设定。
# 注:完成设定后的绿色箭头便表示了机器人相对于地图所处的位置和初始姿态,机器人上的激光传感器同时会测量周围环境,可以通过实时测量的环境信息对初始位置进行校对(红点)。如果发现位置不正确可以重复定位操作。
# 操作:设定目标位置和目标姿态,设定方法如下:
# 点击工具栏2D Nav Goal按键。
# 点击一个确定的点并拖动箭头以设定目标位置和机器人最后停止的方向。
# 注:实验过程中要求操作者确定好初始位置和目的位置及姿态之后,机器人便会自行计算运行路径并移动至目标点。

常见问题

本次实验建立在完整的连接和已有的控制命令中,不需要操作者参与计算,操作较为简单,可以在熟悉操作的情况下没有障碍的完成时实验。

主要会出现的情况有:

如果没有确定好初始位置开始进行扫描测量地形,其地图初始点未知,在导航实验中如果不能从原出发点开始运行,会产生地图定位不准的问题,所以在一定程度上也会影响到内部程序对轨迹规划的运算,因为在导航功能中小车的轨迹规划是同时计算原测量地图和实时雷达扫描障碍物的最优解。

在开始导航前,应尽可能多次拖动箭头来精确的确定小车的位置,否则可能出现小车无法启动的情况,因为当构建的地图面积不大时,小车的起始位置的相对误差就会变大,所以为了能使小车精确的进行导航,应该尽可能精确地确定小车的起始位置。

同时,在实验中杂乱的周边环境对导航功能也会产生较大影响。所以总的来说,小车的运行原理和计算能力对实验场地提出了一定要求。

总结

本文介绍了如何在Turtlebot3 Burger机器人上实现SLAM建图和导航功能。主要内容包括:1)通过SSH建立远程控制连接;2)使用turtlebot3_slam包构建环境地图;3)利用map_server保存地图;4)通过navigation包实现自主导航。文章提供了详细的命令行操作步骤,并强调了精确定位初始位置的重要性。同时指出了实验中可能遇到的问题,如环境干扰、定位不准等。实验需要预先安装map-server和navigation功能包,建议在简单环境下进行测试,以确保导航效果。

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://shandianchengzi.blog.csdn.net/article/details/149913163。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

http://www.dtcms.com/a/315124.html

相关文章:

  • 数学 理论
  • 基于FAISS和Ollama的法律智能对话系统开发实录-【大模型应用班-第5课 RAG技术与应用学习笔记】
  • Fastapi文件上传那些事?
  • 浅谈 Python 中的 next() 函数 —— 迭代器的驱动引擎
  • MCP进阶:工业协议与AI智能体的融合革命
  • Neat Converter电子书格式转换工具,支持ePub、Azw3、Mobi、Doc、PDF、TXT相互转换,完全免费
  • 龙虎榜——20250804
  • numpy数组拼接 - np.concatenate
  • VPS云服务器Linux性能分析与瓶颈解决方案设计
  • java获取文件编码格式,然后读取此文件,适用于任何格式的文件。
  • 面试题:怎么理解3 次握手与 4 次挥手:TCP 连接的建立与终止
  • 【Unity3D】Shader圆形弧度裁剪
  • 思途Spring学习 0804
  • Unity 实现手机端和电脑项目在局域网内通信
  • 【推荐100个unity插件】Unity 的 Hot Reload 热重载实现,加快unity程序编译速度——FastScriptReload插件
  • MySQL InnoDB 表数据结构存储方式详解
  • pathspec ‘with_def_layout‘ did not match any file(s) known to git`
  • Vue 详情header组件
  • Go语言Context
  • ISO(感光度)的工作原理
  • 接口权限(@SaCheckPermission)
  • ebaz4205矿板以太网连接不稳定问题解决方案
  • SQL基础语法(四个分类、库和表的增删改)
  • 【笔记】ROS1|6 中间人攻击移动过程【旧文转载】
  • 私有化部署即时通讯,企业专属通讯系统BeeWorks
  • 计算机网络:网络号和网络位是不是同一个意思
  • 4.5 点云表达方式——图
  • 纯前端使用ExcelJS插件导出Excel
  • 并发编程常用工具类(上):CountDownLatch 与 Semaphore 的协作应用
  • C++信息学奥赛一本通-第一部分-基础一-第一章