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

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

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

Linux下MySQL的简单使用

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

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

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

androidstudio入门到放弃配置

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

深入理解 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. 创建容器镜像 进入算家云平台的“…

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

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

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

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

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

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

FastAPI

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

Nature Communications 基于触觉手套的深度学习驱动视触觉动态重建方案

在人形机器人操作领域,有一个极具价值的问题:鉴于操作数据在人形操作技能学习中的重要性,如何有效地从现实世界中获取操作数据的完整状态?如果可以,那考虑到人类庞大规模的人口和进行复杂操作的简单直观性与可扩展性&a…

Linux中查看某个文件完整路径的方法

目录 方法一:通过readlink命令方法二:通过realpath命令方法三:pwd 结合 ls -d 命令方法四:pwd和dirname和basename结合 方法一:通过readlink命令 如果目标文件是一个软链接文件,会返回源文件路径&#xff…

C语言项⽬实践-贪吃蛇

目录 1.项目要点 2.窗口设置 2.1mode命令 2.2title命令 2.3system函数 2.Win32 API 2.1 COORD 2.2 GetStdHandle 2.3 CONSOLE_CURSOR_INFO 2.4 GetConsoleCursorInfo 2.5 SetConsoleCursorInfo 2.5 SetConsoleCursorPosition 2.7 GetAsyncKeyState 3.贪吃蛇游戏设…

uniapp对接极光推送,实现消息推送功能

通过集成JG-JPush和JG-JCore插件,可以在应用中添加消息推送功能,向用户发送通知、消息等。这对于提升用户体验、增加用户粘性非常有帮助‌。 效果图: 一、登录极光官网 官网链接:portalhttps://www.jiguang.cn/console/#/home点…

React--》如何高效管理前端环境变量:开发与生产环境配置详解

在前端开发中,如何让项目在不同环境下表现得更为灵活与高效,是每个开发者必须面对的挑战,从开发阶段的调试到生产环境的优化,环境变量配置无疑是其中的关键。 env配置文件:通常用于管理项目的环境变量,环境…

CentOS 7中查找已安装JDK路径的方法

使用yum安装了jdk8,但是其他中间件需要配置路径的时候,却没办法找到,如何获取jdk路径: 一、确认服务器是否存在jdk java -version 二、查找jdk的 java 命令在哪里 which java 三、找到软链指向的地址 ls -lrt /usr/bin/java l…