- 博客(49)
- 收藏
- 关注
原创 我是个什么产品
有三种杠杆,第一是劳动力杠杆,就是你雇佣别人,你承担了更大的风险,同时可能获得更大的收益。第三是他最推荐的,叫复制边际成本为0的产品杠杆,其实就是复制足够多的时候,成本约等于制作一个产品,这样的产品有很多,比如软考的老师录制一套课程,可以卖很多次,再比如一个游戏制作出来,也可以卖很多很多次。把自己当成一个产品经营,打出自己的名声,建立自己的口碑,这个观点似乎没有给出来什么真正的解决方案或者指南,但似乎暗示了这本书的另一个观点:在市场上,你就是一个产品,这是个事实,不论你有没有从内心里把自己当作一个产品。
2024-05-27 20:49:30 255
原创 原子操作和原子服务
原子操作指的是一些不可中断的最小操作,例如C++11 通过引入原子类型帮助开发者轻松实现原子操作,原子操作是平台相关的,原子类型能够实现原子操作是因为 C++11 对原子类型的操作进行了抽象,定义了统一的接口,并要求编译器产生平台相关的原子操作的具体实现。原子服务是原子化的服务,意思是将服务切分成原子化提供出去(也就是没法再切分了),更松耦合,更轻量级,占用资源更小等。对于原子服务的深层次理解,后续填坑。
2024-02-21 18:37:31 212
原创 无偏方差和有偏方差
这里理论上可以用自由度解释,即在计算方差时实际上是已知这个序列的均值的,这样这个序列的自由度就是n-1(感觉不太理解,自由度和求方差又有什么关系呢?总结的结论就是:在样本量较小的时候,无偏方差更符合实际的总体方差,当样本量较大时,无偏方差和有偏方差区别不大。所以用下图来理解吧,无偏方差在样本量比较小的时候计算方差就接近理论值,但有偏方差不是,有偏方差是从0逐渐升到理论值的。无偏方差和有偏方差的区别就是无偏方差下面的是n-1,而有偏方差就是我们常用的计算方差的公式,最后除以的是n。
2024-01-08 18:32:41 959
原创 互补滤波简述
短时间内用陀螺仪比较准确,以它为主;长时间用加速度计比较准确,这时候加大它的比重,这就是互补了,不过加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器就是根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号。互补滤波的原理是利用了角度计算中加速度计和陀螺仪的特点,即加速度计长时间更准确,陀螺仪短时间更准确,所以对加速度计做低通滤波,滤掉高频噪声,对陀螺仪做高通滤波,滤掉低频噪声,这两种滤波器是针对两种传感器特点而互补的,可以达到更好的效果。
2024-01-03 10:56:43 1192
原创 FIR和IIR
针对IMU数据,如果是做惯导计算,一般不需要对高采样率的原始数据做低通滤波,因为后续的机械编排算法中的积分环节本身就具有高频抑制作用,而且低通滤波会带来延迟,造成对惯导算法的精度影响,如果是用原始数据做其他应用,例如给神经网络做相似度识别,或直接使用数据做计算,例如用加速度找平,都需要先做低通滤波。所谓无限和有限就是有没有把之前滤波器的输出再纳入后面滤波器的输入,如果纳入了,就是无限(会造成无限时间内的影响),如果没纳入,就是有限。冲击信号是单位阶跃信号的倒数,即0无穷大,其他地方都是0,总体面积为1。
2024-01-03 10:43:52 642
原创 分支定界简述
,做了分支(先按大区域划分,因为是树模型,所以叫分支),定界(确定这个区域内的最优可能匹配度,这个方法叫贪心得分,是上面的计算匹配度的拓展,所谓贪心得分,就是计算这个激光点的得分时,给它往右下角拓展,用这个拓展后的区域里面的栅格的最大概率值去计算),然后抛弃不行的区域,在可能的区域里面继续划分。然后我们返回上一层还未来得及展开的C,计算C的贪心得分并让它与best_score比较,若best_score依旧最大,则不再考虑C,即不对其进行分层讨论。地图很大时,这种方法显然不现实,怎么优化匹配速度呢?
2023-12-27 11:55:11 399
原创 凸优化问题简述
严格来说,凸优化问题(convex optimization)的定义是目标函数是凸的,且可行域是凸的。在数学上,凸和非凸可以用来形容集合、函数、优化问题,对于集合,只要集合中任意两点连线上所在点仍然处于集合内,他就是凸集合。对于函数来说,最简单的XY坐标系上的一条曲线,凸和凹就很直观。简单来说,凸(Convex)优化是满足一定条件的最优化问题,凸优化问题更容易解决,非凸( Non-Convex)优化问题更难解决。,这个特性使凸优化问题在一定意义上更易于解决,而一般的非凸最优化问题相比之下更难解决。
2023-12-27 10:56:05 466
原创 算法学习浅谈
这个时候可以像背公式一样背算法,可以知其然不知其所以然。提供了一种思路,即学习算法应该重走一遍发明算法的路(也没这么严重,就是要从发明算法的思路去学习),很多算法书只给了一个最优解,但从来不告诉你它是怎么来的,这样即使你看懂了,过段时间也会忘记,因为一个新知识的引出和记忆最好是基于老知识,而不是凭空跳出来一个概念,说我们用这个概念就可以完美的解决问题,我表示深以为然。那么这个时候需要怎么学呢?
2023-12-26 15:43:03 340
原创 霍夫曼编码
Huffman创造性的将编码和二叉树结合了起来,二叉树完美的满足了上述的非前缀性质,假设有一个二叉树,它的每一个叶子节点都是一个字符,节点的值为字符的频率,根节点向左代表0,向右代表1,这样就能保证任意字符的编码不是另一个字符编码的前缀(因为从根节点到每个叶子节点的路径都是唯一的,叶子节点就是路径终点),那么如何使总的编码最短呢,也就是如何构造一个最优的二叉树(被称为霍夫曼树)呢?解码的时候同理,解码也需要得到霍夫曼树,然后遍历每个编码值,0往左,1往右,直到走到叶子节点,就得到了字符值。
2023-12-26 15:31:10 335
原创 自动驾驶中的“雷达”
自动驾驶中有好几种雷达,新手可能会混淆,这里统一介绍一下它们。首先,所有雷达的原理都是发射波,接收回波,并通过发射和接收的时间差以及波的速度计算距离。只不过发射的波不同,功能也不同。
2023-12-25 20:07:43 2651
原创 C++ override
作用:在成员函数声明或定义中, override 确保该函数为虚函数并覆写来自基类的虚函数。3.编译器可以给你验证 override 对应的方法名是否是你父类中所有的,如果没有则报错.。位置:函数调用运算符之后,函数体或纯虚函数标识 “= 0” 之前。2.告诉阅读你代码的人,这是方法的复写。1.可以当注释用,方便阅读。
2023-12-25 11:15:46 386
原创 点云、体素、面片
在计算机渲染中常用,是面片的集合,面片指的是三角形或其他多边形,网格模型(Mesh)通常使用多边形(例如三角形或四边形)形状的面来表示三维对象表面。这种“名边形网格”可能包含任意形状的多边形,而规则网格仅由单一类型的多边形组成。最常见的网格是完全由三角面片组成的三角形网格。体素网格就是3维的占据栅格地图,也就是把二维像素扩展到三维,体素网格是固定分辨率的,与之对应可变分辨率的网格叫八叉树地图(Octomap)点云是三维空间(xyz坐标)点的集合,当然激光雷达点云也可能包含其他的信息,例如强度。
2023-12-25 09:47:47 602
原创 C/C++宏中的#
C/C++中有#最常见的用法就是用在宏定义语句的开头(如#define、#ifdef等),用来标识一个宏定义语句。除此之外,#还有两个比较重要的用法:"#" 用来将标识符字符串化"##" 连接两个标识符。
2023-12-22 16:12:40 525
原创 C++中的explicit
google的c++规范中提到explicit的优点是可以避免不合时宜的类型变换,缺点无。所以google约定所有单参数的构造函数都必须是显示的,只有极少数情况下拷贝构造函数可以不声明称explicit。例如作为其他类的透明包装器的类。它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).由于无参数的构造函数和多参数的构造函数总是显示调用,这种情况在构造函数前加explicit无意义。
2023-12-22 14:42:49 520
原创 strlen
strlen()从字符串的开头位置依次往后面计数,直到遇到‘\0’停止,所计算的字符串大小为‘\0’以前的字符所计算的值,最终的字符串长度不包括‘\0’但strlen(&arr+1)的结果是随机值,因为&arr+1是数组后面第一个字节的地址。strlen(&arr)的结果也是6,因为&arr是整个数组的地址,也就是arr。strlen(*arr)无法输出结果,因为*arr是数组首个元素的值,不是地址。那么strlen(arr)的结果就是6。
2023-12-22 14:00:26 450
原创 C++中的RAII
针对第二点,也可以通过try catch的方式,如果执行产生异常,那就在catch里去释放,但这样对分配单个资源有效,如果是分配多个资源,在catch里释放时就要判断每个资源是否分配成功,比较麻烦,另外如果在某个函数调用里去分配资源,在分配资源的时候分配失败了,回到了上层函数,那么就无法正常释放资源(在函数里定义的指针和分配的资源都是局部对象)。因此,就有了最简单的智能指针的定义,首先它是一个模板类,里面有一个类的指针,然后需要重载*和->运算符,返回引用和指针。
2023-12-20 11:24:58 376
原创 C++的函数包装模板std::function
可以存储,复制和调用任何可调用的目标 :包括函数,lambda表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针。std::function对象可被拷贝和转移,并且可以使用指定的调用特征来直接调用目标元素。当std::function对象未包裹任何实际的可调用元素,调用该std::function对象将抛出std::bad_function_call异常。std::function是一个。
2023-12-15 18:27:13 398
原创 lidar slam vs visual slam
的场景lidar不行,例如隧道,而视觉SLAM对特征敏感,特征缺失(lidar对结构敏感,结构缺失(
2023-12-13 19:44:30 403
原创 加班、效率和价值
加班的不可持续在于两点,第一点是对身体和精神的损害,降低内在动力,把本身有趣的事情变的苦大仇深,变成任务,变成差事;第二点是对创造性和产出质量的戕害,当你加班时,你会习惯性的把用蛮力解决问题作为自己的解决方案,而更少的去思考如何提高效率,如何更聪明、更快速、更高质量的完成工作。效率不等于单位时间单位人干的活,而是等于单位时间单位人产出的价值,衡量工作量的难度很大,而如何选择工作重点,挖掘工作价值难度更大。这些工作都是什么性质的?是支持型的还是产出型的,是劳动密集型的还是知识密集型的?
2023-12-12 20:10:21 362
原创 随便写点什么
到底是不是机器人呢,我这里为了避免字数的影响,控制一下变量,把字数水到三百字左右,这样才有意义。周末两天没更新,似乎好多东西都忘了,倦怠就像空气,我就像气球,工作中的价值感和成就感越来越低。才发现三百字这么难水。
2023-12-11 10:15:25 391 1
原创 产品研发流程浅析
POC, Proof of Concept,即概念验证,在这阶段,需要以尽可能低的成本验证某个概念,这个所谓“概念”可以很广泛,可以是某项技术的可行性,也可以是产品的市场逻辑。和某些硬性指标,对外观和实现的形式不做任何要求,例如3D打印的外壳,飞线等等再EVT阶段都比较常见,在迭代的工程中完善功能。,会开始小批量生产,产品形态已经接近最终产品,目的是验证大批量生产的能力和流程,优化生产效率。,包括外观设计,功能设计、材料设计等等,并完成必要的认证,满足所有必要的标准。
2023-12-08 10:23:23 518
原创 CAN总线和CAN协议
CANoe”全称叫CAN open environment,是德国Vector公司为汽车总线的开发而开发的一款总线开发环境,就是一个软件,以及其连接CAN和电脑的硬件。CAN总线的形式有两种,一种是闭环高速CAN,总线长度 ≤ 40米,一种是开环低速CAN,总线长度可达1000米。CAN总线上可以挂载多个设备,他们通过使CAN总线的电压发生变化与其他设备通信,因此需要专门的设备。CAN总线协议当然就是CAN总线上的通信协议,两种CAN总线的通信协议也不同。CAN总线的长度越长,通信速度越低。
2023-12-07 18:14:23 507
原创 BEV的一些概念
BEV,BirdEye View,即鸟瞰图,通过6V前侧后视,或4V环视,将图像拼接成从上向下的俯视图,从而可以非常直观的看到汽车周围的环境。当然激光雷达点云同样可以表示为BEV,而且点云处理的操作会更方便。现在很多车上已经搭载了BEV功能,可能叫做360度全景影像,或AVM(around view monitoring),全景影像监测,用来倒车时观察周围环境。BEV主要步骤可以简单概括为标定、去畸变和拼接,如果是3D情况还会将BEV图像投影到一个碗状的模型上,这样就可以拖动观察。
2023-12-06 18:04:42 790
原创 ASPICE-汽车软件开发能力评级
(引入统计学知识和技术,对项目相关各项数据进行统计和分析,并将之运用于未来的项目管理之中,达到对项目结果的预测,并根据预测结果对项目进行实时的调整,确保达成项目目标。(代表不仅各项目能够管理得很好,而且能够有效的从历史项目中积累经验和教训,形成公司的知识资产和标准工作流程,用于对今后项目的参考和指导以及公司管理的持续改善。(代表企业能够基于商业目标的需要,主动的对过程进行调整,对变革管理有很强的管理能力,能够基于对过程的量化分析设定明确有效的过程改进目标,并能对过程改进结果进行有效的量化监控和分析。
2023-12-05 19:55:39 711
原创 自动驾驶中的大模型
按我的理解,自动驾驶中的大模型就是让大模型接收相机拍摄到的图像,并直接输出车控指令,也就是油门刹车方向盘转角。听起来对于聪明的大模型这似乎不是一件难事,难点在哪里呢?实时性吗,必须部署在车上吗?如果是文字型大模型,似乎要先把图像翻译成语言再输入。先挖坑,后面慢慢补充吧~
2023-12-04 22:47:47 471
原创 INS中的Borzt方程
一般在使用时(低精度惯导一般都不会考虑不可交换性误差,都用不到Borzt方程)不会用这种方式,而是使用简化形式(在旋转矢量为小量时,将右边通过泰勒展开化简)INS中著名的Borzt方程其实就是等效旋转矢量的微分方程。方程等式右边两项补偿了角速度向量的方向变化。或将右边第三项直接忽略(二阶小量)。这张图非常好,显示了。
2023-12-01 10:14:12 388
原创 g2o中的HyperGraph(超图)
通过自定义顶点和边,事实上,只要一个优化问题能够表达成图,那么就可以用g2o去求解它。常见的,比如bundle adjustment,ICP,数据拟合,都可以用g2o来做。超图可以用矩阵表示(用1、0表示,行为顶点,列为边),也可以将超变表示为顶点,从而得到两者的关联图(incidence graph)。就经验而言,solvers给人的感觉是大同小异,而 types 的选取,则是 g2o 用户主要关心的内容。超图能够表达的信息要大于普通图(你可以试一下用普通图表示上面的超图,显然这是不可能的)。
2023-11-29 18:18:11 448
原创 IMU的零偏稳定性/零偏不稳定性
但是要注意,零偏的常值部分(所谓常值误差)和零偏不稳定性或计算与评价的时间尺度有关,在某一个时间尺度的常值误差,把时间尺度放大可能也会发生变化,可能就不再是常值误差,而是稳定性的一部分,反之亦然。b)Allan方差给出的零偏不稳定性:采集足够长时间的静态数据(一般大于10小时,越高等级的器件所需时间越长),画Allan方差曲线,取其谷底值。a)我国的国军标定义的零偏不稳定性:采集几个小时的静态数据,每10秒或100秒求平均(以便抑制器件白噪声的影响),然后统计这些平均值的标准差。武大多源智能导航实验室的。
2023-11-28 20:12:05 2179
原创 导航中几种获取航向的方式
即通过陀螺敏感地球自转角速度获得,这个方法在前面介绍初始化的文章中提到过,需要处于静止情况下,而且对陀螺灵敏度要求较高(地球自转角速度约15度每小时,一般的MEMS甚至可以直接忽略地球自转角速度的影响),且越接近地球极点,精度越差(地球自转角速度的投影越小)。通过GNSS获取航向也分两种,一种需要处于移动中,且速度不能太低,通过速度、位置获得航向,RMC语句中即包含了速度、航向信息。第二种需要两个天线,即常见的双RTK方案,通过两者的位置可以获取绝对航向。
2023-11-27 19:02:07 887
原创 AVP的技术路线
需要停车场做适配,即停车场内安装设备,将可用的车位信息和停车场内其他信息如障碍物等,发送给车辆,车辆将场端给定的车位作为终点,规划好行驶路径,直接开到终点。(单车智能方案),即所有的传感器和算法都跑在车上,不依赖停车场做适配;单车智能方案可以避免对停车场进行大规模改造,适用于各类停车场;技术方向上更接近行车L4自动驾驶场景,具备场景迁移能力。利益相关方仅车企与用户,盈利模式较为清晰;目前,AVP有两种主流技术路线,一种是。
2023-11-25 19:57:31 512
原创 对自动驾驶中间件的认识
从功能上来讲,中间件没有具体的定义,它是某些功能的抽象,为了方便适配不同的上下层。对于AUTOSAR等自动驾驶中间件最主要的作用是:对下,它能够去适配不同的OS内核和架构;对上,它能够提供一个统一的标准接口,负责各类应用软件模块之间的通信以及对底层系统资源的调度。也就是,为上层屏蔽底层的复杂性。
2023-11-24 18:09:35 1502 1
原创 导远570D的核心指标
全温零偏,就是指陀螺零偏在其额定工作温度范围内相对于室温零偏值的变化量,一般MEMS会给温度敏感系数,后面会带一个温度的单位,例如0.01 deg/s/℃,这里给的应该是做了温补之后的残差。1ppm就代表如果基线距离每增加1公里,增加1mm(百万分之一)的定位误差。位置(RMS): 1.5m, 2cm+1ppm(RTK)零偏稳定性(10秒平滑):小于等于10deg/h。航向(RMS):0.2deg(基线1m)横滚/俯仰(1σ): 0.1deg。零偏不稳定性(1σ):4deg/h。量程:250deg/s。
2023-11-23 20:31:03 755
原创 INS中的可交换性条件
在求解方向余弦阵(DCM)微分方程的时候,引入了可交换性条件,即只有在满足可交换性条件时,DCM微分方程才有解析解。可交换性条件的物理含义是在旋转过程中角速度方向不变,也就是做定轴转动,这在一般的运动中是不满足的。一个解决方法是,提高采样率,在足够小的时间尺度内,带来的误差/精度损失会更小。
2023-11-22 19:39:54 385
原创 积分饱和的解决方法
2、back_calculation,反馈抑制饱和,也就是将超过输出限幅的部分乘以一个抗饱和积分系数(这个系数可以和Ki取值相同)再负反馈到积分控制器;3、积分分离,系统误差较大时取消积分环节,系统误差较小时引入积分环节,也就是判断误差大小,手动设置积分比例系数;积分饱和就是积分控制器中的积分项累积过大导致系统产生了较大的超调,且可能会对系统的灵敏度产生负面影响。1、最简单的,设置积分值的上下限;
2023-11-21 20:56:02 1135
原创 欧拉角中一些容易混淆的概念
可以说是包含关系,欧拉角和坐标系的旋转方式有关,ZYX、ZXZ等等旋转方式不同(一共有3*2*2共12种,这里不考虑内外旋),欧拉角的含义也不同,但滚转-俯仰-偏航(roll-pitch-yaw)一般是导航使用的,也可以算作一种欧拉角(也就是N系为NED,b系为FRD,旋转方式为ZYX时的欧拉角),这三个角的定义方式只与物理相关,也就是其他定义和旋转方式也可以说这三种角,但此时和欧拉角不等价。导航姿态角的定义方式一般为,抬头俯仰角为正,从北往东偏偏航为正,右翼下压滚转为正。
2023-11-20 18:20:38 143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人