汽车工程师转行AI机器人

在我坚定要从智驾行业转行到机器人领域时,我就着手开始规划我的学习计划,从而在最短时间补齐知识欠缺,做到至少能够拿到面试的级别。大约半年时间确实走了不少弯路浪费了不少时间,同时也学习到了很多知识了解到了很多信息,在此一并记录下来,希望对有同样想法的朋友有所帮助。 从一开始补齐AI但是没想好换工作做什么,到最终拿到Offer,一共是10个月的时间,至于坚定去学习机器人大约是最后的三四个月。大多数时候很难一次性想明白要做什么以及搞清楚该怎么做,我自己的心得是先动手先开始,大方向还是比较容易看到的,那就先往那边去走。对于我来说一开始还是计划在智驾领域深耕的,当时想切入AI车端部署,于是我补了很多大模型以及VLA相关的知识。 学习教程的话我是看的李沐的《动手学深度学习》,非常的基础并且深入浅出,适合之前完全没有接触过机器学习、深度学习、大模型的同学。我是官网在线学习的,比起他的书,网站上新增了关于大模型关于RAG相关的内容,在经典深度学习的知识之外包含了Transformer、BERT、Embedding等章节内容,非常贴近当前的技术热点。非常建议转行AI的同学从这里开始学起:https://zh-v2.d2l.ai/。 我工作间隙用了四五个月时间粗浅地看完。讲真如果非常扎实学一遍的话,还是需要不少时间的,对于工作党更是很大的挑战。可如果之前没接触过深度学习算法,完整跟着学习一遍打基础的这个过程是逃不掉的,不然到了后边大模型相关的学习过程中会发现很多提到的名词不知道什么意思不知道什么作用,大模型本质还是深度学习的延伸,知识点是递进的。 对大模型有了初步了解后立马就找个项目开始实战。我当时的资源非常有限,只有一台配备NVIDIA GeForce RTX 5090显卡的服务器,和一辆配备Jetson Nano算力的四轮小车,想要训练部署跑通一个完整大模型资源非常受限。前期调研了很多算法例如FSDrive、Tiny VLA、OpenDriveVLA、SmolVLA、DriveVLA-W0、Pi0.5、AutoVLA、Orion VLA、SimLingo、UniAD等,最终结合模型大小、社区活跃度以及配套工具成熟度我们选择了SmolVLA作为我们学习的主论文。后来在面试时候了解到当时的评估还是挺明智的,SmolVLA在很多机器人公司有着大量的应用,同时由于SmolVLA基于HuggingFace的LeRobot框架,而后者也在一些初创机器人公司用得很广,相当于一举多得。 在学习基于LeRobot的SmolVLA同时,我还学习了一些ROS2的基础内容,这在机器人领域也是绕不过的基础知识,官网的Tutorial是最好的学习资料。在后来的四轮小车软件架构设计时候也充分利用了ROS2框架,用于对ROS2学习内容的一个真机锻炼。小车架构层面我们进行了如下设计,尽量贴近真实项目,做到麻雀虽小五脏俱全。最终的代码实现基本上就是按照如下框架进行的,仓库地址在此:https://github.com/shuspieler/smol_rugv/。 当SmolVLA在服务器上调通,以及找了一些公开的数据进行预训练后,我们安排了使用小车进行真实数据采集以及后训练和微调的过程。整体来说SmolVLA模型不大,在我们服务器上大约几个小时就能够全量训练完毕。可我们是学习的目的所以在真机采集数据后训练时候使用了LoRA,将训练时长压缩到了1小时,最终我们实现了一个极简大模型从预训练到真机部署的全流程。我对此的理解就是大模型时代软件开发的新范式,像是敲通了第一行Hello World!还是很有成就感的。 并且在后来面试过程中也感受到,这个经历对于我找工作有着至关重要的帮助,至少50%的面试机会或者说offer是这个小项目带给我的。虽然看似简单,但是在转行机器人的这部分人群中,领先八成以上的竞争者压力不大的。 到了年底我开始回顾LeetCode数据结构与算法。虽说当前社招对于刷题不是硬性要求,我一次都没遇到过说先给一个链接做个题的情况,但是在面试的时候还是高概率会问到算法基础的。我在本次求职遇到过口头问的和让我展示屏幕随便开一个IDE写一道题的。当然多数时候不需要真的能够真机运行通过,更多的时候是看思路和简单的代码规范。 虽然现在AI编程真是很强大,但是数据结构与算法作为程序员基本功是非常非常必要的。可能长时间不写有些不熟练,但是不能说压根不知道没见过不了解。等到了入职后基本也不需要亲自写这些算法,但是其中的思想会内化到程序员的素养中,对于之后软件的设计、Bug的调试以及性能的优化,这些内在并且底层的原理是到时候拉开差距的源头。我当时整体过了一遍LeetCode基础知识后对于其中排序章节特别有感触还写了一篇随笔:LeetCode排序章:算法与生活的共鸣。 复习完了LeetCode后我又开始B站了《黑马程序员大模型RAG与Agent智能体项目实战教程,基于主流的LangChain技术从大模型提示词到实战项目》这门课程的学习。这个与机器人开发其实关系不大,我学这门课程主要是为了更加深入了解当前火爆的大模型Agent开发以及RAG开发到底是怎么一回事。 经过系统性的学习我感觉收获非常大,对我认知的影响可以用震撼形容。深入了解后我把大模型Agent的开发类比成Java后端开发,RAG类比之前数据库设计——即我们要实现相同的软件目标,之前需要使用Java设计数据结构和算法接口,而现在我们要实现的软件目标没变,但是使用的是大模型Agent以及MCP、Skills等技术。我看到了由于大模型的到来,原来的开发需求很多可能会被Agent重新定义一遍。曾经的以Java为首的软件开发撑起了互联网、移动互联网黄金十年,现在大模型Agent很有可能会是这个产业的二次升级,就像是电气时代取代了蒸汽时代,需求没有变即人类生产需要动力,但是内核和效率有了天翻地覆的变化。 大约在今年三月我确定了要冲一把机器人领域,于是就全力去搞我的SmolVLA小车项目了,其他的学习内容暂且放一放。同时我开始了解机器人领域对于人才的需求,和多个猎头以及面试官交流后我大致摸清了机器人行业当前分工主要有哪些。不管大厂小厂,共同点大致可以分为: 机械设计:即画图设计机械臂等结构的工程师; 小脑软件开发:大致可以理解成单片机开发,主要用于对传感器执行器进行驱动设计以及对其控制进行封装。常见技术栈是STM32、Keil、C语言等; 大脑中间件开发:这里大厂小厂有了一些区分,小厂的话多数是基于开源框架进行二次开发,比如是在ROS2、OpenARM、OpenPilot等上边定制开发。而大厂的话会研发自己的中间件,用于替代上述提到的开源框架; 大脑大模型算法:这个就是在无数场合看到的最火也是最稀缺的算法开发岗,主要是做适配自己项目的模型设计、预训练、后训练、微调等内容,这块主要是以博士以及学术研发人员为主,可以类比于互联网的大模型算法岗; 大脑工程开发:即将上边算法人员设计好的模型部署到真机边缘端,并且调优到最佳性能。这个岗位需要既懂模型优化(量化、剪枝、TensorRT)又懂嵌入式系统(ROS、实时性、硬件约束),是算法和硬件之间的桥梁。可以类比为互联网公司的ML Engineer或MLOps,但要多一块嵌入式系统的技能树; 技术型产品岗:与客户沟通发现痛点、搜集市场需求,阅读并复现论文算法以把握技术动向,与开发交流实现技术落地和需求实现; 产品型产品岗:类似于传统互联网的产品岗,或者说大模型应用的产品岗,文科生居多,这个职位可能在较大的机器人公司才会有,创业公司可能还没到这个阶段; 机器人测试岗:又可区分为软件测试和硬件测试部分,同上可能只有较大的公司才会有这个岗,初创公司大部分由开发兼职就干了; 融资/战略岗:负责公司融资、投资人关系、政府关系等,早期公司通常由创始人亲自做,成长期可能设专门岗位。这部分对人的资源积累要求极高,不是靠短期学习能补齐的。 当对岗位也有了一定了解后,结合着自己所擅长的能力或者想发展的方向,就可以针对性去学习欠缺的知识了。当对岗位拆分够细,就会发现现有工作的知识很多是可以迁移过去继续使用的——假设之前是嵌入式开发工程师,那么去做机器人小脑开发非常的对口;假如之前是智驾里边做感知决策或者说端到端的,那么可以冲一把机器人的大脑大模型算法岗;如果是之前做传统开发的,那么去挑战一下大脑工程开发应该也是OK的。还有如果是之前做TPM或者智驾的系统工程师,去尝试下机器人的技术型产品岗,个人感觉还是挺有意思的,是一个需要综合能力比较强的岗位。 记录到这里终于算是告一段落了,希望我的经历能够帮助到你,也希望你能够留下你的反思和感悟啊。智驾转行机器人这个团体不大,之前是同行之后可能也还是同行,希望我们之后能够有机会相互交流,共同进步啊。

