导航算法
鲁伯特1996
ros cpp 单片机
展开
-
锚点导航探索
工业amr在运动时,不可能让其进行自由导航特别是多机时,而是通过调度等进行停障,此时要将我们所用的栅格图转化为拓扑图,类似于磁条在敲代码过程中,困扰很久的问题,std::vector不可直接取地址,因为当vector扩容时,会新申请一段连续内存将现有的数据拷贝过去,释放掉原来的内存,这就导致了开始取得地址没有了。当vector扩容时,全部地址都会发生改变...原创 2022-03-16 17:15:37 · 529 阅读 · 3 评论 -
movebase软件流程图
忽略movebase流程中的位置震荡,遇到此情况比较少流程图未按照标准,主要是状态机流程太多原创 2022-03-15 16:22:57 · 657 阅读 · 0 评论 -
global_planner解析(5)
前面介绍了我们的搜索算法,下面来介绍我们的主要的插件实现函数 planner_core.cppplanner_core.h#ifndef _PLANNERCORE_H#define _PLANNERCORE_H#define POT_HIGH 10e10#include <ros/ros.h>#include <costmap_2d/costmap_2d.h>#include <geometry_msgs/PoseStamped.h>#include &原创 2021-03-18 09:53:23 · 1202 阅读 · 0 评论 -
global_planner解析(4)
前面简单介绍了路径搜索的基类Expander,里面主要的就是calculatePotentials路径搜索的方法接口,还有路径搜索的扩展方式-普通扩展方式类PotentialCalculator,下面我们来讲一下地杰斯特拉算法该算法主要在dijkstra.h及dijkstra.cpp中我们首先来看一下头文件dijkstra.h//迪杰斯特拉算法#ifndef _DIJKSTRA_H#define _DIJKSTRA_H//优先 大小#define PRIORITYBUFSIZE 10000原创 2021-03-16 11:18:59 · 1300 阅读 · 2 评论 -
global_planner解析(3)
这章我们对路径搜索的基类Expander进行讲解:该部分代码在expander.h文件中,#ifndef EXPANDER_H#define EXPANDER_H#include <nav_planner/planner_core.h>#include <nav_planner/potenrial.h>namespace nav_planner{//扩展器class Expander{public: //构造函数 Expander(Potenti原创 2021-03-15 16:53:08 · 826 阅读 · 0 评论 -
global_planner解析(2)
第二章我们则对功能包的文件及类进行解析:首先我们看一下功能包里面有什么类分别作用(由于本人刚刚入门uml,故图片可能有所偏差)里面最主要的就是插件算法类GlobalPlanner父类nav_core::BaseGlobalPlanner,而路径搜索分别是DijkstraExpansion(地杰斯特拉算法)、AStarExpansion(astar算法),路径回溯PotentialCalculator、QuadraticCalculator(使用梯度下降)然后我们看一下里面有哪些文件:.├── b原创 2021-02-25 11:27:56 · 1013 阅读 · 0 评论 -
global_planner解析(1)
global_planner是ros的一个全局导航插件功能包,实现了astar和Dijkstra寻路算法。我们大部分同学会使用而网上也很少对其的完全解析,今天我们就来解析一下global_planner功能包。第一章将从其参数讲起:以下参数在启动时进行配置-old_navfn_behavior:bool ture使用原来功能包navfn的规划方式use_quadratic:bool true使用二次近似函数,false使用更简单的计算方式节省硬件资源(否的话会扩展周边4个点,是扩展周边八个)u原创 2021-02-25 09:58:38 · 2054 阅读 · 2 评论