Ubuntu 的 ROS 操作系统 turtlebot3 导航仿真

引言

在这里插入图片描述


学习目标

在这里插入图片描述


学习内容

1 注意事项

1.1 兼容性注意事项
  • 注意:本文内容对应的是远程PC(桌面或笔记本电脑),用于控制TurtleBot3。 请勿将此指令应用到TurtleBot3机器人上。
  • 首次启动模拟可能需要一些时间来完成环境设置。
  • SLAM 仿真前请详细参考 ———>专栏: Linux系统之Ubuntu系统安装 。
  • SLAM 仿真前请详细参考 ———>专栏: Turtlebot3 PC端ROS环境搭建与仿真。
1.2 ROS 系统安装、turtlebot3环境搭建与gazebo仿真

1.2.1 安装 ROS 系统与搭建turtlebot3环境

  • 🕐见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 操作系统安装与测试。
  • 🕑见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 操作系统turtlebot3环境搭建。

1.2.2 turtlebot3 SLAM仿真

  • 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 操作系统 turtlebot3 SLAM仿真。

1.2.2 turtlebot3 gazebo仿真

  • 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 操作系统 turtlebot3 gazebo仿真。

1.2.4 Turtlebot3 buger 硬件与操作平台

  • 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Turtlebot3 buger 硬件与操作平台详细介绍。

2 启动Gazebo仿真环境

使用以下命令启动 Gazebo 环境,在 TurtleBot3 World 环境下进行导航仿真。

# 设置TurtleBot3模型
export TURTLEBOT3_MODEL=burger# 启动TurtleBot3 World环境
roslaunch turtlebot3_gazebo turtlebot3_world.launch

TurtleBot3 默认世界Gazebo仿真环境如下图所示:

在这里插入图片描述


3 运行SLAM节点

在新的终端中启动导航节点。

# 设置TurtleBot3模型
export TURTLEBOT3_MODEL=burger# 启动导航节点,地图配置文件位置为 HOME/map.yaml
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

RViz可视化界面如下图所示:

在这里插入图片描述


4 估计初始位置

在运行导航节点之前,必须进行初始位置估计,以便为 AMCL(自适应蒙特卡洛定位)提供初始数据。如果没有进行初始位置估计,那么机器人无法确定自己的位置,自然不能到达目标点。

4.1 Gazebo与RViz可视化界面

Gazebo与RViz可视化界面如下图所示:

在这里插入图片描述

4.2 2D Pose Estimate

过点击 RViz 中的“2D Pose Estimate”按钮(上图箭头)来实现。在地图上点击机器人所在的位置,并拖动绿色箭头至机器人当前的朝向。重复几次后,激光雷达(LDS)传感器数据正确重叠在保存的地图上。

2D Pose Estimate操作如下图所示:

在这里插入图片描述

初始位置标记后显示如下图所示:

在这里插入图片描述

4.3 键盘遥控精确定位机器人

在新的终端中启动遥控节点,通过键盘控制TurtleBot3的运动。

# 设置TurtleBot3模型
export TURTLEBOT3_MODEL=burger# 启动遥控节点
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

键盘遥控控制方法如下图所示:

在这里插入图片描述
控制机器人

  • w/x:增加/减少线速度
  • a/d:增加/减少角速度
  • 空格键、s:紧急停止
  • CTRL-C:退出遥控

注意:完成后,按Ctrl + C停止遥控节点,以避免多个节点发布不同的 cmd_vel 数据。


5 导航

5.1 设置导航目标

通过 RViz 设置机器人导航目标。点击 RViz 界面上的“2D Nav Goal”按钮(蓝色箭头),然后在地图上点击目标位置并拖动绿色箭头设置目标的朝向。

  • 绿色箭头的根部表示目标的 x, y 坐标,箭头的方向表示目标的角度 θ。
  • 设置完毕后,TurtleBot3 将立即开始向目标位置移动。

导航目标设定如下图所示:

在这里插入图片描述

5.2 到达设定目标

导航目标设置完成后,机器人通过设定好的路径规划方法进行导航,最终到达设定目标位置,朝向设定方向。

到达设定目标后如下图所示:

在这里插入图片描述


小结

  • 本文详细讲解了在 ROS 操作系统下使用 TurtleBot3 进行导航仿真的步骤。
  • 从加载仿真环境、启动导航节点,到通过 AMCL 进行初始定位,再到使用 RViz 设置导航目标,可以顺利完成导航。
  • 此外,通过键盘遥控和精准定位,可以更好地控制机器人并进行目标导航任务。这些操作提供了高效的测试与调试工具,适用于机器人导航算法的开发与验证。

欢迎大家评论留言!!!


友情提示:

  • 专栏:Turtlebot3 PC端ROS环境搭建与仿真
  • 下一节:Ubuntu 的 ROS 2 操作系统 turtlebot3 导航仿真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析

前提: 注意的是:我们这里是从avframe转换成avpacket 后,从avpacket中查看NALU。 在实际开发中,我们有可能是从摄像头中拿到 RGB 或者 PCM,然后将pcm打包成avframe,然后将avframe转换成avpacket&#xff0…

java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程

