我有一个特定的运动学作为一个更复杂的机器的一部分,需要计算一些非常困难 (更不可能)的物理参数,以适当的准确度来测量我所用的仪器 [运动学] 首先看它是一个简单的1自由度arm(黑色),可以围绕x轴旋转。 它有一个重量,迫使它总是上升,直到它碰到机械终点(angular度a0 )或半径r0一些pipe子(蓝色)。 arm的旋转中心位于y0 。 pipe可以移动到任何y(t)高度。 [用法] 这是用来测量pipe的半径进一步处理。 可以计算半径(通过基本测angular法),这导致在图像底部的等式。 常数a0,y0,z0很难测量(它是在复杂的机械中),所以距离的测量精度最小0.1 mm ,angular度0.1 deg ,甚至是有问题的。 [校准] 所以我决定尝试从机器本身完成的一系列测量(自动校准)中计算这些参数。 所以我有已知半径r0校准pipe。 所有的绿色参数都可以作为常量处理。 现在我把pipe子沿着y轴放置,以尽可能多地覆盖arm的angular度。 可悲的是,范围只有20 degrees (对于当前的机器设置)记住测量预设的y(t) …作为n点数据集的a(t) 。 这给了我n超越方程的系统。 从这里我试着猜测a0,y0,z0记得最好的解决scheme(最接近r0 )的“所有”可能性, [近似于a0,y0,z0] 近似值是基于这个类的: //————————————————————————— class approx { public: double a,aa,a0,a1,da,*e,e0; int i,n; bool done,stop; approx() { a=0.0; aa=0.0; a0=0.0; a1=1.0; da=0.1; e=NULL; e0=NULL; i=0; n=5; done=true; […]