- 博客(165)
- 收藏
- 关注
原创 《【一看就会】Autoware.universe的“规划”部分源码梳理》系列文章目录(持续更新中)
第零章:Planning综述第一章:【一】全局路径生成模块——mission_planner第二章:【二】路径行为规划模块——behavior_path_planner第一部分——behavior_path_planner模块第三章:【二】路径行为规划模块——behavior_path_planner第二部分——behavior_path_planner_common模块(1)第四章:【二】路径行为规划模块——behavior_path_planner第三部分——behavior_path_plan
2025-02-18 10:06:16
2104
原创 处理多边形裁剪和偏移的操作库:Clipper库讲解
在AI编程的时代,很多人过于相信其能力,在很多计算时直接让agent写对应算法,而忘记了,在编程中,已经有各种丰富的开源库供我们使用,这些库经过了多年的验证,绝对要比agent现写出来的稳定,鲁棒,而agent可以非常熟练的使用这些开源库,节省了我们学习的成本。
2026-02-06 10:44:29
519
原创 git代码管理的一些基础知识
git网上资料太多了,何况还有AI,使用起来已经不是个难事。但是git代码管理的操作,会存在因为merge不当,导致代码丢失,难以找回的情况。所以我认为还是要讲一下,就讲清楚git的一个工作流,作为同事的操作手册使用。本文会先讲一下git的基本概念,然后梳理一个简单工作流供同事使用,之后再强调一些绝对不要做的事项,防止破坏项目代码。同时,其中的【你们】特指我的同事。补充一下,正常工作流,需要每天都push代码,我好检查你们每天的工作量,但目前还不做这些强制要求。
2026-01-29 19:18:28
805
原创 【一看就会】速度规划(speed planning)模块详解
速度规划这部分,在机器人和机械臂领域,属于运动控制部分。而在自动驾驶领域,属于规划部分。在这两个不同的领域,其基础工作流也不相同。本文研究自动驾驶的速度规划部分。速度规划需要在路径的每个点进行速度标注,供后续的纵向速度控制。纵向速度控制就会根据车辆实时的速度和在这点的目标速度,进行控制。所以速度规划是纵向速度控制的前提条件和基础。因为这部分也是给我的同事的参考方案,所以其中的【你】特指我的同事,其他读者不用在乎。
2026-01-28 12:22:01
834
原创 【一看就会】路径规划——几种路径或者点之间的衔接方式
路径规划中,在规划车辆行驶路径时,经常需要考虑不同路段之间的衔接问题。例如,当车辆需要从一个车道中心线平滑过渡到另一个车道中心线时,路径的连续性就显得尤为关键。对于差速车或四轮转向车这类转弯半径趋近于零的车辆,理论上它们可以跟踪任意连续的路径,因此路径衔接问题并不突出。然而,对于大多数乘用车和商用车这类依靠前轮转向、转弯半径不为零的车辆,路径的平滑过渡就必须被纳入考量。
2026-01-24 16:17:33
723
原创 【一看就会】路径规划——静态绕障路径规划(响应式/反应式绕障规划)
静态绕障路径生成是路径规划中较为复杂,难度较高的一项规划,很多同学刚入手的时候会将整个重心放在A*,TEB等算法的选择和理解上,但是对整个静态绕障路径的生成流程却不理解,导致所做的静态绕障路径模块无法嵌套入实际项目中使用。本文就按照静态绕障路径模块的整个工作流程来进行讲解,帮助大家更好的理解静态绕障路径模块。静态绕障虽然相对动态绕障来说简单,但是每部分需要优化的地方如果铺开讲就太多了。
2026-01-21 19:45:07
962
原创 【一看就会】农机无人驾驶——轮廓内外法向量计算
农机的无人驾驶中,采集完地块轮廓的边缘线之后,计算轮廓线内外法向量是保证后续作业很重要的一步。想做一些测试验证的话,还是使用地块边界点数据这个数据就可以。
2026-01-20 19:50:00
660
原创 【一看就会】无人驾驶农机——多边形边界点自动分段||多边形顶点检测算法
农机的自动驾驶工况有别于别的自动驾驶工况,可以说是我做过项目中,离传统规控思路框架最远的一个项目。它既没有道路规则,无法使用高精地图中的语义信息进行规划。又不像扫地机器人那样,完全开放无规则的空间。它有一套自己的农业作业规范,而这套规则甚至于并不是针对农机,而是针对农具。也就是说,不同的农具,有不同的规划方式,而在每种规划方式中,在各个细节又不同。各个不同的地方,就有不同的问题。本文所要阐述的,是农机自动驾驶的路径规划中,地块边界的分段问题。
2026-01-19 18:30:23
712
原创 关于AI编程时代的面试需求思考
但是我在工作过程中发现,好像当前这个AI编程时代下,这样子的面试已经意义不大了,因为上班就是为了干活,真正干活的时候,你想要手撕我都不会同意,因为耽误时间。我之前面试算法,除了简历上的问题进行考察,确保简历上的内容真实,且简历上写的技术栈对方确实掌握之外,也会让对方打开力扣,考一道中等难度的题。请在20分钟内,完成***的方案(一个我司之前或者当前的项目中的一部分规控的任务),可以使用AI,查电脑,等所有能动用的工具实现。工作必定是效率至上,我提的需求能够尽快实现,这才是我需要的。
2026-01-12 18:04:50
127
原创 在同一局域网下,使用ssh命令进行文件传输
3.如果能ping通,就在本电脑上继续输入:ssh nvidia@192.168.1.2。2.首先打开终端,在本电脑上ping,看能不能ping通,这一步是保证连接没问题:ping 192.168.1.2。其中,111是你要传输的文件名称,222是你要存放在自己电脑的哪个文件夹下。操作本电脑,将另外一台电脑上面的文件通过ssh远程传输到本电脑上。比如本电脑的用户名:home;1.首先需要知道本设备和另一台设备的ip地址和用户名称。4.通过ls和cd等命令,找到你要传输的文件。
2026-01-06 14:38:47
272
原创 【一看就会】LeGO-LOAM-ROS2源码解析
最近有个项目,需要用到3d激光雷达实现建图定位,且没有imu等别的传感器融合,所以便用到了lego-loam,刚好也在此做一下整理。这个项目是用的鱼香ros的humble版本,对应git库lego-loam一般而言也是拿来直接用,只需要知道其基本流程就行,如果要根据项目进行修改优化,能找到在哪改就行。
2026-01-05 15:44:43
813
原创 【一看就会】路径规划算法三——混合A*
这是路径规划算法第三篇,给大家讲一下混合A*算法。当然,所有路径的规划算法目标都是在一定的规则之下,从起点走到终点,这个宗旨是永远不会变的,所以在接下来的讲解中,我也会围绕着这个宗旨进行讲解。后续还会整理JPS和TEB算法。
2026-01-04 18:12:52
464
原创 MPC预测轨迹和目标路径相反--现象描述和问题解决
在这个过程中我发现,在计算目标轨迹的曲率时,进行了绝对值计算,导致目标轨迹的曲率只有正值没有负值,很明显这个就是导致以上现象的原因,于是我修改的曲率计算公式,使其能够得到正确的曲率,从而解决了这个问题。而目标轨迹是由输入的目标路径,经过一系列计算和转换得到的,包括消息格式变换,计算每个点的曲率,重采样等。预测轨迹是使用预测控制量生成的,这个预测控制量取第一位就是输出的横向控制量。1.直线跟的很好,左转弯也跟的没问题,但是右转弯跟的很差,会游龙。既然直观在预测轨迹上显示,那我们就检查预测轨迹的生成。
2025-12-19 15:29:44
315
原创 【一看就会】规划之局部路径讲解
在规控中,局部路径模块是作为输出最终路径,随后控制模块接收其输出的路径进行后续跟踪控制。本文主要讲解局部路径所需要实现的功能,帮大家了解局部路径模块的组成。局部路径的构成基本就是这四项,当然了,还有像是行为决策,模式切换,和其他无人车和机器人的交互等等,不过只要实现了以上四个功能,就算是一个基础的局部路径模块了。
2025-12-12 17:06:36
345
原创 【一看就会】Autoware.universe中将mpc控制模块单独拆分成独立模块
Autoware.universe这套代码太冗余了,在其他一些小项目上根本用不到这整个系统。但是其中的控制模块又写的非常好,无论是纵向的pid速度控制,还是横向的mpc角度控制,都考虑到了各种情况,加上了各种安全检查和约束。于是我便将mpc控制模块给单独的拆分了出来,作为一个独立的横向控制模块,可以单独的接收话题并发布计算出来的角度信息。在这里我讲解一下这个步骤。ps:想了想,源码还是没法给,毕竟是随着公司的项目做的这部分,属于公司的财产。
2025-12-11 15:40:04
409
原创 【一看就会】【人工智能第三篇】从chatgpt理解transformers(一)
一直在使用chatgpt,但是它到底是什么?人工智能怎么理解?神经网络怎么理解?本文尽量用通俗易懂的语言解释这些,不涉及具体公式,主要是为了方便大家理解。请先阅读前两篇文章,或者对神经网络有一定了解。需要注意的是,本篇文章为 从chatgpt理解transformers(一),内容讲完了transformer架构中的编码器。剩余部分会在后续的文章中继续梳理。这篇文章很长,你如果想要搞懂,至少留出一下午的时间一口气读完,尽量不要分几次阅读。
2025-12-08 16:38:05
1229
原创 几种自动驾驶框架简要梳理
本文简单梳理了现有的几种自动驾驶框架。在网上找了找,才发现真正开源的自动驾驶算法框架没有几个。写的不对的地方希望大家纠正。
2025-12-08 16:36:49
231
原创 我的创作纪念日
就代码方面,我认为不算什么成就,因为我不是科研人员,而是一个工程师,所做的产品都是肯定能实现的产品,并且不谦虚的说,我的开发能力和解决问题的能力都算比较强,所以这部分只能算是正常的工作内容。其他方面的成就这一年也有所欠缺,说起来,我在这近三年来,没有做出一件让我成就感爆棚的事情做成,这个我需要警惕了,我认为现在我正在调入这种安逸但是活不好的人生牢笼中。
2025-10-12 21:54:24
364
原创 【一看就会】Autoware.universe的控制部分源码梳理【四】
最近又开始搞autoware的控制,其实autoware的控制模块已经很成熟了,但是在实际使用过程中,明明规划出了路径,但是点击auto之后发出的速度却是0.于是我整理一篇autoware的控制模块中默认控制器的纵向控制的数据流。路径生成后,纵向速度计算一般不会出问题,但是有可能会出现0的情况,也就是中间有某些步骤卡住,或者是出发了急停,或者是input信息不全等原因,了解了数据流之后,可以加入日志信息来帮助问题分析。
2025-09-16 17:33:56
623
原创 【一看就会】Autoware.universe中修改初始速度
在autoware,universe中,车辆的速度控制,是根据车辆的实时速度进行规划,而如果车辆停止时,所发的初始速度为0.25m/s,然后等车辆达到这个速度之后,再发一个更大的目标速度,但是某些大型车辆的底盘控制中,最小受控车速是0.5或者更大的值,那我们就需要修改这个初始速度。
2025-09-16 17:32:49
341
原创 【一看就会】调头路径或者泊车路径中,分段输出判断的一种解决方案。
调头路径的跟踪在整个路径跟踪中属于较难的一部分。需要路径生成和跟踪互相配合,才能很好的实现功能。在实际的测试中,经常发现调头时在某一段路跟不上,导致后续的路径全部无法跟踪。首先需要明确的是,调头路径这种有重叠的路径,是无法作为一整条全局路径的,一定是分段进行输出,给后续的跟踪模块。那就一定需要一条路径走完,再走另外一条路径。这个时候就需要有判断,什么时候就算走完当前这段路径呢?最简单的,根据当前位置和当前路径最后一个点的距离阈值。
2025-08-27 14:20:30
511
原创 关于乘用车底盘can协议控制的一个bug及解决方案
最近在调试乘用车底盘的时候遇到了一个问题,困扰了我一个多月,在此做个记录。因为之前一直是做商用车,没有太多乘用车的开发经验,导致这次的项目因为这个问题延期了一个多月,并且还耗费了很多人力物力,在此做个记录,也希望各位初做乘用车的伙伴不要再被这个问题困扰。
2025-08-27 14:20:19
285
原创 【持续更新】关于智驾系统规控算法,在实车上调试的一些心得体会
目前做的项目为智驾农机,整套规控算法是我自己开发的。在这周之前同事将环境代码部署好,我这周来现场进行调试了一周,在昨天将基本功能调试完备。调试规控算法过程中,有些心得体会在此说一下,当然之后还会不断进行调试优化。最近还是在现场调车,边调试会边更新。
2025-08-24 16:15:07
677
原创 can使用时的一个缓冲区溢出报错:Error sending CAN frame: No buffer space available (errno=105)
报的就是缓存拥挤,然后只需要扩大缓存区就行。
2025-08-24 16:14:58
253
1
原创 【一看就会】Autoware.universe的规划模块的输入输出
前面整理了control和vehicle的输入输出,本篇文章整理一下planning里的输入输出。
2025-08-15 12:01:24
873
原创 ros2中,终端打印的ros-info等信息无法保存在log文件中的解决
在ros2中,info等日志输出能显示在终端上,还能写进ros下的log文件中的对应log文件。目录是这个~/.ros/log/解决方法很简单,在该节点的launch文件里,将output = screen改为output = both。但是我遇到了虽然能实时在终端打印,但是没有写进去的问题。
2025-08-14 10:46:46
290
原创 【一看就会】Autoware.universe的vehicle模块的输入输出
autoware中的vehicle模块是和车辆直接交互的模块。它可以接收control模块的转角和速度等信息,并转换为方向盘转角和油门信号。还可以接受底盘的各种信息,并转换成车辆所需要的话题消息。还可以进行油门标定等功能。但是这个模块也可以不用,因为有些车辆直接可以使用转角和速度进行控制。本文整理了vehicle模块的输入输出,也是分为了四部分:1.内部输入。2.外部输入。3.输出内部。4.输出外部。
2025-08-14 10:45:18
805
原创 【bug记录】关于使用多线程时报的一个错误:terminate called without an active exception
或者是回调函数中有gear_n = std::thread(&VehicleCanController::auto_gear_n,this);,然后每次执行回调函数都会执行一遍这个的情况下。在使用多线程的过程中,程序报错:terminate called without an active exception。RCLCPP_INFO(this->get_logger(), “等待auto_thread结束”);多次测试发现,这个问题出在多次创建同一线程后。这是因为同一个多线程不能重复创建。
2025-08-13 16:24:19
382
原创 【一看就会】Autoware.universe的控制模块的输入输出
在autoware中只用仿真的话不用操心输入输出,因为自带的仿真已经给你对接好了。但是如果用autoware实现真实车辆的自动驾驶,这就需要清楚的知道输入输出,方便和车辆对接。本文就给大家整理一下这部分,方便大家开发时使用。会分为四部分。1.内部输入:像规划和感知模块对control的输入,这部分是autoware系统内部的输入,对接时不需要,但是在排查问题,梳理流程时很重要。2.外部输入:这部分就是需要车辆反馈的输入,和车辆对接时需要给负责车辆那部分的同事对接清楚。
2025-08-13 16:23:45
798
原创 《【一看就会】Autoware.universe的“控制”部分源码梳理》系列文章目录
第零章:autoware.universe在ubuntu22.04上的安装第一章:Autoware.universe中的车辆模型参数文件第二章:Autoware.universe中的油门和方向盘控制第三章:autoware universe项目结构解析——从一层一层直到control源码第四章:autoware.universe编译过程中的一个报错:<command-line>: fatal error: grid_map_core/eigen_plugins/FunctorsPlugin.第五章
2025-08-12 10:50:20
236
原创 自动驾驶嵌入式软件工程师面试题【持续更新】
最近面了一些嵌入式的,整理一下面试题。面试会根据简历中提到的内容进行面试,但是像can等基础的通讯协议,简历里面有没有写都会问,是必要掌握的技能。之后如果还会面一些嵌入式的话再继续更新。
2025-08-02 14:54:05
745
原创 【一看就会】农机智驾逻辑梳理
最近在做农机的智驾部分,顺手整理一下整个农机的需求和逻辑,能让大家更好的了解农机智驾的整体算法框架和思路。需要注意的是,这部分只涉及到流程和思路,并不涉及到具体算法和源码,因为具体算法和源码属于公司的财产,我这边就不太方便透露了。基本就这些内容了。这部分内容写的比较谨慎,因为和我工作重叠的太多了,所以只能讲一下这些思想。
2025-08-02 14:20:50
980
原创 【一看就会】对智驾“规控”部分的理解
在粉丝的强烈要求下,我出一篇对于autoware版本规控以及我对规控的一些理解。希望能对大家对规控部分能有所启发。本篇算是一篇这几年做规控的理解和思路,写的会比较口语化一些,也不会有代码或者具体算法的讲解,主要帮我大家入门,或者理清楚规控部分的内容。当然是rule-based方案的规控哈,端到端的最早也得明年再讲了。主要是写规控框架的思路和逻辑,略显粗糙,还有什么要我补充的私信或者评论区。最近项目太忙了,过了这几个月我好好整理一下。
2025-07-19 17:15:58
772
原创 【一看就会】智驾中速度和汽车扭矩的转换--使用pid算法(一)
最近在项目中遇到了一个问题。智驾系统最后计算出的车辆的速度,但是项目中所用车辆的底盘控制接口只有电机扭矩。这部分困扰了我们整个项目组很久,导致项目搁置。为了保证项目能正常推进,我找了一些行业人员进行了询问。发现解决思路非常简单。就是用简单pid进行控制。本篇文章就整理一下使用pid算法,进行速度到扭矩转换这部分算法开发的逻辑流程。这个也是一个小系列,因为这个算法开发非常简单,主要难度在调参这部分,后续的几篇文章就会围绕调参这部分去讲。
2025-07-15 10:19:09
856
原创 【一看就会】Autoware.ai规控部分源码解析【0】--综述
autoware.ai这个系列模块没有写完,因为项目在进行过程中因为硬件版本问题不支持,所以不再使用这套方案了,而是选择自己搭建一套算法。所以这个系列文章先不用继续往下看了,之后如果我还使用这套算法,再进行相关补充。之前一直用的是autoware.universe版本,但是universe项目太大了,所需要的算力在280以上,而算力越高,工控机的价格就越高,所以我目前的这个项目无法使用。于是就得用ai版本了,这个版本旧,也不维护了,但是其内容没那么多,所需要的算力比较小,220就够了。
2025-06-18 10:06:46
965
原创 【一看就会】Autoware.ai规控部分源码解析【4】--waypoint_planner-另一种局部路径规划模块
局部路径规划有两种选择,上一篇文章中讲了lattice_planner模块,本篇文章讲waypoint_planner模块。这个既然也是局部路径的一种,其作用也和lattice_planner相同,都是先根据交通规则和障碍物插入减速点,然后再根据障碍物进行绕障路线规划。这个模块下面有三个节点:第一个节点是是使用混合A*算法进行绕障路径规划。第二和第三个节点是二选一的,其作用都是根据交通和障碍物进行速度规划。
2025-06-13 16:03:01
1466
原创 【一看就会】Autoware.ai规控部分源码解析【3】--lattice_planner-一种局部路径规划模块
在ai这个版本中,局部路径规划有两个模块,分别是lattice_planner模块和waypoint_planner模块,使用起来是二选一的。两个局部路径规划模块都是接收上一个模块输出的全局路径/base_waypoints和障碍物信息等,然后输出最终路径点/final_waypoints,再由后续的mpc等跟踪算法进行跟踪。这篇文章我们先来讲lattice_planner这个局部路径规划模块。
2025-06-13 16:02:48
1246
原创 【一看就会】Autoware.ai规控部分源码解析【二】--lane_planner--路段层规划
这里才引入了lanelets2地图和路段层面的交通规则,根据交通规则,比如红绿灯,停止线灯,调整路径点速度,然后进行输出。在这个模块中又有三个节点:lane_rule_lanelet2和lane_select和lane_stop这三个节点之间的流向是线性的:从way_planner发出的全局路径消息,先由lane_rule_lanelet2接收,然后传给lane_stop,然后lane_stop处理完之后,再传给lane_select,最有再由lane_select进行输出。
2025-06-10 11:57:57
563
原创 【一看就会】Autoware.ai规控部分源码解析【1】--way_planner--全局路径规划的第一个步骤
way_planner这个模块的作用,就是根据起点和终点,还有KML地图,生成从起点到终点的全局路径。这里简单补充一下KML地图的相关内容,KML(Keyhole Markup Language)是一种基于 XML 的文件格式,用于描述地理空间数据。我们根据其中的关键函数对way_planner进行这部分的讲解。
2025-06-10 11:57:44
465
原创 【一看就会】智驾系统中的底盘can协议讲解
给了你can协议表,你知道里面那些数据是什么意思吗?我来和你说。can协议转换是自动驾驶第一步,不难,但是很烦。
2025-06-05 17:10:26
655
适配镭神c16雷达,且在ctrl+c关闭程序时,可以将此时的地图保存成pcd文件,且有binary和ascii两种格式
2026-02-15
在ros2版本的liorf的基础上,修改了编译问题,使其在humble环境下可以成功编译
2026-02-12
这个是gnss采集的地块边界线原始数据点,其中的数据我做了加密处理,并不代表实际地域,供大家测试使用,我设置的是0积分
2026-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