
【5】无人机项目实战
文章平均质量分 85
本专栏会持续更新,结合本人在机器人、自动驾驶行业的研发经验,逐步进行探讨fast_planner、ego_planner、fast_tracker、Teach-Repeat-Replan System等开源工程的导航系统原理和项目实践。
RoboticsTechLab
一枚爱琢磨、愿意深耕的研发攻城狮,现从事于机器人、自动驾驶行业,不定期分享机器人、自动驾驶及工作经验相关内容,感谢关注!
展开
-
【无人机项目实战】第一章:fast_planner前端Hybrid A* 算法生成路径
然后判断该节点是否在待拓展的开集合中,若不在,则将其加入到开集合中,记录该节点的g值以及父节点,并计算该节点的f值,该节点的评估结束,若已经在开集合中了,则判断该节点上面算出的新g值是否大于原有的g值,若是则不需要进行处理(该节点原有的方案更优),继续评估下一个节点,若不是,则说明该节点的现有方案更优,若不在闭集合中且为可行节点,则继续进行该节点的评估,计算该节点的g值,即其父节点n c的g值加上该节点对应的小轨迹的代价值。将该节点的父节点更新为n c,g值更新为新的g值,并更新计算该节点的总代价f值。原创 2025-04-04 10:08:52 · 87 阅读 · 0 评论 -
【无人机项目实战】第二章:fast_planner的后端轨迹优化
B样条是一种轨迹的表达方式,就像用多项式来表示轨迹也是一种轨迹的表达方式。B样条通过控制点来表示轨迹,如下图中的轨迹上的圆点所示,通过拉动控制点就可以使轨迹发送变化。有了目标函数各个组成部分的具体表达式,总的目标函数的表达式也就知道了,然后使用优化算法的求解器,就可以求解该优化问题了,得到使得目标函数值最小的那个控制点的位置x。Fast Planner中的B样条曲线的表达式,在给定时间区间后,唯一的变量就是控制点的位置。只改变时间分配,不改变控制点的位置,生成轨迹的几何情况是不会发生变化的。原创 2025-04-04 10:09:36 · 80 阅读 · 0 评论 -
【无人机项目实战】第三章:fast_planner工程解读(附C++代码)
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、规划系统运行逻辑【业务部分】1.Fast_planner_node.cpp【程序入口】功能代码实现2.kino_replan_fsm.cpp【状态机转移】功能代码实现KinoReplanFSM::init()函数订阅目标点回调函数订阅里程计回调函数检查路径规划是否成功【重要】执行状态机FSM定时器回调函数【重要】判断目标点是否有障碍物或者是轨迹执行过程中是否有障碍物的回调函数3原创 2021-11-29 19:01:24 · 11837 阅读 · 0 评论 -
【无人机实战】第一章:Ego_planner的算法框架流程与原理
除了构建ESDF地图需要耗费较长时间之外,在建图的时候只能看见障碍物的表面,如下图中的右图所示,看不见障碍物的后面/内部,在优化的过程中会使用ESDF去产生一个排斥轨迹远离障碍物,在下图所示的例子中,上面的障碍物将轨迹往下推,下面的障碍物将轨迹往上推,会出现轨迹卡在障碍物中的情况。如果没有发生碰撞,则继续迭代优化轨迹,如果发生了碰撞,就需要针对这个碰撞,加一个新的推力的cost,此时优化问题发生了变化,不能再针对原问题继续优化下去,需要针对新问题重新开始优化。原创 2025-04-04 10:10:01 · 418 阅读 · 0 评论 -
【无人机实战】第二章:Ego Planner程序框架及代码解析
上面生成的轨迹并不是B样条轨迹,接下来需要将其变成B样条轨迹(通过求解最小二乘问题获得B样条的控制带你来进行转换),该部分内容是通过调用parameterizeToBspline函数完成的,该函数的具体程序位于uniform_bspline.cpp文件中,该函数的输入参数中point_set是轨迹上的点,start_end_derivatives是起点和终点的高阶约束。在BsplineOptimizeTrajRefine函数中,调用了refine_optimize函数来执行具体的优化过程。原创 2025-04-06 07:45:43 · 798 阅读 · 0 评论 -
【无人机项目实战】多机器人规划 EGO-Swarm算法
【开源规划器】多机器人规划 EGO-Swarm算法原创 2024-12-22 15:44:01 · 944 阅读 · 0 评论 -
【控制模块算法】微分平坦(Differential Flatness)
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、微分平坦(Differential Flatness)目的二、无人机微分平坦控制举例三、无人机的规划和控制关系四、【拓展控制方法】微分动态规划法(Differential Dynamic Programming)1.数学原理2.原理的表述3.优点4.缺点参考资料前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!在项目和平时的学习中,我对机器人原创 2021-10-11 17:30:05 · 6093 阅读 · 4 评论 -
【局部规划模块轨迹优化算法】飞行走廊硬约束的优化
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对硬约束(飞行走廊)轨迹优化做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2024-04-29 00:10:52 · 566 阅读 · 0 评论 -
【局部规划模块轨迹优化算法】软约束轨迹优化
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对**软约束轨迹优化(把硬约束转换成软约束)**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容人工势场法是由 Khatib 在二十世纪提出,其基本的实现方法是将机器人的路径规划同磁场相结合,同时将人工势场函数用作机器人的环境模拟状态。并将终止点的吸引磁场,【防盗标记–盒子君hzj】和运行过程中的潜在运行障碍物体的排斥磁场,两相复合作为参照指标。原创 2024-04-29 00:12:24 · 354 阅读 · 0 评论 -
【地图&规控模块项目实战】地图模块和路径规划模块的相互配合
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言总结前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对地图模块和路径规划模块的相互配合做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容上图是我对该项目手撕的图,字丑勿喷~步骤如下://////////////////////////////////////地图模块部分/////////原创 2021-11-26 11:35:19 · 1769 阅读 · 0 评论 -
【定位模块算法】常用定位方法及原理介绍
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、定位的基础理论介绍1.定位的介绍2.泛型定位算法的原理(1)基于地图定位的方法(2)基于滤波器融合定位的方法(3)基于图优化定位的方法3.定位的方案(1)绝对型定位方案【范围由大到小】(1)室外GPS(GNSS)定位框架(2)千寻账号(国内)定位框架(3)RTK基站定位框架(4)uwb定位模块定位框架(5)wifi定位框架(6)动作捕捉仪(2)相对型单传感器定位方案(1)轮式编原创 2021-10-25 20:59:00 · 1965 阅读 · 0 评论 -
第二章:【可视化工具项目实战】ROS jsk_rviz_plugins插件实现的机器人实时数据可视化
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、B样条曲线理论1.贝塞尔、B样条、非均匀B样条关系2.B样条的分段本质(B样条与Bezier曲线关系)3.B样条曲线的基本参数--对应实现的步骤一(1)t权重系数值(调用的时候靠这个)(2)阶数(3)控制点列表(4)节点表4.B样条曲线递归公式推导【Cox-DeBoor公式】--对应实现的步骤二(1)B样条曲线公式【第一种表达方式(正推--数学归纳法)】(2)B样条曲线公式【第原创 2025-01-11 11:05:55 · 2602 阅读 · 0 评论 -
基于强化学习的路径规划技术综述
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、nlopt进行轨迹优化的目的1.输入2.输出二、步骤一:设计相关的代价目标函数【用于计算代价cost和梯度grad】1.子目标函数的设计(1)平滑度代价函数calcSmoothnessCost()(2)远离障碍物代价优化calcDistanceCost()(3)计算速度、加速度可行性代价函数calcFeasibilityCost()(4)计算最后一个吻合程度代价函数(5)计算路原创 2024-12-22 20:17:38 · 1266 阅读 · 0 评论