徐洋站在屏幕前,翻开了手里那本已经被翻了无数次的测试记录本。
这本记录本的边角已经起了毛边,里面密密麻麻写满了每次测试的参数和备註,有些页面上还沾著咖啡渍和机油印,看起来像是被翻了很多年了。
他清了清嗓子,开始给肖宿匯报目前的进展。
“肖教授,目前我们在研的这个机械臂原型机对標的是达文西第四代的en do wrist系列,自由度构型基本相同,包含肩部三个自由度、肘部一个自由度、腕部三个自由度,末端执行器额外集成了一组微型钳口用於精细组织操作。”
“在低速、小角度工况下,末端轨跡误差可以控制在零点二毫米以內,和达文西標称的零点一毫米相比还有差距,但已经在可接受的范围內了。
问题在於当末端执行器进入高速启停或者大角度偏转的时候,关节伺服电机的力矩响应会出现一个我们无法解释的延迟尖峰,导致末端轨跡误差急剧放大到零点八甚至一点二毫米。”
他在屏幕上点开了一组对比数据,左侧是达文西在相同工况下的误差曲线,平滑得像一条被熨过的丝带。
右侧是精武原型机的误差曲线,上面布满了尖锐的毛刺和波峰。
“这个级別的误差在神经外科手术里是不可接受的。
在脑干附近操作的精度要求是亚毫米级,零点五毫米的偏差就可能导致不可逆的神经损伤。
我们的伺服控制算法已经叠代了十几个版本,pid参数调了上千组,甚至连关节轴承的预紧力矩都重新做了標定,但这个尖峰始终消不掉。”
徐洋合上记录本,脸上的表情有些苦涩。
“我们怀疑问题出在伺服电机的实时力反馈迴路里面。
从力矩传感器捕捉到外界阻力变化,到控制算法调整电机输出扭矩,这个过程里面可能存在一个我们检测不到的延迟源,导致电机在高速工况下无法及时补偿力矩波动。
但具体这个延迟源在哪里,是传感器的採样频率不够,还是控制算法的收敛速度跟不上,还是电机本身的机电时间常数存在我们没有意识到的非线性……”
他顿了一下,嘆了口气,把记录本放在了桌上。
“我们还没有找到確定的答案。”
站在旁边的沈凌接过话头。
他负责的虽然是成像模组,机械臂的控制算法不是他的主战场,但精武医疗的手术机器人项目是一个整体,每个子系统之间的耦合关係谁都跑不掉。
他推了推眼镜,语气比徐洋更直白一些。
“成像这边的问题也不小。
我们的三维內窥镜模组在静態显示上已经能达到达文西同等水平的解析度,但在动態追踪场景下,当机械臂做大幅度快速移动时,图像重建会出现帧间畸变。
最后经过排查,我们发现问题出在算法上,我们现在用的多视图几何重建算法依赖的是传统的对极几何约束,这套方法在低速场景下没问题,但高速动態场景下,两个微型摄像头之间的视差数据会出现亚像素级的漂移,导致深度信息的重建精度下降。
我们试过用梯度下降、卡尔曼滤波、帧间插值来修正,但是都没有彻底解决。”
徐洋和沈凌匯报完,实验室里安静了下来。
几个年轻工程师站在角落里,大气都不敢出。
他们都知道今天来的这位是什么级別的人物,也都知道自家项目卡了这么久,这是唯一的希望了。
肖宿听完,点了点头。
这些问题和他之前了解到的差不多。
“伺服力矩延迟尖峰的问题,本质是力反馈迴路的非线性耦合误差,並非单一环节的问题。”
他目光扫过徐洋和沈凌,“你们的pid控制框架是建立在什么样的动力学模型上的?”
徐洋立刻回答:“標准的多刚体动力学模型,基於拉格朗日方程推导的,考虑了所有七个自由度的惯量耦合。”
“问题就在这。”
肖宿拿起旁边白板笔,在墙上掛著的工程图纸空白处直接写了起来,“標准拉格朗日模型假设关节连接是理想约束,但你们在腕部关节处用的是谐波减速器,对吧?”
徐洋愣了一下:“对,我们用的確实是谐波减速器,和达文西一样。”
“谐波减速器的柔轮在高速启停时会產生一个非线性的弹性迟滯环,你们把它当成理想刚体来建模了。”
肖宿的笔尖在图纸上飞快移动,写下一串公式,“这个弹性迟滯环的力学行为可以用一个带记忆效应的分数阶导数项来描述。具体来说,如果把柔轮的扭转角记为θ,传递扭矩记为t,那么真实的力矩平衡方程应该是t = kθ + c·d^α(θ) + η·sgn(dθ)·|θ|^β。
其中d^α表示α阶的riemann-liouville分数阶导数,α的取值范围在0.7到0.85之间,具体取决於柔轮的材料疲劳状態,β是应变硬化指数,一般在1.3到1.6之间。”
徐洋盯著那行公式,眼睛越睁越大。
肖宿说著话,手也没停:
“標准的pid控制器在频域上只能提供整数阶的微分补偿,对於这种分数阶非线性迟滯,无论你怎么调那三个参数,都不可能收敛到零稳態误差。
你们测到的那个延迟尖峰,实际上不是延迟,而是分数阶系统在阶跃输入下的过冲振盪,它的频率恰好落在你们伺服电机的机械共振频带里面,所以才被放大了。”
沈凌倒吸了一口凉气。
“解决的方法也很简单。”
肖宿走到白板前,隨手画出一幅完整控制框图,开口说道:
“你们只要把常规pid换成分数阶pid就行,也就是pi的λ次方d的μ次方控制器。具体来说,就是加入一个0.75阶的微分项,再搭配一个0.6阶的积分项,控制器的传递函数写成g_c(s) 等於 k_p 加上 k_i 除以 s的0.6次方,再加上 k_d 乘以 s的0.75次方。
其中,k_p、k_i、k_d这三个参数,整定的时候要用频域的相位裕度法来做,直接把柔轮迟滯对应的最大剪切频率,作为核心设计点就好。”
说著,他看著眾人有些空白的表情,又补充了一句:
“这个分数阶控制器,你们可以用oustaloup近似算法在嵌入式系统上实现,频带只需要取三个十倍频程就足够了,运算量不会超过你们现有dsp晶片算力的百分之十五。”
这本记录本的边角已经起了毛边,里面密密麻麻写满了每次测试的参数和备註,有些页面上还沾著咖啡渍和机油印,看起来像是被翻了很多年了。
他清了清嗓子,开始给肖宿匯报目前的进展。
“肖教授,目前我们在研的这个机械臂原型机对標的是达文西第四代的en do wrist系列,自由度构型基本相同,包含肩部三个自由度、肘部一个自由度、腕部三个自由度,末端执行器额外集成了一组微型钳口用於精细组织操作。”
“在低速、小角度工况下,末端轨跡误差可以控制在零点二毫米以內,和达文西標称的零点一毫米相比还有差距,但已经在可接受的范围內了。
问题在於当末端执行器进入高速启停或者大角度偏转的时候,关节伺服电机的力矩响应会出现一个我们无法解释的延迟尖峰,导致末端轨跡误差急剧放大到零点八甚至一点二毫米。”
他在屏幕上点开了一组对比数据,左侧是达文西在相同工况下的误差曲线,平滑得像一条被熨过的丝带。
右侧是精武原型机的误差曲线,上面布满了尖锐的毛刺和波峰。
“这个级別的误差在神经外科手术里是不可接受的。
在脑干附近操作的精度要求是亚毫米级,零点五毫米的偏差就可能导致不可逆的神经损伤。
我们的伺服控制算法已经叠代了十几个版本,pid参数调了上千组,甚至连关节轴承的预紧力矩都重新做了標定,但这个尖峰始终消不掉。”
徐洋合上记录本,脸上的表情有些苦涩。
“我们怀疑问题出在伺服电机的实时力反馈迴路里面。
从力矩传感器捕捉到外界阻力变化,到控制算法调整电机输出扭矩,这个过程里面可能存在一个我们检测不到的延迟源,导致电机在高速工况下无法及时补偿力矩波动。
但具体这个延迟源在哪里,是传感器的採样频率不够,还是控制算法的收敛速度跟不上,还是电机本身的机电时间常数存在我们没有意识到的非线性……”
他顿了一下,嘆了口气,把记录本放在了桌上。
“我们还没有找到確定的答案。”
站在旁边的沈凌接过话头。
他负责的虽然是成像模组,机械臂的控制算法不是他的主战场,但精武医疗的手术机器人项目是一个整体,每个子系统之间的耦合关係谁都跑不掉。
他推了推眼镜,语气比徐洋更直白一些。
“成像这边的问题也不小。
我们的三维內窥镜模组在静態显示上已经能达到达文西同等水平的解析度,但在动態追踪场景下,当机械臂做大幅度快速移动时,图像重建会出现帧间畸变。
最后经过排查,我们发现问题出在算法上,我们现在用的多视图几何重建算法依赖的是传统的对极几何约束,这套方法在低速场景下没问题,但高速动態场景下,两个微型摄像头之间的视差数据会出现亚像素级的漂移,导致深度信息的重建精度下降。
我们试过用梯度下降、卡尔曼滤波、帧间插值来修正,但是都没有彻底解决。”
徐洋和沈凌匯报完,实验室里安静了下来。
几个年轻工程师站在角落里,大气都不敢出。
他们都知道今天来的这位是什么级別的人物,也都知道自家项目卡了这么久,这是唯一的希望了。
肖宿听完,点了点头。
这些问题和他之前了解到的差不多。
“伺服力矩延迟尖峰的问题,本质是力反馈迴路的非线性耦合误差,並非单一环节的问题。”
他目光扫过徐洋和沈凌,“你们的pid控制框架是建立在什么样的动力学模型上的?”
徐洋立刻回答:“標准的多刚体动力学模型,基於拉格朗日方程推导的,考虑了所有七个自由度的惯量耦合。”
“问题就在这。”
肖宿拿起旁边白板笔,在墙上掛著的工程图纸空白处直接写了起来,“標准拉格朗日模型假设关节连接是理想约束,但你们在腕部关节处用的是谐波减速器,对吧?”
徐洋愣了一下:“对,我们用的確实是谐波减速器,和达文西一样。”
“谐波减速器的柔轮在高速启停时会產生一个非线性的弹性迟滯环,你们把它当成理想刚体来建模了。”
肖宿的笔尖在图纸上飞快移动,写下一串公式,“这个弹性迟滯环的力学行为可以用一个带记忆效应的分数阶导数项来描述。具体来说,如果把柔轮的扭转角记为θ,传递扭矩记为t,那么真实的力矩平衡方程应该是t = kθ + c·d^α(θ) + η·sgn(dθ)·|θ|^β。
其中d^α表示α阶的riemann-liouville分数阶导数,α的取值范围在0.7到0.85之间,具体取决於柔轮的材料疲劳状態,β是应变硬化指数,一般在1.3到1.6之间。”
徐洋盯著那行公式,眼睛越睁越大。
肖宿说著话,手也没停:
“標准的pid控制器在频域上只能提供整数阶的微分补偿,对於这种分数阶非线性迟滯,无论你怎么调那三个参数,都不可能收敛到零稳態误差。
你们测到的那个延迟尖峰,实际上不是延迟,而是分数阶系统在阶跃输入下的过冲振盪,它的频率恰好落在你们伺服电机的机械共振频带里面,所以才被放大了。”
沈凌倒吸了一口凉气。
“解决的方法也很简单。”
肖宿走到白板前,隨手画出一幅完整控制框图,开口说道:
“你们只要把常规pid换成分数阶pid就行,也就是pi的λ次方d的μ次方控制器。具体来说,就是加入一个0.75阶的微分项,再搭配一个0.6阶的积分项,控制器的传递函数写成g_c(s) 等於 k_p 加上 k_i 除以 s的0.6次方,再加上 k_d 乘以 s的0.75次方。
其中,k_p、k_i、k_d这三个参数,整定的时候要用频域的相位裕度法来做,直接把柔轮迟滯对应的最大剪切频率,作为核心设计点就好。”
说著,他看著眾人有些空白的表情,又补充了一句:
“这个分数阶控制器,你们可以用oustaloup近似算法在嵌入式系统上实现,频带只需要取三个十倍频程就足够了,运算量不会超过你们现有dsp晶片算力的百分之十五。”
