与周秉宪的鏖战,这算是她这么多年来,不,准确的说,是真正踏入社会化程度以来,尤为刻骨铭心的。
以前读书,校园生活与一潭死水无异,唯一能点燃她胸中劲火的是那个叫陈桉的男生。
那时学校有英才计划,母校会和本地大学的科研实验室合作输送,提前让相关项目的研究生师哥师姐进行辅助。她在小组项目智能精密装配赛中主要负责位姿解算——简单来说就是要计算机械臂零误差抓取物品,其场景最后要适配到某工厂里面的零件。
算是一个挑战性较高的工作。
她按照PnP算法解算出的坐标,想着现实中机械臂绝对能精准到位,谁知那该死的机械臂实际抓取物品时,明明那方块近在咫尺,偏它跟突然瞎了眼,仿佛在故意同她作对,总是会有零点零零几毫米的偏差,死都抓不住,好不容易抓住了,又有让方块溜走的趋势......
她盯着屏幕上的三维坐标,和挑不出错误的完美数学公式,以及连OpenCV的求解器也给出了极低的误差值,她望向那台硬邦邦脑袋转不过弯的傻逼机械臂,彻底陷入沉思。
这时,一道刚睡醒甚至略带沙哑的嗓音自身后挤兑过来,“检查一下相机坐标系,机械臂基座坐标系,还有你的世界坐标系,三者之间转换有没有问题?”
梁真循着声音的轨迹回头望了一下,此人双腿交叠在两个拼接的凳子上,倒是悠闲,脸上则盖了一本《机电工程管理与务实》,书新的才撕膜不久的样子,懒懒散散吊儿郎当,是不是外行指点内行也未可知。
梁真为了消除那几毫米的误差,来回调试参数零零散散费了两天时间,此刻正烦躁得很,且比赛迫在眉睫,眼看组内其他同学负责的部分都弄得差不多了,加上天气燥热,她胸中安静不得,越是急越是慢,越是慢她反而越乱。她听话地去检查令她抓狂过的坐标系转换细节,又去检查相机和机械臂的标定,一切都超级完美,没有任何问题!
一双手从她身侧探出来,又把她整个让人都往边上挤了挤,二话不说夺过她的键盘敲得噼里啪啦,把她写好的代码调出来,又自顾自修改代码里的参数,梁真刚想制止,就见此人看也不看她一眼,指使她把相机拿过来,OK你是师哥你是长辈,我必须respect!
梁真照做,把相机递给他,他又去重新标定相机,看他脊背躬得跟虾米似,一头红毛长发格外现眼,身上那件黑T估计换洗多次纤维都失去弹性了?躺太久皱生生的,人瘦得像丁丁历险记里在雪山失踪已久奄奄一息的老张,萎靡没生气,也特像...真宁厂内跟在老师傅身后的迷茫耐不住寂寞的年轻学徒。
他于胸中长泄一口气。
她来实验室这一个月,还是第一回见她的指导师哥,不知道还以为是某个理发店的资深托尼。
他把相机重新塞到她手里:“再来!”
梁真没做声地依旧用他修改的代码运行机械臂,其结果虽然是抓住了方块,但由于惯性,方块并没有完全垂直在爪子里,歪掉小半个身子,也就比她那个溜走的趋势好一丁点罢了,不知为何,她颇有些幸灾乐祸的意思。
然师哥盯她一眼,梁真差点收不住嘴角的笑意,毛绒绒脑袋缩一缩,偷偷瞟他一眼,后者又做甩手掌柜了,不管了,道:“你自己弄吧。”
?
梁真无语,再看他把她的代码删了几行,然后把设置好的参数调的乱七八糟,她火噌地冒出来了,但她也不敢骂人,老老实实地耐着性子重新去整三维世界的XYZ轴,改来改去,最后偏差甚至越来越大,而且有一会机械臂跟疯狗一样在桌面哐哐震动,把方块都推到地上了,整个屏幕里的坐标轴跟跳跳糖一样乱蹦,代码报错!警告!看得她脑壳疼,烦死了,回头瞪他,那句都怪你——还没说出来,哪晓得人就抱胸站定在她身后。
冷脸地瞧着她。
把她吓了一跳。
“你还不耐烦了!”他凶巴巴先发制人。
梁真老实巴交,但还是小声辩驳:“现在偏差比我自己弄的大了...”
“我设置的增益参数你动了?”
“........!”梁真猛看电脑一行一行代码扫过去,快速搜寻英文缩写名词,kp,ki,kd...暗道哪有增益参数——
他一把抓着她握在鼠标上的手,光标移到看起来像乱码的dmp_k上,后面跟着她修改的数值。
......
在一堆正经的相机和速度参数中间,这几个英文字母看起来格格不入,跟凑数似地丢在角落,谁知道这是增!益!参!数!
“...可是...增益参数名词不是kp嘛!你写的这个...这个是阻尼系数吧!这个跟机械臂的惯性有什么干系?”她眨眨眼睛,满是不解。
红毛狮王定睛看傻子的眼神打量她,又想她到底是十几岁的小女生,终究耐心提点:“你以为只有kp能控制电机?”
不然咧。
梁真一脸天真。
红毛狮子眉毛一勾:“动补...动力学补偿系数没学过?”
梁真迟滞地摇摇头,红毛狮王自语:“阻尼系数,”他轻呵,漫不经心道:“机械臂急停的时候,会物理形变,这就只能靠动力学补偿。靠PID硬拉,你这比赛都要结束了,也未必能做到严丝合缝抓取!”
梁真心中暗道:这你自创的术语吧,标准教程里可没有你说的这个东西!
他又问:“你现在要干嘛?”
她嘟囔:“...它现在抓起来的时候,太冲了,有从台面跳下来的赶脚...”
“写一堆冗余代码干嘛!还嫌跑起来不够慢!”他夺过键盘,删除,重写,又道:“看好了!只改这一个数!”
他把延时参数改回800毫秒,阻尼系数,不,动力学补偿系数从0.8改回0.2,“你是不是觉得物理定律是你家开的!调那么高,你要带着机械臂上天啊?”
“......”
红毛狮子:“再跑!”
梁真屁颠屁颠按下运行键,机械臂又重新把方块抓在手中,仍旧是歪掉...这也不是梁真想要的结果。
“还要干嘛?一次性说完!我还有事!”
“就...最好机械臂抓取的时候,能与夹爪边缘严丝合缝...融为一体最好...”她小心翼翼。
暴躁的红毛狮子一屁股坐在她旁边,重新盯着编译器里的代码思忖,然后将动态延时多加了一行判断逻辑:
#动态延时:根据图像清晰度方差决定等待时间
if image_variance>50:
DELAY_GRAB=1.2#画面太晃,多等会儿
else:
DELAY_GRAB=0.5#画面稳了,赶紧抓
他说:“阻尼系数也不能固定,”
梁真:?
他继续在编译器里修改:速度越快,阻尼越大,负载越重,阻尼也要微调......
最后他重新建了一个文件,写的这段代码已经刷新梁真的知识库了,红毛狮子怕她又冥顽不灵,循循善诱:正常人想要抓一个物品,是先走到物品附近,所以机械臂同理可得,先让机械臂移动到方块位置,然后读取力传感器数据,如果碰到方块,根据方块方向微调位置...而又因为你的机械臂抓取的是精密零件,那就不能使用蛮力,毕竟零件娇贵,所以最好跟人一样慢速靠近,别吓着零件,一点一点用力度去试探,比如一块海绵,太用力,海绵就瘪了,太松,海绵容易掉,趋近力的某个阈值,就停,没碰到就继续微调靠近,一直到保持力度夹住!
简单来说就是要让机械臂自己摸呗......
当机械臂夹子和方块边边真正严丝合缝的那一秒,梁真满面春风,再回头瞧,红毛狮子也是一脸傲娇的笑,那样子仿佛在说:服不服!
......
那个下午或者说很多个像那天一样的下午,尽管红毛狮子神出鬼没,嘴不饶人,但却总在她需要他的时候如及时雨一般。
可...饶是她越挫越勇,毕竟时过境迁,她岂能还是那一身拥有纯粹的无畏莽劲之人?
梁真越想越窝囊,气呼呼在便利店买了一大桶巧克力覆盆子冰淇淋,她觉得心里窝着的火亟待找个喷泄口子,要不然就彻底冰封!
她挖老大一勺,刚碰到嘴边——
“吃独食呢!”
淩品霖不知什么时候一屁股坐到她身边,衬衫大喇喇敞开,又白又薄的精壮胸膛和短小紧身的黑色泳裤,随后泥鳅似滑进泳池里。
游了一个来回。
淩品霖鲤鱼跃出,将湿发全部捋到脑后,抹一把脸上的水,清清丽丽瞅着面前秀色可餐的美人。
“怎么了怎么了?晚饭没吃饱?”
见美人秀眉难展,爱答不理。
他双臂展开,搭在岸台两边,大开大合姿势把她泡在池子的双腿环起来。
淩品霖昂头关心:“felix欺负你了?”
见她不做声就是默认。
“他就那样的人,他有病,你别跟他一般见识。”
他看起来病得不太轻!
梁真嗷地吃好大一口冰淇淋,黑巧的涩和覆盆子的酸中和,倒是没有她命苦,心口却莫名凄凉起来。