汽车工程师转行AI机器人 Read More »

为什么我从智驾转行到了机器人

和部门同事相约一起跳槽找工作,当我说我要转行机器人的时候,我是能够看到他们脸上写满的惊讶。 我目前在全球某头部汽车OEM工作,主要做智驾相关的职位,自从硕士毕业起入职这家公司,至今已在这7年了。去年下半年有了跳槽出去看看的想法,从一开始完全想不明白接下来做点什么,到现在坚定地去到机器人领域并且拿到Offer,我想记录一下我的转行心路历程。 在一开始考虑跳槽时候是想着继续在汽车电子尤其智驾领域深耕的,我查阅了很多同行的分享以及剖析了自己过往的工作内容,从一团迷雾中大致看清之后不能继续停留在FO的阶段了,要想办法往系统架构或者软件架构方向去走,即要不向上攀要不就是向下钻,不然随着时间的推移自己没有太多护城河很容易被淘汰。我还专门写了一篇文档用来记录我对过往工作内容的剖析: 我所理解的系统工程师。 在个人摸索之外我也积极广泛与身边人交流,听一听他们的建议,多个前辈以及比较优秀的同事都提到了拥抱AI的重要性,总结起来就是不管做的什么工作内容都要使劲努力往AI方向上靠。对此建议我也是深表同意,我和我的跳槽小伙伴对于怎么切入AI也是讨论了好久,期间我们配置了一台工作站用作跑模型的环境,还一起学习了李沐的网课用作对大模型有一个整体的了解,最后我们还计划移植一个VLA小模型到一个四轮小车上,用作对于模型落地的学习。当时我们得出的结论是智驾模型算法开发基本没戏,想都不用想,微调和强化训练基本上对我们大门也是关的,这个工种的挖人对象是其他领域深耕微调和强化学习的人,而不是像我们传统汽车电子功能开发的人员。唯一可能有机会的切入点是模型部署这一块,再好的智驾算法在落地时也不能车上放一个工作站或者说是将模型放在云端。只要是智驾一定需要跑在本地,并且与车辆其他传感器等车身电子器件有紧密链接,并且安全性可靠性也是车规级的高要求。在这些需求下我们看到一丝机会,于是计划并努力从这里切入。在大约11月的时候我们有了差不多的基础知识了解后制定了一个VLA小车学习时间线,后边基本上推进效果和预估差不多。 在学习了两三个月后,了解到即使是从算法上车部署这个角度切入当前的智驾也依然难度重重,原因无外乎还是那两个方面:智驾的安全可靠性要求以及极高的复杂度;淘汰赛阶段以及高投入门槛导致市面上其实能选的智驾机会并不多,来来回回其实就那么几家,两只手数的过来,市面上已经完全没有了初创公司。而同时在了解了一些机器人的信息后发现这和七八年前的智驾简直好像啊,有一部分Demo已经可以演示,但是离真正大规模还差临门一脚。另外技术方案还没完全收敛,当前依旧在百花齐放的状态,同时新的架构新的方法论还在往出来冒,25年以及26年依旧不少创业公司成立,很多学术派、智驾派都来到了热闹的机器人行业,风投金额在26年还在强势增长,太多的资本想分一杯机器人量产的羹。和多个猎头沟通了解到,虽然现在机器人行业的人才已经不像24年25年那样极度稀缺非常喜欢智驾跳过去的人,可这个门依旧还开着,在26年想从智驾过去还是有机会。比起处于淘汰赛已经是红海的智驾,机器人在26年依旧是机会蓝海。我问了多个猎头为啥今年26年机器人有些不太乐意要智驾的人了?他们说一方面是机器人行业增长了五六年已经有培养了不少自己领域的专家,同时对口的大学毕业生也开始批量送到就业市场。另外就是很多初创机器人公司察觉到搞智驾的人普遍流程负担重想的考虑的太复杂,不太符合初创公司敏捷灵活的节奏,所以很多公司开始要么高薪挖机器人行业的人,要不就是招对口应届生。 于是我就想着,学习的知识都差不多,与其在智驾红海拼命挣扎,为何不去到处于早期还是一片蓝海的机器人行业呢?年初有了这个念头后,看了看招聘软件上边的岗位,区别于智驾的翻来覆去就那几个公司,机器人可以说百花齐放,从上市公司到估值几百亿的独角兽到各有特色的初创,提供的工作机会比智驾真是多很多。看了看职位要求,除了几个头部公司现在开始掐尖,多数中厂和小厂的JD提到的个人能力需求还是很务实的,虽然很多由于我不是这个行业了解不深,但是我能判断出来这些要求并不难,学习一段时间就能补齐。于是我就有了一个大胆的想法,努力学习一段时间投一投机器人试一下! 我原先的计划是从年初学习到5月,然后5月使劲投一个月的机器人岗位,在6月前全力以赴只考虑机器人,如果实在不行的话,到了6月再看智驾相关的机会。期间我学习了ROS,了解了大模型应用开发,熟悉了机器人开发主要的工种和其中的能力需求,然后微调自己的学习内容,在4月底到5月底一个月时间一共投了五六十个公司,其中9家给了面试,进入2面的有4个,拿到offer是2个。按照55个投递公司来算的话,面试率是16.4%,2面及以上是7.3%,offer率是3.6%,整体来说自动驾驶转行机器人还有窗口的,我用个人新鲜的经历验证了这一点,但是明显也能感觉到窗口在逐渐关闭,不少公司由于没有机器人基础连面试都不给,有些给了面试也还是由于没有较深的经验而止步一面。 今天是6月24日,天气晴朗小风一吹温度非常的舒适。现在坐在城市图书馆潞云筑读书室记录我的转行日记。当下旧的工作已经告一段落,新的挑战还没开始,中间的这段时间有点像高考完的黄金暑假,即使多年后的某个瞬间回忆起来也还是无尽的满足感,我想对于最近一周的状态应该也会类似。我的转行动机差不多就记录这么多了,希望对大家有所帮助,也祝福各位朋友能够如愿以偿啊!

