于2021.8.29
想想还是需要写点什么的,简单记录一下自己这些年的成长经历。
2014-2018:主要技术积累和技术突破;
2019-2021:技术和管理并重,总体来说,满意当前的状态,学到了很多管理知识。
总体来说,技术和管理都符合这个曲线:学习-积累-混沌-突破-提升,这几个阶段。
2021年公司即将步入了更新阶段,期望能与它一起成长,不被淘汰。
---------------------------------------------------
招聘广告(更新于2021.8.29):集团公司有了自己的官网:http://www.medbotsurgical.com。
自2017年后,时隔4年又上知乎了,大家好~
上海微创医疗机器人(集团)股份有限公司,是微创医疗科学有限公司(http://00853.HK)旗下子集团,2014年开始研发腔镜手术机器人(作为集团的内部孵化项目),2015年在中国成立公司,并开始研发鸿鹄骨科手术机器人。集团致力于面向微创伤手术最前沿发展需求,运用机器人、智能控制、传感与信息领域的前沿研究和产业集成,创新性提供能够延长和重塑生命的机器人智能手术全解方案,引领机器人手术的成熟与发展,塑造超智能手术时代。
团队拥有10年医疗机器人技术积累。
公司处于上升期,需要各路小伙伴加入,一起共创事业。
如果你看到了广告,请发送简历至wangjy@microport.com。
机器人算法工程师 若干
工作职责:
1、 负责机器人仿真平台的开发与应用;
2、 负责机器人功能实现与系统调试;
3、 负责机器人运动学算法与控制策略;
4、 协助机器人运动功能测试软件开发;
5、 发现和解决开发过程中出现的技术问题;
6、 相关技术成果及资料的查阅、整理及归纳;
机器人控制工程师 若干
1、 负责机器人底层伺服控制算法的设计与开发任务;
2、 负责PID整定、振动抑制、信号处理、参数辨识等工作;
3、 负责机器人控制系统稳定性分析;
4、 负责机器人控制算法理论研究与应用;
5、 发现和解决开发过程中出现的技术问题;
6、 相关技术成果及资料的查阅、整理及归纳;
其他嵌入式软件工程师,机械工程师,电气工程师,系统工程师都有岗位待招中
——————————————————————————————
看到这个问题,忍不住关注并且像看看其他算法工程师是怎样的心情。可等了这么久,没有看到想要的答案,我猜题主应该和我一样想了解这一领域或者职业的体会。由于本人正好是做机器人算法这一块工作,终于还是决定写一写这两年来的感受,也权当是两年的收获和总结。
机器人控制入门,我属于比较晚的那种,2014年6月才真正接触和了解机器人控制算法相关知识,非常感谢现在的领导和好哥们带我走入机器人控制世界。所有的机器人控制、算法方面知识都是在我工作之后学到的,以下内容纯属个人体验,如有错误,请各位前辈指正。
————————————————————————————————————
说话先上图:
这是我这两年手头上买的基本机器人算法入门相关的书:
1、《机器人学导论》应该算比较基础的入门:各种变换、正逆运动学、静力学、动力学、线性/非线性系统、基础控制、电气元件等等,算是入门比较全面的;
2、《先进机器人控制》是中科院的研究生教材,里面主要介绍一些机器人控制方法,基本涵盖了当前应用以及一些先进的控制方法;
3、《机器人动力学与控制》是北航霍伟老师编写的,主要介绍动力学相关知识和控制;由于已经绝版,找到了万能的“某宝”买的;
4、《机器人学-建模、规划与控制》是目前为止觉得写得最深刻也是能容易理解并且全面的一本机器人学的书,有能力的同学建议看看英文原版。
当然收藏了很多机器人相关书籍和论文。
这些资料伴随我进入机器人控制算法领域以及学习和成长的过程。我自认为是一个更加偏向于应用的攻城狮,只是看完了其中部分入了个门,偶尔也需要经常翻出来继续复习;特别是遇到问题和困难时,翻看之前的某些章节,突然又有了新的想法和灵感,或者是新的一种理解和思路,那么问题就很可能就解决了。
——————————————————————————
言归正传,对于题主的问题,做机器人算法工程师是一种怎样的体验?我只能说,一入佛门深似海,前方还有许多坑。
学习篇:
机器人控制及算法工作是一个需要大量阅读和实践的过程。有时候你觉得懂了会了,仿真出来并不是那么回事;有时候仿真对了会了,实际应用也不是那么回事。
实际的控制系统相比于算法或者仿真中的还是有比较大的差距:光是摩擦就够你头疼的,还有许多非线性项,科氏力、重力等,许多机械参数、惯量需要辨识,速度、加速度怎么采集或者计算准确、波动小。
因此,会经常性地觉得:“喔艹,这怎么搞”或者是“喔艹,只能怪自己太笨太蠢”,所以经常会怀疑智商,这时候就需要多多读书,多看论文多看牛人的著作。
其实,这也是有好处的,就是你会逼着自己去多看书;有人说,工作之后能难有学习机会和时间了。你看,做一个机器人算法工程师,天天都是学习,多好!
编程篇:
拿到模型——分析、建模、仿真——捋顺控制思路——设计控制架构——模块划分——开始编程
以上是我个人的一个工作思路,也在不断更新和完善中。
机器人编程是一件比较有意思的事情,一步步把控制语音翻译成软件识别的语言,最终实现机器人控制。一般来讲,只要你有一门编程语言基础,无论是matlab、C、C++等等,其他编程语言都是很容易上手,并且学会应用。
目前,我在使用matlab、C/C++知识,由于控制器的原因,必须是这种编程环境和编程语言要求(坑),最大感觉是语言之间切换太蛋疼了,几种语言语法相差太多,不熟练的话很容易弄错。建议在机器人编程时,最好是用一种语言,不要超过两种,不然就会有一种欲仙欲死的感觉(牛人请自觉忽略,答主编程能力比较水)。
对了,要学会使用各种工具包。
调试篇:
通常,算法工程师是整个机器人调试最后一环,前面的是机械、电气、软件。如果你是以你自己的工作任务和节点去推进工作,那你就too young too simple!
你理想中的时间规划是这样的:
实际上,最后是这样的:
纳尼!!!!
每一次你都会觉得心好累,整个项目时间不能变,前面的工作延期最后都是会延期到算法头上,并且算法是整个调试里面最难的好不好!时间准的时候不一定够用,每次来个延期是什么鬼啊!
假设你在调试代码:啪,丝松了,机械来人啪啦啪啦修一通;调着调着:接头又松了,电气来人啪啦啪啦修一通;继续调试,出了一个算法bug,或者是变量调用出错,数据传递不对,又要停下来找bug;眼看时间一天天过去,节点就要到了,任务没有完成,怎么办啊!!
此时,内心一定是崩溃的!!没办法,找领导,申请延期,制定各种延期计划,每天汇报进展,增加资源需求。于是乎我就在组内有个绰号——“延期小霸王”,可是宝宝心里苦/(ㄒoㄒ)/~~
就这样,别人是朝九晚五,你是朝九晚九、十、十一。。。。。。
在做算法工程师之前,完全没有想过有一天会秃顶的可能,因为头发是这样的:
两年之后,就成这样了:
有人曾经问过我,这么辛苦,这么累,为什么不辞职还在坚持。
答曰:梦想总是要有的,万一实现了呢(答主是那种一冲动就把事情做到底的人)
收获篇:
不过说实话,内心还是喜欢这份工作和这种氛围的。工作环境像研究生实验室那种自由,但时间节点更加严格。周围有一群懂行的人,一起讨论一起分析,自己成长学习都很快。
感谢在学习过程中指点过的小伙伴。
虽然现在还能保持着一种学习和奋斗的感觉,但有时候觉得忽然特别累,希望还能多坚持坚持。
另外,一定要注意保护身体,多锻炼。所有没有以身体为基础的工作都是慢性自杀(送给所有辛苦工作的攻城狮)。
前景篇:
国内目前还是很缺专业的机器人控制算法相关人才,相比国外几十年行业发展的技术储备,我们还是落后很多的。从产品到论文,从科研成果到专利著作,都是落后很多年。
2015年被称为机器人元年,国家已经从战略上重视这一领域的发展,投入了大量资金以及制定许多政策来刺激机器人行业发展。一个简单现象就是,如今遍地都是机器人大会,各大展览必然出现各种机器人,电视、网站、报纸都在给机器人刷屏,各种创业的机器人公司,如雨后春笋出现,各种投资、孵化器都愿意给该领域投钱。
因此,无论从行业需求和未来发展,机器人领域都是一个不错的方向,但感觉现在泡沫有些越来越大,到时必然会出现行业整合。
不过那都是后话了,当前目标就是学好、会用、用好。
------------------------------------------------------------------------------------------------------
在这过程中,肯定是会有痛苦地过程,但也是成长和学习的机会,然后你就会主动搜集相关资料论文专利等等,相信会有一套属于自己学习的方法和工具;如果拿到资料而束之高阁,再多的书也枉然,共勉!
更于20160615
————————————————————————————————————
做控制工程师就这体验
(它的电影版其实也挺好玩的:
歪小子斯科特对抗全世界 (豆瓣))
为什么呐?
因为所有的东西,所有的东西,所有的东西都可能出问题。
光栅编码器因为进了金属屑而导致有几个栅格正转有度数反转没读数
滑动变阻器因为接地线虚焊导致输出电压会跟着电机电流漂
电机驱动器输入有个FIFO而且执行速度略慢导致滞后在50毫秒和1秒之间随机变化
激光温度计会告诉你一个烫手的温度是33度
链轮传动轴线不平行,造成其中一个链轮在铝合金外壳上摩擦产生时变阻力
测量角度的连杆在运动中产生的轴向力作用下会产生巨大摩擦力,导致设备转动时连杆弹性弯曲而传感器没读数。停机以后怎么检查怎么都是好的。
MCU上电以后居然在开始的几秒钟里面SPI口不工作
滑台的库伦摩擦太大,却要做力控制
齿轮有大间隙,却要做力控制
P增益设得太大,系统震荡了,然后撞坏了力传感器(好吧,这是我早年犯的最蠢的错误之一)
更不要说:
A/D接口可能烧了
D/A接口可能烧了
UART可能烧了
MAX232可能烧了
H桥可能烧了
示波器可能烧了
万用表可能烧了
电机可能烧了
连接线可能断了
电路板可能脱焊了
导线可能短接了
……
当你是某个全新项目上的控制工程师的时候,你就有种对抗全世界的感觉。
做的久了,就会深刻体会到什么叫墨菲定律。于是你就会变成这样:
“这样可以吧。”
“不不不,这两个裸露的端子有可能碰到一起。”
“可是他们是分开的啊。”
“不不不,他们还是有可能碰到一起,比如说万一被撞了一下。”
“撞不到这里吧。而且这里也套不了热缩管了,也没办法贴电工胶带。”
“那我们试试热熔胶?”
“请给我拿两个万用表。”
“拜托在每个地方都做电缆的应力释放点。”
“拜托尽量不要有裸露的触点!!!”
有个英语单词非常完美地描绘了“经过两周的debug和拆机测量仍然没有发现问题出在哪里”的心情:Frustrated ヘ(;´Д`ヘ)
有个汉语词汇非常完美地描绘了“经过四周的控制增益调试和设计了一系列不成功的状态观察器、参数辨识器和补偿算法后终于发现问题出在一个传感器工作不正常”的心情:生无可恋(╯#-_-)╯╧═╧
——————————————————————————————————————
那为什么还要干这个呢
因为当整个系统按照你的预期而完美地运行起来的时候嘛,你就会觉得成就感爆表、简直无所不能(•‾̑⌣‾̑•)✧˖°
简直想从实验室跑回家,拥抱路上见到的每一个人
如果你做的是机器人控制……
这就是做控制工程师的乐趣吧<( ̄︶ ̄)>
————————————————————————————————
做控制工程师的话,除了会盲调PID之外,要会系统建模和制作模拟系统,在模拟系统里大致确定控制系统和控制参数。要和机械工程师合作,尽量减少影响控制的摩擦和阻力,确保机械结构能够提供足够的力/力矩,确定散热良好。要和电路工程师合作,减少任何可能的电路问题,这包括短路、断路、浮地、串扰等等。研发试制过程中最麻烦的是大部分电缆和一部分电路板都是临时制作的,存在很高的故障率,要特别注意应力释放点,避免电缆、焊点受力。要仔细阅读所有部件的手册,确定工作温度、湿度、密封情况是否适宜,量程、破坏极限是否已经考虑。要了解传感器的延迟是多少、驱动器的延迟是多少,是否需要考虑,还是可以忽略不计。要提前考虑自己需要哪些传感器数据。试制阶段宁可传感器冗余,也不要不足,只要开支允许,传感器宁就上限不就下限。在动手做控制算法之前可能要花费大量的时间在这些细节问题的敲定上面,但这个开销是值得的。这会在后面设计控制算法以及实现控制算法的时候带来巨大的便利。
至于控制算法本身,大部分时候都是从一些课本上典型的控制算法开始,根据你的需要进行修改。不排除你能从论文中找到非常合适的算法——如果你所在的领域已经有很多控制论文的话。那样显然事半功倍。但也不要局限于论文。很多时候他们的物理条件和任务需求和你的是不一样的。他们的算法未必是上佳之选。
最后,能用前馈干掉的误差,就不要用反馈控制干掉。能用辨识和补偿干掉的参数变化,就不要鲁棒控制干掉。能用单级控制,就不要用多级控制。系统的快速性往往是问题的关键。