ROS第四十三节——定位

news2024/11/18 5:58:57

https://download.csdn.net/download/qq_45685327/87725276

1.新建launch文件

关于launch文件的实现,在amcl功能包下的example目录已经给出了示例,可以作为参考,具体实现:

roscd amcl
ls examples
gedit amcl_diff.launch

该目录下会列出两个文件: amcl_diff.launch 和 amcl_omni.launch 文件,前者适用于差分移动机器人,后者适用于全向移动机器人,可以按需选择,此处参考前者,新建 launch 文件,复制 amcl_diff.launch 文件内容并修改如下:

nv04_amcl.launch

    <launch>
    <node pkg="amcl" type="amcl" name="amcl" output="screen">
        <!-- Publish scans from best pose at a max of 10 Hz -->
        <param name="odom_model_type" value="diff"/><!-- 里程计模式为差分 -->
        <param name="odom_alpha5" value="0.1"/>
        <param name="transform_tolerance" value="0.2" />
        <param name="gui_publish_rate" value="10.0"/>
        <param name="laser_max_beams" value="30"/>
        <param name="min_particles" value="500"/>
        <param name="max_particles" value="5000"/>
        <param name="kld_err" value="0.05"/>
        <param name="kld_z" value="0.99"/>
        <param name="odom_alpha1" value="0.2"/>
        <param name="odom_alpha2" value="0.2"/>
        <!-- translation std dev, m -->
        <param name="odom_alpha3" value="0.8"/>
        <param name="odom_alpha4" value="0.2"/>
        <param name="laser_z_hit" value="0.5"/>
        <param name="laser_z_short" value="0.05"/>
        <param name="laser_z_max" value="0.05"/>
        <param name="laser_z_rand" value="0.5"/>
        <param name="laser_sigma_hit" value="0.2"/>
        <param name="laser_lambda_short" value="0.1"/>
        <param name="laser_lambda_short" value="0.1"/>
        <param name="laser_model_type" value="likelihood_field"/>
        <!-- <param name="laser_model_type" value="beam"/> -->
        <param name="laser_likelihood_max_dist" value="2.0"/>
        <param name="update_min_d" value="0.2"/>
        <param name="update_min_a" value="0.5"/>

        <param name="odom_frame_id" value="odom"/><!-- 里程计坐标系 -->
        <param name="base_frame_id" value="base_footprint"/><!-- 添加机器人基坐标系 -->
        <param name="global_frame_id" value="map"/><!-- 添加地图坐标系 -->

        <param name="resample_interval" value="1"/>
        <param name="transform_tolerance" value="0.1"/>
        <param name="recovery_alpha_slow" value="0.0"/>
        <param name="recovery_alpha_fast" value="0.0"/>
    </node>
</launch>

2.编写测试launch文件

amcl节点是不可以单独运行的,运行 amcl 节点之前,需要先加载全局地图,然后启动 rviz 显示定位结果,上述节点可以集成进launch文件,内容示例如下:

<launch>
    <!-- 设置地图的配置文件 -->
    <arg name="map" default="nav.yaml" />
    <!-- 运行地图服务器,并且加载设置的地图-->
    <node name="map_server" pkg="map_server" type="map_server" args="$(find mycar_nav)/map/$(arg map)"/>
    <!-- 启动AMCL节点 -->
    <include file="$(find mycar_nav)/launch/amcl.launch" />
    <!-- 运行rviz -->
    <node pkg="rviz" type="rviz" name="rviz"/>
</launch>

3.执行

3.1先启动 Gazebo 仿真环境

roslaunch urdf02_gazebo deamo03_car_world.launch

3.2启动键盘控制节点:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

3.3启动test_amcl.launch

上一步中集成地图服务、amcl 与 rviz 的 launch 文件;

roslaunch nav_demo test_amcl.launch

3.4添加组件,显示效果

在启动的 rviz 中,添加RobotModel、Map组件,分别显示机器人模型与地图,添加 posearray 插件,设置topic为particlecloud来显示 amcl 预估的当前机器人的位姿,箭头越是密集,说明当前机器人处于此位置的概率越高;

通过键盘控制机器人运动,会发现 posearray 也随之而改变。

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

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

相关文章

“井电双控”地下水远程计量设施-实现地下水资源合理利用

“井电双控”地下水远程计量设施&#xff08;MGTR-W4122C&#xff09;是针对取水计量控制系统开发智能终端产品。集预收费、流量监测、电量监测、余额提醒、欠费停机、无线传输、远程控制等多种功能于一体&#xff0c;并可根据项目需求选择实体IC卡和APP电子卡取水两种方式。其…

Anaconda,CUDA注意事项

2. 呜呜呜&#xff01;&#xff01;&#xff01;用别人的环境&#xff0c;如果他是非GPU版本的TF&#xff0c;你把非GPU版本的TF卸载后安装GPU版本的TF他也装不上。。。会默认给你装非GPU版本的TF&#xff01;&#xff01;&#xff01;大坑比&#xff01;&#xff01;&#xf…

手把手带你写一份优秀的开发求职简历(二)

前言 上一节我们针对简历文档名做了剖析&#xff0c;应该把哪些更醒目的简历属性放到文档名上。其实目的很简单&#xff0c;就是希望在HR手中众多的简历中&#xff0c;可以通过文档名字就抓住HR的需求点&#xff0c;让她把你的简历做为第一筛选梯队。匹配好了这一点呢&#xf…

第四章——数学知识3

高斯消元 高斯消元可以用来解方程&#xff0c;可以在n三次方的时间复杂度内&#xff0c;求多元线性方程组。 答案只有三种情况&#xff0c;无解&#xff0c;无穷多组解&#xff0c;唯一解 输入一个包含 n 个方程 n 个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程…