为什么我从智驾转行到了机器人 Read More »

大众汽车对于我的分量

还有十几天就要入职新公司了,整理当前公司材料的时候,突然意识到我竟然在这家公司待了七年。科技行业以跳槽和不稳定著称,这放在七年前刚毕业的我身上,是完全想不到的。 回想硕士毕业那会儿,由于没有非常对口的实习,我在汽车电子这个行业求职其实非常费劲,面试率很低。最终极限offer二选一:一家初创公司的核心职位,另一个是大众集团旗下子公司的螺丝钉岗位。纠结了很久。考虑到我并没有在德国长居的打算,职业规划是在德国工作两三年然后回国,去初创的话回国后机会应该还很多,但体验一下大众集团德国总部的氛围,错过了就很难再有第二次机会。于是选择了后者。 入职没多久,赶上集团对汽车软件大刀阔斧的改革,原子公司升级成了大众汽车电子公司的全球总部。公司的努力让我真的到了总部工作,同时有了更大的空间来了解整个汽车电子电器的研发过程。现在回想,关键时刻有时候确实需要一点运气。 在德国那几年,公司给了我很体面的生活。不错的薪水、永久合同、德国福利体系,加上一年35天假期,平均每年两趟出国旅行,让我体验了一把腐朽的资本主义对底层劳动人民的”压迫”。结合在德国读书的经历,我可以随时申请永居或者入籍,选择权在我。大众给了我在德国工作生活平衡、非常体面的生活。 回国也是沾了公司不少光。21、22年疫情最猛的时候,我一方面想回国,另一方面想换个方向,同时叠加封控,几件事凑在一起,难上加难。后来想办法换到了中国分公司,还去了想去的部门,真的很开心。 在国内的WLB生活让我有机会体验北京,期间有幸认识了现在的媳妇。不错的待遇让我能够结婚、生娃,孩子现在已经开始学走路了。假设换到其他公司,由于工作忙碌我可能无法认识媳妇,也可能因为太忙而没精力生娃。 现在七年过去,我要离开了。回想起来满满的收获和感恩。毕业后给我入行的机会,给了我在北京工作生活扎根的物质条件和勇气。当前生活中很多东西都是大众带给我的,真的很感激。

