ROS学习笔记之——移动机器人的导航

2023-05-16

之前博客《ROS学习笔记之——激光雷达SLAM建图》已经介绍过如何通过激光雷达SLAM建图了,本博文讲一下ROS机器人的导航相关

 

目录

导航相关理论介绍

导航的概述

costmap

AMCL

Dynamic Window Approach(DWA)

导航的四要素

地图

测量或估计机器人姿态的功能

识别障碍物,如墙壁和物体

计算最优路径和行驶功能

导航的步骤

导航所需的信息

基于gazebo的turtlebot3导航仿真(SLAM建图与导航)

navigation package介绍

参考资料


 

导航相关理论介绍

导航的概述

costmap

机器人的位置是根据从编码器和惯性传感器(IMU传感器)获得的测位来估计的。然后,通过安装在机器人上的距离传感器来计算机器人与障碍物之间的距离。导航系统将机器人位置、传感器姿态、障碍物信息和作为SLAM地图的结果而获得的占用网格地图调用到固定地图(static map),用作占用区域(occupied area)、自由区域(free area)和未知区域(unknown area)。

在导航中,基于上述四种因素,计算障碍物区域、预计会和障碍物碰撞的区域以及机器人可移动区域,这被称为成本地图(costmap)。根据导航类型,成本地图又被分成两部分。一个是global_costmap,在全局移动路径规划中以整个区域为对象建立移动计划,其输出结果就是global_costmap。而另一个被称为local_costmap,这是在局部移动路径规划中,在以机器人为中心的部分限定区域中规划移动路径时,或在躲避障碍物时用到的地图。

costmap用0到255之间的值来表示。数值的含义如下图所示。根据该值可以知道机器人是位于可移动区域还是位于可能与障碍物碰撞的区域。

导航使用占用网格地图。基于这种网格地图,根据机器人的位置和从传感器获得的周围信息,将各像素计算为障碍物、不可移动区域和可移动区域。这时用到的概念就是costmap。costmap由三种文件组成:公共的costmap_common_params.yaml文件、全局区域运动规划所需的global_costmap_params.yaml文件以及本地所需的local_costmap_params.yaml文件。TurtleBot3根据型号分为costmap_common_params_burger.yaml文件和costmap_common_params_waffle.yaml文件。

例如,实际的costmap如下图所示。具体的,机器人模型位于中间,其周围的黑色边框对应于机器人的外表面。当这个轮廓线碰到实际的墙壁时,意味着机器人会发生碰撞。绿色用从激光传感器获得的距离传感器值表示的障碍物,灰度的颜色越深的位置意味
着碰撞的可能性越高。这同样适用于用颜色表示的情况,粉红色区域是实际的障碍物,蓝色区域是机器人中心位置进入该区域则会发生碰撞的位置,且边框用粗红色像素绘制。这些颜色可以由用户在RViz中修改,因此可以说没有太大的意义。

AMCL

蒙特卡罗定位(MCL)位置估计算法在位置估计领域中被广泛运用。AMCL(自适应蒙特卡罗定位)可以被看作蒙特卡罗位置估计的改进版本,它通过在蒙特卡罗位置估计算法中使用少量样本来减少执行时间,以此提高实时性能。

由于这部分设计的数学推导比较多,后面会写博客专门针对这个进行分析。

Dynamic Window Approach(DWA)

动态窗口方法(Dynamic Windows Approach,DWA)是在规划移动路径和躲避障碍物时常用的方法,具体是指在机器人的速度搜索空间(velocity search space)中选择适当的速度,以躲避可能碰撞的障碍物的同时能迅速到达目的地。在ROS中,局部移动规
划中曾广泛使用Trajectory planner,而最近由于DWA的性能优越,因此DWA在逐渐代替Trajectory planner。

 

导航的四要素

导航是指机器人运动到一个指定的目的地,这说起来很容易,但完成它所需的技术一个个都不是容易的任务:要知道机器人本身在哪里,并要有一个给定的周围环境的地图,在各种路径中找出最优路径,在行驶中避免障碍物(如墙壁、家具、物体)等。也就是说导航的实现有四要素

  • where the robot itself is  
  • have a map of the given environment 
  • find the optimized route among the various routing options 
  • avoid obstacles such as walls and furniture 

地图

