回复内容:
对:jamesyoung77 关于至于6R的机械手臂,反解会有多解 不知道他是怎么解决 会不会出现很复杂的
没错,是没有唯一解,靠迭代求解;
而反解说白了就是把反解程序写在pmac里面 和在VC端写是一样的
算法当然是一样的,但是在VC里写好后求出马达的控制量,再把点离散的点发送给PMAC去执行,这样的效果和用一般的卡的效果区别不大; 可行但是不鼓励这样去做。
在PMAC里求反解,PMAC内部提供的初插,精插和前瞻能更有效的工作;机械手运行的流畅和快速性会好很多。
我前面的帖子里已经解释过了。 内容的回复:
对于你的说法,和我上面的方案差距就是一个是上位机做插值一个是卡内做插值 ,你的方法优势非常明显,对于把反解写入pmac后,比如我机械手末端写一个圆弧插补命令,执行命令后,PMAC卡内部会根据I13程序分段时间比如5MS对这个圆弧做3次样条精插,对每个电机用s曲线去规划运动,最终末端走出一个圆弧,现在问题来了,对于pmac 提供的模态运动模式是直线,圆弧,pvt和三次样条等方式,那对于空间的任意曲线,必须在上位端做一次粗分段去拟合,当然这个分段的大小直接决定了最终曲线的精度,太大精度太低,如果分段太小,比如3ms,比pmac的精插时间还短,PMAC内部将如何去实现精插呢?是否会因无法计算而报错?
看了各位的讨论,基本上我觉得有几点。
1.轨迹规划规划功能。可以在直角坐标系规划空间曲线。动作时将直角坐标运动解析成关节运动控制各轴。
2.教导模式,可通过外部教导,控制器记录行进轨迹。按照想法会逆运算转换成直角坐标系空间曲线存储。运行时参考第一点。
3.关于位置、速度、加速度的控制 应该分为多级插补,控制器将直角坐标系根据控制周期(例如2ms)将控制数据转换成关节坐标系。然后将关节坐标系的各关节的位置、速度、加速度数据传送给各轴。 这样第一级插补完成。然后驱动器每隔2ms会接收到一个控制数据。驱动器将相邻的控制数据拟合成高阶控制曲线。然后在每次控制电机时(例如125us 间隔)在高阶曲线取点。
现在我有一套运动控制产品平台,只要解决直角坐标系到关节坐标系的算法相互转换就可实现教导功能。软件空间曲线规划需要软件功能支持,这是第二步。