大众汽车对于我的分量 Read More »

北京网约车资格考试

最近工作比较轻松,于是参加了一个很有意思的考试:网络预约出租汽车驾驶员考试资格认定,主要目的是为了来年作为进修用作个人所得税退税,一天时间的准备可以退回来几百元,就当作是做了一个兼职。这个考试的流程不复杂但是内容却挺有意思,尤其是区域科目几乎就是对于北京风俗地理人情最精华点的总结,我在北京生活了四年了很多我却完全不知道,或者有些隐约知道但是了解不清楚。趁着这次考试把一些有趣的点记录一下,就当作对于这个城市做一个深入了解吧,下边是我备考时候节选出来的题目: 雍和宫位于东城区(二)环雍和宫桥和小街桥之间南侧。 天坛公园位于南二环北侧,东侧有著名的(红桥市场)。 从东单路口向北至灯市口途经(协和医院)。 故宫太和殿,俗称(金銮殿)在故宫的中心部位,是故宫三大殿之一,是举行盛大典礼的地方。 北京菜市口百货股份有限公司(菜百总店)位于广安门(内)大街306号。 慕田峪长城,位于北京市(怀柔)区渤海镇慕田峪村,距北京城区73公里,享有”万里长城,慕田峪独秀”的美誉。 (宣武医院)位于广安门内大街和长椿街交汇处。 北京朝阳站位于姚家园路(北)侧。 北京丰台站位于丰台区(正阳大街)4号。 在南三环从分钟寺桥到洋桥要经过(刘家窑桥)。 十渡风景区位于北京市(房山)区西南,有着中国北方唯一一处大规模喀斯特岩溶的地貌。 京剧是地地道道的中国国粹,形成于北京,京剧已有近(200)年的历史。 中国中医科学院广安门医院位于二环广安门桥(东北)侧。 中国石油大厦位于二环( 东直门)桥西北角。 位于二环路沿线的公园:龙潭湖公园 、大观园 、月坛公园。 驴打滚是北京传统小吃之一,以其独特的制作工艺和口感而著称。以(糯米)、红糖和黄豆粉为主要原料,经过蒸制、裹糖、滚黄豆粉等步骤制成。 相声,一种民间说唱曲艺。它以说,学,(逗),唱为形式。 中华人民共和国水利部位于西城区(白广路)二条2号。 中日友好医院位于(朝阳)区樱花东街。 中国棋院位于(东城区)天坛东路80号。 北京市的市树为(国槐)和侧柏。 十三陵景区位于北京(昌平)区北部天寿山麓。 两广大街是指(广安门至广渠门 )之间直线距离的路段。 解放军总医院位于(五棵松桥东南侧)。 外交部位于二环路朝阳门桥(东南)侧。 三环路(太阳宫)桥可直接上京承高速。 北京市花是:月季花和(菊花)。 中国传媒大学位于朝阳区(定福庄)东街1号。 小说《骆驼祥子》的作者是(老舍)。 金融街在西二环路的(东)侧。 S3301京津高速起点是北京市五环路(化工桥)。 北京四合院是由东、西、(南)、北四面房子围合起来形成的内院式住宅。 牛街位于(西城)区,北起广安门内大街,南至南横街。 “北京榜样·京城的哥”文明品牌是”北京榜样”主题活动的子品牌,从(2020)年开始启动,每年度命名一批”北京榜样·京城的哥”。 中华世纪坛坐落在复兴路上,它的东侧紧邻(军事博物馆)。 景山公园位于北京市西城区景山西街44号,坐落在北京内城南北中轴线上,是俯瞰(故宫)全景与北京中轴线的最佳观赏区。 故宫是世界上现存规模最大、保存最为完整的(木制)结构古建筑群之一。 红螺寺位于(怀柔)区怀柔镇卢庄村,是中国北方佛教发祥地和最大的佛教丛林,有”南有普陀,北有红螺”之说。 北京南站位于南二环路(开阳桥)的东南方向。 平安国际金融中心位于东三环(燕莎桥)西北角。 北京饭店在(东长安街)北侧。 国家速滑馆又称为”冰丝带”,位于北京市朝阳区近奥林匹克公园林萃路2号。 国家发展和改革委员会位于三里河的月坛南侧。 北京协和医院是一所位于北京市东城区,集医疗、科研、教学为一体的大型综合医院。北京协和医院在中国乃至世界享有盛名。北京协和医院是中国最早承担外宾医疗任务的单位,医院专门设立外宾和高干门诊部,开设专门的高干、外宾、特需病区。 中国铁道博物馆,由正阳门展馆、东郊展馆、詹天佑纪念馆三个馆组成,是中国国家级专业铁路博物馆。 外交部位于朝外大街南侧。 北京市第四中学,是北京市首批示范性普通高中,高中部位于:北京市西城区西黄城根北街甲2号;初中部位于:北京市地安门西大街教场胡同4号。 北京汽车博物馆位于北京市丰台区南四环西路126号,是中国国家公益性汽车主题博物馆。 北京出租汽车车漆是双色的,其中中间的颜色叫”尊黄”。 人民艺术家老舍原名舒庆春,是北京满族人。