第一是地图。导航仪从购买时起就配备有非常准确的地图,并且可以定期下载更新的地图,以便可以根据地图将汽车引导到目的地。但是在使用服务机器人的房间里是否会有地图呢?服务机器人也像导航仪一样,需要一个地图,所以需要人创建一个地图,并把它
给到机器人,或者需要机器人自己创建一个地图。
SLAM(Simultaneous localization and mapping)就是为了让机器人自己(或接受人的一些帮助)绘制地图而出现的技术。用中文应该是“同步定位和绘制地图”。这是在机器人移动到未知空间时通过探测周围环境来估计当前位置并同时绘制地图的方法。

测量或估计机器人姿态的功能

第二,机器人需要自己能够测量和估计姿态(位置+方向)。汽车会用GPS估计自己的位置,但在室内无法使用GPS。即使说可以在室内使用,误差较大的GPS无法用于测量精细的移动。最近,虽然有DGPS5等高精度的定位系统,但在室内还是无法使用的。为了克服这种问题,人们引进了标志识别方式及室内定位系统等技术,但在成本或精确度方面还不足以投入实际应用。当前的室内机器人用的最多的是导航推测(dead reckoning)。它的缺点是只能估算相对位置,但因为仅用廉价的传感器就能实现,且已有较长时间的研究进展,因此可以得到一定水平的位置估计值,因此被广泛使用。导航推测技术用机器人的车轮的旋转量来估计机器人本身的移动量。但车轮的旋转量具有不少的误差。因此还利用IMU传感器等获取惯性信息来补偿位置和方向值,以此减小误差。

在ROS中,机器人的位置(position:x,y,z)和方向(orientation:x,y,z,w)被定义为姿态。

识别障碍物,如墙壁和物体

第三是一种利用传感器检测墙壁和物体等障碍物的方法。此时用到距离传感器、视觉传感器等多种传感器。其中距离传感器有基于雷达的距离传感器(常用的是LDS、LRF和LiDAR)、超声波传感器和红外距离传感器等,而视觉传感器包括立体相机、单镜相机、360度相机,以及经常用作深度摄像头的RealSense、Kinect和Xtion也都用于识别障碍物。

计算最优路径和行驶功能

第四是导航(Navigation)功能,这是计算到达目的地的最优路径,并且驱动机器人按照最优路径到达目的地的功能。实现这个功能的算法有很多种:称为路径搜索和规划的A*算法、势场算法、粒子过滤算法10和RRT(Rapidly-exploring Random Tree)算法等。

 

导航的步骤

导航是在给定的环境中将机器人从当前位置移动到指定的目的地。为此,需要有包含给定环境的家具、物体和墙壁的几何信息(geometry,geo-:土地,metry:测量)的地图, 机器人可以从自己的姿态信息和从传感器获得的距离信息来获得地图(SLAM)。在导航中,机器人利用这个地图和机器人的编码器、惯性传感器和距离传感器等资源,从当前位置移动到地图上的指定目的地。这个过程如下。

  • 感知(sensing)——在地图上,机器人利用编码器和惯性传感器(IMU传感器)更新其测位(odometry)信息,并测量从距离传感器的位置到障碍物(墙壁、物体、家具等)的距离。
  • 姿态估计(localization / pose estimation)——基于来自编码器的车轮旋转量、来自惯性传感器的惯性信息以及从距离传感器到
  • 障碍物的距离信息,估计机器人在已经绘制的地图上的姿态(localization / pose estimation)。此时用到的姿态估计方法有很多种,常用的主要为粒子滤波器定位(particle filter localization),以及蒙特卡罗定位(Monte Carlo Localization)的变体ACML(Adaptive Monte Carlo Localization,自适应蒙特卡罗定位)。
  • 运动规划——也称为路径规划,它创建一个从当前位置到地图上指定的目标点的轨迹。对整个地图进行全局路径规划,以及以机器人为中心对部分地区进行局部路径规划。可以使用基于一种避障算法Dynamic Window Approach(DWA)的ROS move_base和nav_core等路径规划功能包。
  • 移动/躲避障碍物(move / collision avoidance)——如果按照在运动规划中创建的移动轨迹向机器人发出速度命令,则机器人会根据移动轨迹移动到目的地。由于感应、位置估计和运动规划在移动时仍在被执行,因此使用动态窗口方法(DWA)算法可避免突然出现的障碍物和移动物体。

导航所需的信息

下图7显示了运行ROS导航功能包所需的必要节点和话题之间的关系。

