- 博客(46)
- 收藏
- 关注
原创 multi_lidar_calibration
https://github.com/AbangLZU/multi_lidar_calibration
2023-09-02 13:55:56 143
原创 编译64 arm的qmake
https://blog.csdn.net/guohuaqu/article/details/109519744https://blog.csdn.net/daniaoday/article/details/108776930
2023-05-17 14:56:52 279
转载 把NDT算法原理说的比较明白的一篇文章
https://blog.csdn.net/weixin_43849505/article/details/120595288
2022-08-31 10:24:47 332
原创 IMU预积分
IMU预积分学习IMU预积分解释在优化过程中,引入imu数据进行多传感器数据融合可以提高定位和建图的准确性。通过对imu数据进行积分,把上一刻的pvq当作初值,可以得到当前时刻的pvq,更新pvq。但是在优化过程中,上一刻的初值经过一轮优化后其值会改变,这样对imu的积分也要重新计算,这样的话,计算量大,计算过程复杂,浪费计算资源,所以提出预积分方式来提高计算速度,避免浪费算力。预积分的核心思想是把积分中的初值“摘”出去,使得积分结果与初值无关,优化过程中无论初值怎么变化都对imu数据积分的计算没有
2022-03-31 16:17:52 1307
转载 2021-07-30
关于CSM算法两篇比较清晰透彻的博客CSM-流程:https://blog.csdn.net/u012209790/article/details/82629422#commentBoxCSM-原理:https://zhuanlan.zhihu.com/p/339812617
2021-07-30 10:32:13 110
转载 关于Apollo的lattice planner
https://blog.csdn.net/yuxuan20062007/article/details/82330165EM planner 和 lattice planner 概述对比
2020-08-31 14:33:52 837
转载 emplace_back和push_back区别
https://blog.csdn.net/xiaolewennofollow/article/details/52559364
2020-08-26 16:05:30 281
原创 剑指2-5
51 构建乘积数组因为不能用除法,把B看成两段相乘.左右两段相乘52 正则表达式匹配字符串53 表示数值的字符串54 字符流中第一个不重复的字符55 链表中环的入口节点双指针一个每次走1个节点 一个走2个节点两个指针进入环以后就会一直在环内,一个快一个慢,他们一定会相遇假设p1走了x p2走了2x 假设环内节点数量为nx + n = 2x -> x = n 即p2多走了一个环的n再把p2放在起点 下次相遇的时候就环的入口了56 链表中重复的节点设置链表的头结点为前一个位
2020-08-24 20:14:52 96
原创 剑指offer2-1
1.二维数组的查找从右上角依次查询;比右上角小:行不变,列-1;比右上角大:列不变,行+1;2.替换空格主要思想:从后往前替换原因:在不使用别的字符串情况下,可以实现替换空格.方法:先查找空格的数量和字符串的长度,再进行从后往前的替换注意;在替换时注意str下标的使用;3.从尾到头打印链表思路:利用栈,再用vector;原因:要求是从尾到头;方法:while 循环;注意:不需要打印链表的地址:4.重建二叉树思路:利用递归;原因:方法:利用前序遍历找根.利用中序遍历找左右字子
2020-08-24 11:01:38 111
原创 剑指offer 2-2
1.栈的压入,弹出序列思路:根据栈先进后出的特点,找压入弹出规律方法:用一个辅助栈,将压入序列一个个依次压入辅助栈.判断辅助栈的top是否等于出站序列元素.如果相等,则将辅助栈pop,如果不等继续将压入序列元素压入辅助栈;直到压入栈为空时,判断辅助栈是否为空.注意:压入 弹出序列的元素下标使用2.从上向下打印二叉树思路:用vector存二叉树,用queue存指针;方法:先将root存入q,进入循环,将q.front的值存入vector.接下来判断q.front左子树是否为空,不为空存入q,再判断
2020-08-24 11:01:25 95
原创 剑指offer2-3
1.整数中1出现的次数思路:输入一个数,从1开始挨个查找1,直到n;对于每个数,按照个位十位…依次查找方法:利用for循环和while循环;while循环里 利用取余操作按照位进行1的查找;2.把数组排成最小的数思路:...
2020-08-24 11:01:09 70
原创 state lattice + OBVP 算法回顾
目标 给点起点和终点 先求出在起点做一次state lattice planning 的轨迹 再求在轨迹基础上从轨迹终点到给定终点的OBVP问题1. state lattice将控制量a离散化 离散成discretize_step份分别再xyz上进行积分求得p v,得到轨迹2. OBVP将第一段的轨迹终点作为OBVP的起点 给定终点作为OBVP终点 进行最优边界值问题求解起点 p v终点pOBVP求解过程建模:系统建模 问题建模(优化目标函数) 状态表示 输入表示求解:定义哈密尔顿方
2020-08-20 11:17:29 1579
原创 基于图搜索的规划算法
Graph Search Basic遍历搜索BFS:维护队列 先进先出DFS:维护堆栈 先进后出启发式搜索引入启发函数Dijkstrag(m) = g(n) + Cnm优点完备 最优缺点只计算关注g(n)代价 没有方向性没有终点信息A*(启发函数h(n))f(n) = g(n) + h(n)当h(n) <= h*(n) 时 才是最优工程上改进A*找到合适的启发函数Tie Breaker :很多节点有相同的f 打破对称性JPSJPS
2020-08-19 15:59:06 547
原创 Apollo3.5:基于拓扑地图TopoGraph的Routing模块A*算法路径导航
概述本文参考https://blog.csdn.net/davidhopper/article/details/87438774 在其基础上结合自己理解进行修改Routing模块给自动驾驶系统提供全局的路径导航功能,类似于百度地图/高德地图的导航。在收到路由请求之后,为了完成导航功能,Routing模块使用了专用的路由地图routing_map。最终输出的是自动驾驶车辆在从出发点到目的地的过程中经过的所有路段。导航器NavigatorNavigator时路由搜索的实施类,完成的具体的路径搜索.
2020-08-11 17:21:12 3132
原创 基于模型预测控制MPC的无人机轨迹跟踪
模型预测控制MPC算法主要思想是用优化的方法解决控制和规划问题。MPC主要分为三部分建模:系统建模和问题建模预测:参数空间 状态空间 输入空间控制:选择最好的策略算法过程系统建模问题建模优化控制基本的MPC过程用MATLAB代码实现主函数 hw8.mclear all;clc;close all;//初始化状态p_0 = [0 8 20];v_0 = [0 0 0];a_0 = [0 0 0];K = 20;dt = 0.2;omega =
2020-07-30 16:50:34 9166 11
原创 基于硬约束的轨迹规划
硬约束的轨迹规划在前面Minimum Snap即基础上加入避障;算法思想:用八叉树地图生成bouding box搜索到经过bouding box 重叠区域的路径用贝塞尔曲线进行优化贝塞尔曲线有4个优点:曲线的控制点必然经过路径起始点凸包包含所有控制点 曲线一定在凸包内求导后依然是贝塞尔曲线,并且控制点可以由原来的控制点表示时间0<t1...
2020-07-29 11:44:40 1020
原创 基于ROS用二次规划QP实现Minimum Snap轨迹规划
算法思路算法思路与上一篇MATLAB实现的算法完全一致,这里不做介绍,这篇主要是用C++ 在ROS下实现算法。主要介绍写代码过程中遇到的问题和处理方法。代码实现实现过程存在几点与MATLAB不同,其他类似。1.时间分配问题时间坐标采用相对时间,与MATLAB相同。但再每段时间分配时,MATLAB用的时统一分配,每段的时间相同,再C++下采用的是一种以最大加速度和减速度完成每一段路径的轨迹运行。每段开始时以最大加速度进行加速,当到达最大速度是,采用匀速运行,当每段快结束时,采用最大减速度进行减速。具
2020-07-28 10:44:01 2030 2
转载 ros nh.parmam 用法
https://blog.csdn.net/EliminatedAcmer/article/details/80639546
2020-07-27 08:26:51 1744
原创 剑指offer 2-4
41.和为S的连续正数序列思路:连续序列---->想到用两个指针来实现方法:左指针l 右指针r 移动右指针将数字依次相加得到sumx 当sumx大于100时,将左指针向右移动,再计算sumx。直到sumx == sum 时 且左右指针不相等时(为了避免左右指针同时指向自己sum)注意:编程时一些计算顺序42.和为s的两个数字思路:类似41 两个指针 因为数组时排序的 左指针指向0 右指针指向数组最右边方法:输出乘积最小的两个数 即最外边的两个数 当第一次找到和为s的两个数 即br
2020-07-24 10:47:35 72
原创 minimum snap轨迹规划 用二次规划QP求最优解
Minimum Snap 轨迹生成算法思想:1.给定起点 终点 经过点;2.将所有点通过多项式连接,如图1;3.起点终点(pvaj)限制;经过点(p)限制;4.每一个segment多项式都不同,也就是每个segment的系数都是不同的,并不是用一条多项式将所有点相连,如图2所示,但是多项式的n_order相等;n_order=2×d_order-1;d_order表示优化目标的阶数;在此对snap进行优化,所以d_order=4;5.这里采用分段计时,每个segment都有一个时间段T,如图3;
2020-07-22 17:14:27 4580 3
原创 动力学约束下的路径规划
一 简介Kinodynamic:Kinematic+Dynamic满足动力学和运动学约束的运动规划.三种车模型:Simple car modelReeds & Shepp’s carDubin’s car二 状态栅格搜索算法(State Lattice Search)构建可行的运动连接:前向的积分:离散控制空间(A*)后向的计算:离散状态空间(PRM)控制空间采样的例子通过状态空间模型表示状态:s’=As+Bu通过状态转移方程得到路径.通过离散控制,给控制量,
2020-07-18 16:37:34 2158
原创 OMPL库实现RRT*
用OMPL库实现RRT*要求实现以下功能:把用户定义的起点、终点、地图用ompl 库定义的数据结构表示了解 ompl 调用RRT*的方法和步骤把 ompl库求解得到的路径转换为用户定义的数据结构OMPL库OMPL是基于采样方法的开源机器人运动规划库,包括运动规划算法PRM及RRT和他们的衍生算法RRT*等和碰撞检测算法.主要包含许多不同采样器如高斯等.OMPL学习OMPL使用例子:https://blog.csdn.net/qcxyliyong/article/details/10336
2020-07-10 09:58:16 1529 2
原创 基于采样的路径规划方法
一 PRM 概率路图1. 算法分为学习阶段和查询阶段:学习阶段第一步在图中随机撒点(删除障碍物里的点)第二步将所有的点连接起来(按照一定距离)查询阶段通过例如A*算法等进行搜索路径(也可以边界值连接) 找到终点2.特点:适合高维空间 障碍物较多 复杂环境3. 改进改进撒点规则 启发式撒点采用lazy checking (先连接所有点,在搜索路径,当路径上有障碍物时,放弃,再进行下一次搜索)连接点用曲线(OBVP等方法)二 RRT算法分析:优点1.相对于PRM更针对性,
2020-07-08 17:56:43 1627
原创 ROS下用C++实现A* /JPS算法
在ROS下用C++实现A* /JPS算法A* 算法流程见文件:src/grid_path_searcheer/src/demo_node.cpp主函数 main1. int main(int argc, char** argv)2. {3. ......4. //订阅到地图信息的回调函数5. _map_sub = nh.subscribe( "map",6. //订阅到终点信息的回调函数7. _pts_sub = nh.subscribe( "waypoints", 1, rcvWayp
2020-07-08 14:26:27 3852 9
原创 P-1 _Apollo3.5:planning模块
模块概述决策规划模块主要任务:根据导航信息以及车辆的当前状态,在有限的时间范围内,计算出一条合适的轨迹供车辆行驶。车辆的全局行驶路线由Routing模块提供.车辆的当前状态包括了:车辆的自身状态(姿态,速度,角速度等等),当前所处的位置,周边环境以及交通状态等等.Planning模块响应速度必须稳定可靠.合适的轨迹有多个层次含义.轨迹不仅包括行驶路线,还要包括每个时刻车辆的速度 加速度 方向转向等信息.转弯角度.也要考虑乘客体验.模块架构Apollo项目采用了模块化、适用于特定场景和整体
2020-06-19 08:42:37 549
转载 Apollo课程approache分享
原文作者:https://blog.csdn.net/yuxuan20062007/article/details/88805365
2020-06-18 21:03:17 204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人