北京网约车资格考试 Read More »

LeetCode排序章:算法与生活的共鸣

(这份随想记录于2026.02.23,最近在整理学习笔记时再次感觉枯燥的数据结构与算法竟然也能讲解这么有意义,于是二次整理准备发出来) 新年假期将数据结构与算法的主体内容复习完毕,之后每天做几题保持手感,便不再投入过多精力于LeetCode——终于,真正开始AI与机器人领域的学习了。 最后几天读到《排序算法》章末,颇受触动。这段文字将数学原理讲得通透,又不失幽默,且意涵早已超越算法本身,引人反观生活。 二分思想部分,”一尺之捶,日取其半,logn世竭”的化用让我想到:许多被奉为人生哲理的大道理,在数学家眼中不过是可推导的逻辑,并无神秘可言。这让那些听起来格外抚慰人心的华语骤然褪色——一切皆有章法。我想,数学家的孤独或许正源于此:身心灵的慰藉在此处失效,唯有逻辑冰冷而诚实地运转。 “治”的过程被比作《活着》里的那句话:”小鸡长大了就变成了鹅,鹅长大了,就变成了羊,羊再长大了,就变成了牛……”初读只觉无厘头,下一秒却像被什么戳中了——这不就是文学版的量变引起质变吗?所有的成长都不会浪费,只要持续积累,终会有一个奇点让过往悉数兑现。 后文的猴子排序听着荒诞,却真有严谨的数学家亲自实践。一本正经地做无厘头的事,严肃得好玩。至于睡眠排序,读完后我想:若我是老板,手下员工交出这等算法,我必深吸一口气告诉自己莫激动——问题终究是能解决的,无非慢些。员工既是我招的,他们能想出如此”优秀”的算法,也有我的一份”功劳”。 最后的奇迹排序像是全章的升华。时间复杂度为正无穷的算法,竟能被写进教材,其价值已上升到人生哲理的高度。作者总结:若只是等待、什么也不做,终将一事无成。但我觉得这解读稍嫌狭隘。正如猴子排序——等待够久,说不定宇宙射线就让内存bit位翻转、数据自愈了呢?真正上过班的人或许有类似体验:一个棘手的难题搁在那儿,过段时间竟自然而然消解了,或问题本身就不复存在了。这难道不是奇迹算法的某种应用?甚至,难题放久了,工作没了,或公司没了,算不算某种维度的”解决”? 当然,最后这部分纯属开脑洞,当不得真。遇到问题,最优解仍是正面应对——就像我现在想换工作,虽然有了AI,虽然之后大部分是Vibe Coding,但是作为基本功测试必过在线测评,既然绕不开刷题,便坦然拥抱,将能做的事做到最好。与君共勉。 (排序算法章节内容节选,原文链接见文末) 归并排序: 总结起来,归并排序分成两步,一是拆分数组,二是合并数组,它是分治思想的典型应用。分治的意思是“分而治之”,分的时候体现了二分的思想,“一尺之棰,日取其半,logn 世竭”,治是一个滚雪球的过程,将 1 个数字组成的有序数组合并成一个包含 2 个数字的有序数组,再将 2 个数字组成的有序数组合并成包含 4 个数字的有序数组…如《活着》一书中的经典名句:“小鸡长大了就变成了鹅;鹅长大了,就变成了羊;羊再长大了,就变成了牛…” 猴子排序: 1913 年,法国数学家埃米尔·博雷尔出版了一本谈概率的书籍,其中介绍了「打字的猴子」概念,引发了「无限猴子定理」这个有趣的实验构想。 无限猴子定理:让一只猴子在打字机上随机地按键,当按键时间达到无穷时,几乎必然能够打出任何给定的文字,比如莎士比亚的全套著作。 这个理论说明「把一个很大但有限的数看成无限」的推论是错误的。猴子精确地通过键盘敲打出一部完整的作品发生的概率是极其低的,但并不是零。 2003 年,普利茅斯大学艺术媒体实验室课程的教师和学生使用 2,000 英镑津贴做了这个实验,结果打出了 5 张几乎全是S的纸,没有一个完整的句子。 无限猴子定理启发出了一个排序算法:把待排序的数组交给猴子,只要猴子不断地打乱数组,总会有一次排序成功!这个算法被称为猴子排序,英文名是 bogo-sort(英文名源于 Quantum bogodynamics)。其中,可以使用「快速排序」章节中介绍的洗牌算法来打乱数组。 Random random = new Random(); private void bogoSort(int[] arr) { while (true) { if (isAscendingSorted(arr)) break; shuffle(arr); } } public