从0~1落地接口自动化测试,让你不再手忙脚乱丨轻松入门

接口自动化测试入门教程地址&#xff1a;https://www.bilibili.com/video/BV1914y1F7Bv/? 目录&#xff1a;导读 前言 为什么要做接口测试 理解接口和接口测试 如何落地接口自动化测试 结语 前言 对于初学者而言&#xff0c;如何从零开始落地接口自动化测试是一个难点&am…

c/c++:字符串str中寻找子串substr出现的次数

c/c&#xff1a;字符串str中寻找子串substr出现的次数 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xff0c;可手握10多个offer&#xff0c;随心所欲&#xff0…

LeetCode:24. 两两交换链表中的节点

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340; 算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;24. 两两交换链表中的节点 题目描述&#xff1a;给你一个链表&#x…

第二章 Unity界面认识

本章节我们来认识一下Unity的主界面&#xff0c;如下所示 Unity的主界面虽然看的内容比较多&#xff0c;但是结构上还是比较清晰地&#xff0c;所以并不乱。从上到下&#xff0c;从左到右依次是菜单栏&#xff0c;工具栏&#xff0c;层次面板&#xff08;Hierarchy&#xff09;…

Docker Compose的常用命令与docker-compose.yml脚本属性配置

Docker Compose的常用命令与配置 常见命令ps&#xff1a;列出所有运行容器logs&#xff1a;查看服务日志输出port&#xff1a;打印绑定的公共端口build&#xff1a;构建或者重新构建服务start&#xff1a;启动指定服务已存在的容器stop&#xff1a;停止已运行的服务的容器&…

Android studio 使用入门

安装 安装JDK https://www.oracle.com/java/technologies/downloads/ 新增变量JAVA_HOME&#xff0c;值为JDK安装根目录 在path中增加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 安装 Android studio https://developer.android.google.cn/studio/ 注意&#xff1a;路径尽量不要包…

区间DP (Java) 解析/模板/案例

一. 区间DP简单介绍 区间DP&#xff0c;是经常会用到的、解决区间问题的一种方法&#xff0c;经常以动态规划&#xff08;dfs/记忆化搜索&#xff09;的形式展现&#xff0c;最核心的思想就是枚举区间&#xff08;枚举端点&#xff09;&#xff0c;寻找切割点&#xff0c;处理因…

java.util.List和java.util.Set区别

最近有个需求要求查询按照单号查询顺序&#xff0c;数据库是hbase,我看了之前代码没有通过查hbase进行排序&#xff0c;就问了前端看是否前端可以排序&#xff0c;答案是前端不会做排序&#xff1b;有2个接口其中之前的接口就是这样排序的&#xff0c;于是我就按个排查看不同之…

Java每日一练(20230426)

目录 1. 天际线问题 &#x1f31f;&#x1f31f;&#x1f31f; 2. 2 的幂 &#x1f31f;&#x1f31f; 3. 对称二叉树 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每…

这可能是最全面的Redis面试八股文了

Redis连环40问&#xff0c;绝对够全&#xff01; Redis是什么&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一个使用 C 语言编写的&#xff0c;高性能非关系型的键值对数据库。与传统数据库不同的是&#xff0c;Redis 的数据是存在内存中的&#xf…

jmeter(四)HTTP请求

启动jmeter&#xff0c;建立一个测试计划 这里再次说说怎么安装和启动jmeter吧&#xff0c;昨天下午又被人问到怎样安装和使用&#xff0c;我也是醉了&#xff1b;在我看来&#xff0c;百度能解决百分之八十的问题&#xff0c;特别是基础的问题。。。 安装&#xff1a;去官网…

状态设计模式解读

目录 问题引进 状态模式基本介绍 基本介绍 状态模式的原理类图 对原理类图的说明 状态模式解决 APP 抽奖问题 状态模式的注意事项和细节 问题引进 请编写程序完成 APP 抽奖活动 具体要求如下: 1) 假如每参加一次这个活动要扣除用户 50 积分&#xff0c;中奖概率是 10% …

尚融宝23-后端管理系统借款审核

目录 一、借款信息列表展示 &#xff08;一&#xff09;需求 &#xff08;二&#xff09;后端 &#xff08;三&#xff09;前端 二、借款详情 &#xff08;一&#xff09;需求 &#xff08;二&#xff09;后端 &#xff08;三&#xff09;前端 三、借款审批 &#xf…

YOLOv7训练自己的数据集(txt文件,笔记)

目录 1.代码下载 2.数据集准备&#xff08;.xml转.txt) &#xff08;1&#xff09;修改图像文件名 &#xff08;2&#xff09;图片和标签文件数量不对应&#xff0c;解决办法 &#xff08;3&#xff09;.xml转.txt &#xff08;4&#xff09;.txt文件随机划分出对应的训练…

记录自己第一次项目管理(附件:WBS计划与会议纪要模板)

记录自己第一次项目管理 前言 20**年新入职到一家公司&#xff0c;刚到就接到紧急任务&#xff0c;因为上一个后端跑路&#xff0c;现在系统上出现接口报错、假接口的问题&#xff0c;客户又着急验收&#xff0c;所以入职之后&#xff0c;一直在着急改代码。最后因为系统没有…

Nginx+Tomcat负载均衡及动态分离

一.Nginx负载均衡实现原理 Nginx实现负载均衡是通过反向代理实现 1、 反向代理原理 2、反向代理的概念 反向代理&#xff08;Reverse Proxy&#xff09;方式是指以代理服务器来接受internet上的连接请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;并将从服…