测位(‘/odom’,nav_msgs/Odometry)——机器人的测位信息用于局部路径规划,利用接收到的机器人的当前速度等信息,产生局部移动路径或避开障碍物。

坐标变换(‘/tf , tf/tfMessage)——由于机器人传感器的位置根据机器人的硬件配置而变化,所以ROS使用tf相对坐标变换。这只是简单地利用测位获得机器人的位置,例如测位描述“以机器人的位置为原点,传感器在x、y、z坐标坐标系中位于某某位置”。例如,经过odom→base_footprint→base_link→base_scan的变换后以话题来发布。它从move_base节点接收这些信息,并根据机器人的位置和传感器的位置执行移动路径规划。

距离传感器(‘/scan , sensor_msgs/LaserScan or sensor_msgs/PointCloud)——意味着从传感器测量得到的距离值。通常使用LDS和RealSense、Kinect、Xtion等。该距离传感器使用AMCL(adaptive Monte Carlo localization,自适应蒙特卡罗定位)来估计机器人的当前位置,且规划机器人的运动。

地图(‘/map , nav_msgs/GetMap)——导航使用占用网格地图(occupancy grid map)。将使用map_server功能包来发布slam建立的“map.pgm”和“map.yaml”文件(这两个文件是在slam建图后生成的)。

目标坐标(‘/move_base_simple/goal , geometry_msgs/PoseStamped)——目标坐标由用户直接指定。如在ROS的可视化工具RViz中设置目标坐标。目标坐标由二维坐标(x,y)和姿态θ组成。

速度命令(‘/cmd_vel , geometry_msgs/Twist)——根据最终规划的移动轨迹发布移动机器人的速度命令,而机器人根据该命令移动到目的地。

 

基于gazebo的turtlebot3导航仿真(SLAM建图与导航)