LeetCode排序章:算法与生活的共鸣 Read More »

ROS2学习笔记:C++最小支持Parameters的节点

通过如下命令新建一个package框架: ros2 pkg create –build-type ament_cmake –license Apache-2.0 cpp_parameters –dependencies rclcpp 支持Parameters的最小节点源代码: #include <chrono> #include <functional> #include <string> #include <rclcpp/rclcpp.hpp> using namespace std::chrono_literals; class MinimalParam : public rclcpp::Node { public: MinimalParam() : Node(“minimal_param_node”) { auto param_desc = rcl_interfaces::msg::ParameterDescriptor{}; param_desc.description = “This parameter is mine!”; this->declare_parameter(“my_parameter”, “world”, param_desc); timer_ = this->create_wall_timer( 1000ms, std::bind(&MinimalParam::timer_callback, this)); } void

ROS2学习笔记:C++最小支持Parameters的节点 Read More »

电波表调时区

前几天在老家看到墙上一块小时候就有的石英钟,好多年过去了走得还非常准,于是我问爸妈这块表哪儿来的,爸爸回答道是他当时从县里百货大楼买的,80块钱,日本表,年龄应该和我一样大了,并且还说不仅准还省电,一节5号电池用一两年。于是我又端详了一会儿,三十多年过去了,这块表依旧能感觉出来其真材实料的质感。想到我现在也有了自己的家,但是家里墙上一块表也没有,有想法我也有了买个能够经历岁月洗礼的挂钟的想法。 于是我从日本亚马逊直邮了一个SEIKO精工品牌的表,看照片就很喜欢,等拿到实物更加是觉得精美但又克制,是我期待的能够在家里用几十年的挂钟。 我买的这款可以接收送信所发出的无线电波实现时间校正,塔台虽在日本福岛和九州,可中国沿海大部分城市也能在空旷地方收到信号,我试了在北京也是能接收的,从而实现精准时间设置。可是自动对时有一个巨大的问题就是同步的时间是日本时间,和中国时差有1小时,所以“分秒”会很精确但是时间上比北京时间快一小时。 于是我得想办法调个时区。 首先将电池拆下再重新装回,在室内接收到电波之前,表针会自动回到12点时刻,此刻立刻再次拿掉电池。然后将背面的几个螺丝拆掉,这样子稍微晃一晃外边一圈的木框就能轻轻拿下来: 拆完木框后轻轻将表盘玻璃也可以扣开,该玻璃和表盘是通过双面胶固定的: 接下来就该调时区了,断电情况下,分针和秒针保持不变,将时针往前拨一小时,即将12点拨成11点: 再将玻璃片以及木框擦干净,原位装回,这样就时区调好啦: 最后装回电池,放在窗户边开阔处,等待电波同步,至此就一台非常精准北京时间的电波挂钟就设置完啦。拿在手里越看越喜欢我选的这个款式,你们觉得怎么样呀。  

