基于激光雷达的移动机器人室内AMCL定位点到点导航

news/2024/12/22 18:59:57/

学习视频:【Autolabor初级教程】ROS机器人入门_哔哩哔哩_bilibili

Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

前沿知识

定位用于导航中,通过定位可以判断机器人的实际轨迹是否符合预期。

amcl用于实现导航中的机器人定位。

里程计本身也是可以协助机器人定位的,不过里程计存在累计误差且一些特殊情况时(车轮打滑)会出现定位错误的情况,amcl 则可以通过估算机器人在地图坐标系下的姿态,再结合里程计提高定位准确度。

- 里程计定位:只是通过里程计数据实现 /odom_frame 与 /base_frame 之间的坐标变换。

- amcl定位: 可以提供 /map_frame 、/odom_frame 与 /base_frame 之间的坐标变换。

项目实现步骤

1.下载松灵移动机器人模型hunter_se_description

2.模型文件准备

1)demo_laser.xacro

雷达部件,调整位置,安装在头部,并设置支架抬高,防止遮挡

2)base_footprint.xacro

加入base_footprint部件,作为后续的基坐标系

3)laser.xacro雷达配置文件

4)move.xacro

小车移动控制器,先为轮子配置驱动器,后使用四轮差速控制器的插件

从而生成里程计信息

5)whole.xacro集成上述所有文件,后续在launch文件中加载

3.环境准备

自己画一个环境,使用gazebo中的Building Editor,得到三维worlds文件

使用gmapping 功能包,通过键盘键盘控制小车,实现建图

同时,在rviz中可以显示gmapping发布的栅格地图数据了

下一步,将地图单独保存,即得到map,如下图所示:

4.amcl定位(amcl.launch)

这里的amcl定位是用于导航中,导航中,机器人需要按照设定的路线运动,通过定位可以判断机器人的实际轨迹是否符合预期。

AMCL(adaptive Monte Carlo Localization) 是用于2D移动机器人的概率定位系统,它实现了自适应(或KLD采样)蒙特卡洛定位方法,可以根据已有地图使用粒子滤波器推算机器人位置。

选择适用于差分移动机器人的amcl定位算法历程

调整粒子滤波器的粒子数,并指定里程计坐标系,机器人基坐标系和地图坐标系等。

5.路径规划(path.launch)

路径规划是导航中的核心功能之一,使用move_base 功能包。

move_base 功能包提供了基于动作(action)的路径规划实现,move_base 可以根据给定的目标点,控制机器人底盘运动至目标位置,并且在运动过程中会连续反馈机器人自身的姿态与目标点的状态信息。如前所述move_base主要由全局路径规划与本地路径规划组成。

在功能包下 param 目录,通过四个文件costmap_common_params.yaml、local_costmap_params.yaml、global_costmap_params.yaml、base_local_planner_params.yaml分别设置规划时调用的通用参数,局部代价地图参数设置,全局代价地图参数设置和局部规划器参数配置。

最后效果:

完整作品:

大作业—基于激光雷达的移动机器人室内AMCL定位点到点导航 (mbd.pub)


http://www.ppmy.cn/news/1509911.html

相关文章

Python教程(十五):IO 编程

目录 专栏列表引言基础概念什么是IO? 同步IO vs 异步IO同步IO(Synchronous IO)异步IO(Asynchronous IO) Python中的IO标准IO标准输入和输出 文件IO文件操作的上下文管理器打开文件读取文件操作内存中的数据 高级文件操…

uniapp--微信小程序无网络提示组件页面

uniapp–微信小程序无网络提示组件页面 1.组件页面fu-notwork.vue代码 <template><view class"fu-notwork" v-if"!isConnected"><view class"fu-count-df" v-if"mode full" :style"{ zIndex: zIndex }"&g…

[GYCTF2020]FlaskApp1

打开题目 简单的一个base64加解密小程序 查看提示&#xff0c;好像并没有什么用&#xff0c;题目是flask&#xff0c;可能是ssti模板注入 加密窗口{{77}},解密窗口e3s3Kzd9fQ ({{77}} 加密窗口没看到注入&#xff0c;解密窗口存在注入&#xff0c;是模板注入 读取文件内容&am…

Java语言程序设计基础篇_编程练习题*16.16(使用ComboBox和ListView)

目录 题目&#xff1a;*16.16&#xff08;使用ComboBox和ListView&#xff09; 习题思路 示例代码 结果展示 题目&#xff1a;*16.16&#xff08;使用ComboBox和ListView&#xff09; 编程一个程序&#xff0c;演示在列表中选择的条目。程序用组合框指定选择方式&#xff0c;…

物流快递外卖管理平台系统-计算机毕设Java|springboot实战项目

&#x1f34a;作者&#xff1a;计算机毕设残哥 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目、 源…

VS Code安装配置ssh服务结合内网穿透远程连接本地服务器详细步骤

文章目录 前言1. 安装OpenSSH2.VS Code配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

C语言典型例题36

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题3.4 输入一个字符&#xff0c;判别它是否为大写字母&#xff0c;如果是&#xff0c;将它转换为小写字母&#xff1a;如果不是&#xff0c;不转换。然后输出最后要输出的字符。 代码&#xff1a; //《C程序设计…

吴恩达open AI联合推出《大模型通关指南》免费pdf分享,手把手教你掌握大模型技术!

本书介绍 LLM&#xff08;Large Language Models&#xff09;正在逐步改变人们的生活&#xff0c;对于开发者来说&#xff0c;如何利用LLM提供的API快速、便捷地开发具备更强大能力、集成LLM的应用程序&#xff0c;以实现更新颖、更实用的功能&#xff0c;是一项急需学习的重要…