(https://www.ncnynl.com/archives/201702/1398.html)

(http://learn.turtlebot.com/)

由于放假,目前身边没有机器人,只能用gazebo做一下turtlebot的导航仿真了~~~

由于要进行导航,首先就需要先建立了环境的地图。故此,先基于gazebo来进行turtlebot3的slam

首先运行roscore,然后打开gazebo环境

roslaunch turtlebot3_gazebo turtlebot3_world.launch

如下图所示

然后运行slam

roslaunch turtlebot3_slam turtlebot3_slam.launch

下面调用rviz(运行slam后就会自动打开rviz了)

roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

然后用键盘来控制

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

由于可能更改过turtlebot3burger的urdf文件。好像有点怪怪的。下面换一个机器人型号(运行SLAM、gazebo和rviz前要运行下面一句)

export TURTLEBOT3_MODEL=waffle

那么地图很快就可以建立好了

通过下面命令来保存地图

rosrun map_server map_saver -f ~/map2/map2

保存地图如下所示

然后就可以运行导航了。

export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map2/map2.yaml

初始位置估计

首先,要做的是估计机器人的初始位置。当在RViz的菜单中按下[2D Pose Estimate]时,会出现一个非常大的绿色箭头。将其移动到机器人在给定的地图中所在的位置,并按住鼠标键的同时,拖动绿色箭头使其指向机器人的前方。这是一种在初期为了估计机器人位置的命令。然后用turtlebot3_teleop_keyboard节点等来回移动机器人,搜集周围的环境信息,找出机器人当前位于地图上的位置。经过了这个过程后,机器人将绿色箭头指定的位置和方向作为初始位置,推定自己的位置和方向。

设置目的地且移动机器人

一切准备就绪后,下面下达移动命令。如果在RViz的菜单中按[2D Nav Goal],会出现一个非常大的绿色箭头。该绿色箭头是指定机器人的目的地的标记,箭头的起点是机器人的x、y位置,箭头方向是机器人的i方向。将此箭头移动到机器人的目的地,然后拖
动,以设置方向。机器人将根据创建的地图躲避障碍物,移动到目的地

最终结果

运行rqt结果如下图所示(类似于section1中的结构图)

 

navigation package介绍

http://wiki.ros.org/navigation#Tutorials

A 2D navigation stack that takes in information from odometry(里程计), sensor streams, and a goal pose and outputs safe velocity (速度) commands that are sent to a mobile base.

 

参考资料

http://wiki.ros.org/Books/ROS_Robot_Programming_English

http://wiki.ros.org/navigation#Tutorials

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习笔记之——移动机器人的导航 的相关文章

  • 使用Docker制作镜像并推送到镜像仓库

    本文会告诉你如何使用docker从远端下载一个镜像 xff0c 然后对镜像做修改 xff0c 最后再把镜像推送到你自己的镜像仓库 1 安装Docker 这个没啥说的 xff0c 根据你自己的环境下载对应的安装包安装就是了 docker官网下
  • Mac上几款免费的MySql客户端

    由于开发需要在Mac上连接MySql数据库 xff0c 虽然命令行也能用 xff0c 但是我还是喜欢用带UI的客户端去连 就用过的mysql客户端来说 xff0c 最好用的是Navicate xff0c 不过后来收费了 xff0c 还收的贼
  • Mac M1芯片安装 Numpy Pandas

    本文教你如何简单的在M1芯片的MacBook上安装Numpy和Pandas 刚入手了一个Mac Pro xff0c 是M1芯片的 xff0c 结果在安装Numpy和Pandas时遇到了各种莫名奇妙的问题 第1种报错 xff0c 很长 xff
  • addr2line

    1 符号表 1 1什么是符号表 符号表是内存地址与函数名 文件名 行号的映射表 符号表元素如下所示 xff1a lt 起始地址 gt lt 结束地址 gt lt 函数 gt lt 文件名 行号 gt 1 2为什么要配置符号表 为了能快速并准
  • 一些有用的Python库

    1 制作动态排序图的库 做出来像这种效果 https mp weixin qq com s DQf35t7PUcFmi3j942Q7A 2 基于matplotlib轻松绘制漂亮的表格 比自己在ppt或者excel中搞出来的表格好看多了 像这
  • Android创建杀不死的Service

    在Android开发中我们经常会遇到一些特殊的需求需要让我们的服务常驻内存 xff0c 但是会遇到各种清理软件或者用户在设置中手动停止程序的情况而导致我们的服务被异常的终止掉 虽然没有办法保证绝对的常驻内存 xff0c 但是通过策略我们还是
  • Mac 从Bash切换到Zsh的注意事项

    1 第一步要安装Zsh xff0c 可以参考现成的文章 xff0c 推荐一篇https zhuanlan zhihu com p 19556676 2 安装完成之后退出命令行重新进入 xff0c 就可以看到Zsh的效果啦 3 及得切换默认的
  • 数组求实际长度(逻辑长度)

    有很多情况下 xff0c 比如我们定义了一个数组 xff0c byte a 61 new byte 100 但是给数组赋值的时候只赋了10个 xff0c 虽然这个数组在内存中的长度仍然是100 xff0c 但是我们想得到的确实数组的实际长度
  • java清空数组

    定义一个数字byte a 61 new byte 20 如果给数组赋值后又想让数组恢复到初始的状态 xff0c 那如何做呢 xff0c 其实很简单 xff0c 直接上方法 将byte数组置空 public static byte reset
  • 使用gazebo的官方模型库文件

    首先下载所有的gazebo模型库文件 xff0c 我已经打包上传到csdn了 xff0c 可以从如下链接中下载 xff1a 下载link 然后将下载好的文件存放在如下目录 xff1a cd gazebo models 如果没有上述目录就自行
  • 作为一个普通的程序员,到底应不应该转型AI工程师?

    动不动就是50万的毕业生年薪 xff0c 动不动就是100万起步价的海归AI高级人才 xff0c 普通员到底应不应该转型AI工程师 xff0c 普通程序员到底应该如何转型AI工程师 xff1f 下面就分享几个特别典型的普通程序员成功转型AI
  • 树莓派Odroid等卡片式电脑上搭建NAS教程系列1-Ubuntu系统安装

    我用的是韩国hardkernel公司做的Odroid XU板子 xff0c 类似于树莓派香蕉派 xff0c 看下它的真面目 相关参数点他 gt Odroid XU 搭建NAS之前先来安装好Ubuntu系统 下载安装文件 在Odroid里安装
  • 立创eda学习笔记一:pcb板基础知识

    整理了一下零基础学习pcb板画图需要了解的一些基础知识 xff0c 否则后面画图很困扰 什么是pcb板 xff1f PCB xff08 Printed Circuit Board xff09 xff0c 中文名称为印制电路板 xff0c 又
  • 立创eda学习笔记二:画pcb板流程(极简入门版)

    一般PCB基本设计流程如下 xff1a 前期准备 gt PCB结构设计 gt PCB布局 gt 布线 gt 布线优化和丝印 gt 网络和DRC检查和结构检查 gt 制版 一 画原理图 完成后检查元件的封装 连线是否正确 核实电路结构 xff
  • 立创eda学习笔记十一:立创eda、立创商城、嘉立创的区别

    简单来说 xff1a 立创eda是一个画原理图和pcb的eda软件 xff0c 类似于ad 立创商城是一个卖元器件网上平台 xff0c 类似于淘宝 嘉立创是一个生产pcb板 给pcb板贴片的生产厂家 一般情况下 xff0c 你可以在立创ed
  • 立创eda学习笔记十七:铺铜

    铺铜是pcb设计很常用的指令 xff0c 或者是必然用到的指令 xff0c 很多时候布线的时候不去画gnd的线 xff0c 把其他线画好了之后 xff0c 再统一铺铜作为gnd xff0c 这样方便很多 铺铜这个概念可以理解为大面积的布线
  • 立创eda学习笔记二十六:手把手教你使用立创eda的官方教程

    可以通过以下办法找到教程 xff1a 1 xff0c 在软件界面点帮助 使用教程 2 xff0c 在网站首页 帮助 教程进入 如何使用教程 xff1a 这里是一级目录 xff0c 其实对新手最有用的是前面3个部分 xff0c 后面的仿真先不
  • 立创eda学习笔记二十四:拼板

    这里主要是两部分 xff1a 自带拼板和手动拼板 xff0c 软件自带拼板功能 xff0c 那么手动拼板当然就是自己重新画图拼板了 一般用自带拼板功能就可以了 xff0c 把单板画好之后很容易就拼好了 xff0c 完全不用动任何器件和丝印编
  • Prometheus实战教程:监控mysql数据库

    今天我们使用prometheus 43 Grafana 43 mysql exporter实现监控mysql数据库各项指标数据 mysql exporter xff1a 采集mysql数据库各项指标数据 prometheus xff1a 获
  • prometheus常用exporter下载地址大全

    1 node exporter下载 https github com prometheus node exporter releases 2 blackbox exporter下载 https github com prometheus b

随机推荐

  • 论文润色 ‖ 一分钟教你如何写好SCI论文里的主题句,事半功倍

    今天 xff0c 小编来分享一下论文润色 xff0c SCI论文的主题句 xff08 Topic Sentences xff09 怎么写 xff1a 01什么是主题句 xff1f 主题句通常是段落开头的一句话 xff0c 是整个段落的小主题
  • Go xml文件处理

    在开发中会常遇到xml数据序列化和反序列化 xff0c 这里我们介绍go语言处理xml数据 encoding xml 包实现了一个简单的xml 1 0解析器 xff0c 可以理解xml名称空间 读取xml 示例 xff1a package
  • UC/OS-III 消息队列

    消息队列 一 消息队列基本概念讲解1 消息队列基本概念2 消息池2 1 消息池概念2 2 消息池初始化2 3 消息队列的运作机制2 4 消息队列的阻塞机制2 5 消息队列的应用场景 二 消息队列创建步骤1 定义消息队列2 创建消息队列 三
  • Altium Designer绘制stm32f103c8t6最小系统原理图

    文章目录 前言芯片封装自定义封装原理图绘制总结 前言 本文提供了初学者绘制stm32最小系统 xff0c 同时初学者的同学可以跟着小白学习绘制原理图哦 芯片封装 提示 xff1a 下载安装好Altium Designer之后才能进行以下操作
  • Jetson Xavier NX安装opencv3.x以及踩过的坑

    Jetson Xavier NX默认安装的是opencv4 x xff0c 在很多项目中其与opencv3 x xff0c 其中opencv3与opencv4中有部分函数是完全不同的 xff08 例如点一些Point的定义 xff0c Cv
  • 【导航算法】无人机路径跟踪L1导航算法

    L1导航算法是非常经典的非线性无人机路径跟随算法 xff0c 最早由MIT于2004年提出 xff0c 论文为 A New Nonlinear Guidance Logic for Trajectory Tracking xff0c 其导航
  • 【人工智能】1.问题求解:状态空间图和盲目搜索

    什么是问题求解 xff1f 问题求解可以理解为利用知识 xff0c 尽可能有效的找到问题的解 xff0c 或者最优解的过程 xff0c 主要包括 xff1a 1 xff09 问题描述方法 xff1a 状态空间法 xff0c 与或树表示法 x
  • 【路径规划】A*三维全局路径规划(附Python实现源码)

    1 A 启发式搜索 A 算法介绍 xff1a 启发式搜索算法 xff0c 除了wiki之外比较全的一个参考资料 xff1a A 启发式搜索算法详解 人工智能 这里是用Python写了一个简单的路径规划例子供参考 2 Matplotlib库
  • 【数据结构】3.图、最小生成树

    一 图的基本概念 1 什么是图 图表示一种多对多的关系 图包括 xff1a 1 xff09 一组顶点 xff1a 通常用 V Vertex 表示顶点集合 2 xff09 一组边 xff1a 通常用 E Edge 表示边的集合 3 xff09
  • 【NLP】主题模型文本分类

    自然语言处理之主题模型文本分类 LDA主题模型 1 主题模型 xff08 Topic Model xff09 主题模型是以非监督学习的方式对文集的隐含语义结构进行聚类的统计模型 主题模型主要被用于自然语言处理中的语义分析和文本挖掘问题 xf
  • 【NLP】Word2Vec模型文本分类

    自然语言处理之词向量模型聚类分析 Word Embedding 词嵌入向量 Word Embedding 是NLP里面一个重要的概念 xff0c 我们可以利用Word Embedding一个单词固定长度向量的表示一种表示形式 Word Em
  • (6.1)Kubernetes的Sevice服务间调用

    1 场景1 选择器 xff08 selector xff09 在k8s上运行了两个pod replicas 2 我们通过Service来整合这两个pod 在创建 Service 时 xff0c 就要通过选择器 xff08 selector
  • 【飞控算法】四旋翼飞行器控制原理与设计入门

    从动力学建模和几个四旋翼核心算法角度分析半自主飞控系统的建立 xff0c 即实现传统四旋翼的姿态控制和高度控制的过程 xff0c 文章主要借鉴了北航多旋翼设计课程 正点原子minifly微型四旋翼的资料 四旋翼无人飞行器设计 清华出版社 x
  • 【开源飞控】匿名飞控TI版解析(1)

    准备电赛的飞控题 xff0c 买来了匿名的飞控学习一下 xff0c 这里整理了一下匿名飞控中比较关键的几部分 xff0c 学习了一下原理 xff0c 然后代码解读都写注释里了 xff0c 篇幅较长 目录 一 遥控器信号接收 1 代码解读 2
  • 【开源飞控】匿名飞控TI版解析(2)

    因为电赛 xff0c 买来匿名飞控研究一下 xff0c 感觉相比其他的一下开源飞控 xff0c 易开发性和稳定性都是比较好的 xff0c 但就是比较贵 匿名TI版飞控是从32版改过来的 xff0c 硬件上就换了个芯片 xff0c 程序里也有
  • ROS中机器人与电脑的网络配置

    打开网络连接菜单 xff1a 选择网络 xff0c 输密码 并连接 xff08 以350502为例 xff0c 这里我就不连进去这个WiFi了 xff0c 还是连回402 xff0c 意思到了就行 xff09 查看连接信息 xff08 GU
  • ROS学习笔记之——gazebo仿真

    本博文是本人学习gazebo的学习记录 Gazebo是一款3D仿真器 xff0c 支持机器人开发所需的机器人 传感器和环境模型 xff0c 并且通过搭载的物理引擎可以得到逼真的仿真结果 Gazebo是近年来最受欢迎的三维仿真器之一 xff0
  • ROS学习笔记之——gazebo模型(URDF)

    最近在学习gazebo仿真 在之前博文里面 学习笔记之 gazebo仿真 xff0c 在介绍深度相机的ROS插件的时候 xff0c 涉及到了gazebo里面的一些模型文件架构的定义 本博文主要是对模型文件的定义做学习记录 目录 Model
  • ROS学习笔记之——ROS与gazebo之间的控制关系

    之前博客 学习笔记之 gazebo仿真 有采用用ricz来监控gazebo中的机器人 本博文对其进行深入的介绍 本文以 ROS学习笔记之 gazebo模型 xff08 URDF xff09 中的RRBot为例 目录 ros control
  • ROS学习笔记之——移动机器人的导航

    之前博客 ROS学习笔记之 激光雷达SLAM建图 已经介绍过如何通过激光雷达SLAM建图了 xff0c 本博文讲一下ROS机器人的导航相关 目录 导航相关理论介绍 导航的概述 costmap AMCL Dynamic Window Appr