amcl中手动定位自主定位问题
来源:互联网 发布:淘宝详情页视频下载 编辑:程序博客网 时间:2024/06/13 05:59
amcl手动和自动定位问题
首先定位问题要基于建好的地图上,相信大家已经建好了自己的地图,建图方法其他博主写的很详细,在这里不做过多的介绍。本博客只介绍博主在学习ROS中遇到的各种问题,希望以后的朋友们不要再陷入这样的“坑”。
言归正传,我们在做小车的导航时,都需要在rviz图形界面下进行小车的位姿矫正,点击2D pose estimates进行大致位置的估计,如图所示:
但是,从图中可以看出,激光数据不是很准确,所以需要在teleop_twist_keyboard的终端小范围前后左右移动小车,小车逐步确定它自身的位置。 判断小车是否定位成功,主要看小车周围红色的点是否收缩到一起。如图为收敛后的粒子图:
这个过程是最基础的小车手动定位的实例,也相对的简单。但是对于自动定位,如果夹杂视觉来做的话,简单易懂,但是如果在不用视觉的情况下会怎样呢?基于此问题,博主历经千辛万苦,最后幸不辱命调试成功。
基于global_localization service的自主定位,主要步骤
1、打开已建好的地图,运行自己的launch文件(需包含:小车底盘,激光雷达,amcl,move_base,tf变换等节点功能)
2、调用 global_localization service
global_localization service是ROS自带的一个服务,详细用法可查ROS wiki官网。以下是调用该服务的代码:
#include "ros/ros.h" #include "std_msgs/Int16.h" #include <move_base_msgs/MoveBaseAction.h> #include <actionlib/client/simple_action_client.h> #include "std_srvs/Empty.h" #include <cstdlib> int main(int argc, char **argv) { ros::init(argc, argv, "robot_global_localization"); ros::NodeHandle n; ros::ServiceClient client = n.serviceClient<std_srvs::Empty>("global_localization"); std_srvs::Empty srv; if (client.call(srv))//服务调用 { ROS_INFO(" Successful call"); } else { ROS_ERROR("Failed to call service global_location"); return 1; } return 0; }
此程序主要用来进行自主定位。
3、更改amcl中协方差参数
路径:navigation>amcl>test>small_loop_crazy>driving>prg.xml,内容如图
我们默认值是0.1,此时我们只需将initial_cov_xx/yy/aa都改成8,或者4。当我们打开rviz图形界面下得particlecloud时,会看到粒子铺满地图,如图所示:
4、这时我们需要运行键盘控制小车运动:
rosrun dashgo_bringup telep_twist_keyboard.py
5、观察rviz图形界面,过程如下:
总结:
调用Global_localization这个服务虽然可以完成小车的自主初始化位姿,但是粒子收敛时间很长,平均在90s左右,如果减少相对粒子数min_particles,max_particles,收敛时间会相对减小。Amcl中默认的最小,最大粒子数分别为500,5000。基于此,得出结论,该方法试用初学者更好的了解amcl,博主亲身体验,当然amcl的优化很重要也是后续工作的一大难题。希望广大朋友一起努力。有优化想法的可以联系我。微信734349984
版权声明:本文为博主原创文章,未经博主允许不得转载。
- amcl中手动定位自主定位问题
- AMCL定位
- amcl算法(定位)
- 机器人定位(amcl)与导航
- STRUTS中光标定位问题
- 技术开发中如何定位问题
- Android中定位经纬度问题
- 机器人核心定位技术之自主定位导航
- 机器人自主导航与定位解决方案
- 思岚科技机器人自主定位导航系统
- 问题定位
- 问题定位
- 定位问题
- 定位问题
- 下拉导航中绝对定位与相对定位问题
- CSS中关于定位的问题, 相对,绝对定位
- 定位城市+iOS8 定位问题
- CSS定位position定位问题
- Ubuntu 16.04 中安装谷歌 Chrome 浏览器
- 注册页面
- BZOJ 3193 [JLOI 2013] 计数DP 解题报告
- leetcode题解-410. Split Array Largest Sum
- Freemarker学习笔记二—基本语法
- amcl中手动定位自主定位问题
- Linux常用命令
- 对Java中修饰符的学习
- 第一章作业
- Spring Boot Application 运行
- CentOS网络配置及XShell远程连接
- 欢迎使用CSDN-markdown编辑器
- 剑指offer:不用加减乘除做加法
- LQB-5