电波表调时区 Read More »

在Jetson Orin Nano上基于Ollama私有化部署OpenClaw

媳妇工作需要调研AI,尤其OpenClaw在工作场景中的应用。不少帖子建议买个Mac Mini小巧省电24小时待机,我手头正好有个闲置的Nvidia Jetson Orin Nano 开发板,性能也强的很67 TOPS,打算拿来用作本地部署的载体。在此记录一下过程,小伙伴有闲置Jetson也可以参考一下利用起来。 对于一个新拿到手的Jetson Orin Nano Developer Kit,官方的NVIDIA SDK Manaer真是好使用,媲美树莓派的官方系统烧录工具,基本上就说鼠标点点点就行了。如果硬盘足够的话建议在工具页面将所有的依赖都一次性都勾上都安装好,省的系统装好后再费劲解决CUDA、cuCNN等依赖。 系统装好后,插上网线,从路由器端找一下IP,登录就可以开始装OpenClaw和基于Ollama的本地大模型了。先使用Ollama本地部署大模型,目前Ollama已经给Jetson适配过了从而调用GPU,如果看脚本中也可以看到对于Jetson使用的是Jetpack的环境而不是自己装的CUDA环境,直接运行就OK: curl -fsSL https://ollama.com/install.sh | sh 从安装进度可以看到过程中下载安装了Jeston独有的一些库: jetson@ubuntu:~$ curl -fsSL https://ollama.com/install.sh | sh >>> Cleaning up old version at /usr/local/lib/ollama >>> Installing ollama to /usr/local >>> Downloading ollama-linux-arm64.tar.zst ######################################################################## 100.0% >>> Downloading ollama-linux-arm64-jetpack6.tar.zst ######################################################################## 100.0% >>> Creating ollama user… >>> Adding