文章目录 PC Register堆虚拟机栈方法区(Metaspace元空间双亲委派机制类加载器 类装载的执行过程 PC Register 程序计数器(Program Counter Register)是 Java 虚拟机(JVM)中的一个组件,它在 JVM 的内存模型中扮演着非常…

使用Web Animations API实现复杂的网页动画效果

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Web Animations API实现复杂的网页动画效果 使用Web Animations API实现复杂的网页动画效果 使用Web Animations API实现复杂…

本草纲目数字化:Spring Boot在中药实验管理中的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中药实验管理系统的相关信息成为必然。开发…

xpath表达式学习总结

获取所有节点 获取符合某一特征的所有节点,用// 比如:获取a标签的所有节点,使用//a 比如:获取所有class为"m-b-sm"的h2节点,使用//h2[class“m-b-sm”] 获取子节点 获取某个节点下符合某一特征的所有子节…

无人机挂载超细干粉灭火装置技术详解

无人机挂载超细干粉灭火装置技术是一种创新的灭火方式,结合了无人机的远程操控能力和超细干粉灭火剂的高效灭火性能。以下是对该技术的详细解析: 一、技术背景与原理 背景:高层建筑灭火救援困难一直是公认的世界性难题。无人机技术的发展为…

Linux下MySQL的简单使用

Linux下MySQL的简单使用 导语MySQL安装与配置MySQL安装密码设置 MySQL管理命令myisamchkmysql其他 常见操作 C语言访问MYSQL连接例程错误处理使用SQL 总结参考文献 导语 这一章是MySQL的使用,一些常用的MySQL语句属于本科阶段内容,然后是C语言和MySQl之…

多端校园圈子论坛小程序,多个学校同时代理,校园小程序分展示后台管理源码

社团活动与组织 信息发布:系统支持社团发布活动信息、招募新成员等,方便社团进行线上线下活动的组织和管理。 增强凝聚力:通过系统,社团成员可以更好地交流和互动,增强社团的凝聚力和影响力。 生活服务功能 二手市场…

Infisical开源密钥管理平台实战指南

1. 引言 在现代软件开发中,安全地管理环境变量和敏感信息已成为一个关键挑战。Infisical作为一个开源的密钥管理平台,为这一问题提供了强大而灵活的解决方案。本指南将深入探讨Infisical的功能,并通过实际操作步骤,帮助读者全面了解和使用这个工具。 2. Infisical概述 I…

androidstudio入门到放弃配置

b站视频讲解传送门 android_studio安装包:https://developer.android.google.cn/studio?hlzh-cn 下载安装 开始创建hello-world 1.删除缓存 文件 下载gradle文件压缩:gradle-8.9用自己创建项目时自动生成的版本即可,不用和我一样 https://…

mybatis-plus: mapper-locations: “classpath*:/mapper/**/*.xml“配置!!!解释

和mybatis一样的道理!!!!如果不指定这个配置,通常要求 XML 映射文件和 Mapper 接口的包名和结构相同!!!! 如果没有配置 mapper-locations,通常文件结构应遵循…

深入理解 Redis跳跃表 Skip List 原理|图解查询、插入

1. 简介 跳跃表 ( skip list ) 是一种有序数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 在 Redis 中,跳跃表是有序集合键的底层实现之一,那么这篇文章我们就来讲讲跳跃表的实现原理。 2. …

如何在算家云搭建Peach-9B-8k-Roleplay(文本生成)

一、Peach-9B-8k-Roleplay简介 Peach-9B-8k-Roleplay 是一种聊天大型语言模型,它是通过我们的数据合成方法创建的超过 100K 的对话中微调 01-ai/Yi-1.5-9B 模型而获得的。 也许是 34B 以下参数最好的 LLM。 二、模型搭建流程 1. 创建容器镜像 进入算家云平台的“…

java 读取 有时需要sc.nextLine();读取换行符 有时不需要sc.nextLine();读取换行符 详解

在 Java 中,使用 Scanner 类读取输入时,换行符的处理行为取决于所用的读取方法。不同方法的工作原理会影响是否需要额外调用 sc.nextLine() 来清理缓冲区中的换行符。 核心问题 根本原因:Scanner 是基于输入流工作的,而换行符&am…

Flutter中的Material Theme完全指南:从入门到实战

Flutter作为一款热门的跨平台开发框架,其UI组件库Material Design深受开发者喜爱。本文将深入探讨Flutter Material Theme的使用,包括如何借助Material Theme Builder创建符合产品需求的主题风格。通过多个场景和代码实例,让你轻松掌握这一工…

数仓建设之Oracle常见语法学习

1. 字符串截取 select substr(AAA-BBB, 1, instr(AAA-BBB, -, -1) - 1) 值 from dual; --AAA select substr(AAA-BBB, instr(AAA-BBB, -, -1) 1) 值 from dual; --BBB2. 帆软报表有参数SQL select a.agency_code, a.agency_name, a.agency_typefrom dw.dim_ta_subred_agency…

基于Python的仓库管理系统设计与实现

背景: 基于Python的仓库管理系统功能介绍 本仓库管理系统采用Python语言开发,利用Django框架和MySQL数据库,实现了高效、便捷的仓库管理功能。 用户管理: 支持员工和管理员角色的管理。 用户注册、登录和权限分配功能&#x…

【C语言】科技要闻。

美好的一天,从读报开始,11月16日,甲辰年十月十六,星期六,工作愉快,幸福生活。 今日要闻 1. 全球电动汽车市场持续火热:特斯拉发布新款Model 3,降价抢占市场份额。 2. 印度月球…

RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)

上文着重介绍RabbitMQ 七种工作模式介绍RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 本篇讲解如何在Spring环境下进⾏RabbitMQ的开发.(只演⽰部分常⽤的⼯作模式) 目录 引⼊依赖 一.工作队列模式 二.Publish/Subscribe(发布订阅模式) …

FastAPI

FastAPI 摘要概述快速开始基础应用路由注册和端点绑定路由端点传参与校验请求和响应报文后台异步任务执行异常与错误中间件数据库操作应用启动和关闭回调多应用挂载自定义配置swagger ui应用配置信息读取 继续学习与最佳实践安全认证机制*依赖注入PydanticPytest单元测试Linux部…