在Jetson Orin Nano上基于Ollama私有化部署OpenClaw Read More »

Copilot初始化技巧

最近的一个学习项目使用VS Code和Copilot为主要开发环境,Vibe Coding真是大大提高生产力,这个项目几乎99%的代码都是AI写的,整体来说是一个结伴编程的模式,我充当整体架构把控,AI帮我每个模块每个模块来实现。这个项目很复杂,持续了几个月,而VS Code的Copilot上下文很可怜,所以我充分使用了大量markdown文档记录进度记录plan,也用到了copilot-instructions.md 来让Copilot每次对话开始时主动读取一些规范性背景性得文档。可是实际用下来到你觉到大模型仅止步于此,并没有主动执行读各个模块的plan/progress的步骤。所以每次重启IDE后,模型感觉都很弱智,说了解背景也了解一点,但是不多。 解决首次开IDE后AI大模型对于记忆丢失的问题,一个解决方法是将项目重要背景以及当前进展写入copilot-instructions.md,但是这会使这个文件超级臃肿,另外一方面是我现在用到了,创建一个prompt脚本,每次新打开IDE手动运行一下,一方面让Copilot真正读一下其他的几个plan/progress文档,另一方面给我们一个当前状态的总结。 /session-start 使用这套模式主要是由于Copilot对于历史记忆做的不好,另外这套模式能够生效的一个前提是plan/progress文档能够及时且准备更新,我是通过一个skills完成的,当和大模型说特定命令,大模型就会逐个将模块中各自的以及项目整体的plan/progress根据当前的修改完成更新: 这是我使用VS Code Copilot的一些心得,如果对你有用,帮忙点个赞吧。      

Copilot初始化技巧 Read More »