机械臂控制需求——校正算法的一些问题。
  • 机械臂校正算法
  • 困惑求解
  • 华周智能装备
  • 机械臂标定一键标定
李子毅
机械视觉系统~~

[62.gif]校正算法是基于空间中的一个平面进行校正,因此会需要手臂设定一个用户坐标系,使其Z方向与平面的法矢量一致。

假设使用原始坐标系的情况底下,工作平面就必须如图一。假设需要在其他地方进行手臂校正,则需要设定一个用户坐标系使得其操作符合图二的情况。

 控制需求:1. 取得手臂位置为基于指定用户坐标系的位置,其位置数值为直角坐标系(X, Y, Z, RX, RY, RZ),如果没有指定用户坐标系时(ID设定-1),就采用原始坐标系。

                   2. 基于上述第一项的位置中,加上位移或旋转角度后控制手臂移动,如图二中的移动方式。

目的结果:我们目前想做到的事情就是按照使用者的需求在特定的坐标系上移动手臂。参考C#模板,用到的指令步骤为

                     1. get_tcp_pose: 取得当前手臂位姿(可指定返回的位姿是基于哪个坐标系)

                     2. 将当前手臂位姿更新成目标位姿

                     3. inverseKinematic: 经过逆运动学得到最终手臂位姿

                     4. moveByLine: 根据最终手臂位姿移动手臂

以下针对上面的步骤有几项问题想理清确认:

                 1. 在get_tcp_pose时可以根据coordinate_num及tool_num来指定返回的位姿基于的坐标系,文件中有提到以下段落:

                  

               这里看的不是很理解,所谓单独使用coordinate_num或tool_num的意思是指SendCMD时只指定了其中一个参数的值吗?例如:

               sendCMD(sock,”get_tcp_pose”,{”coordinate_num”: 2})

               必须在sendCMD的时候同时设定coordinate_num及tool_num才能正确生效指定坐标系的意思吗?

              sendCMD(sock,”get_tcp_pose”,{”coordinate_num”: 2, “tool_num”: -1})

           2. inverseKinematic若没有指定手臂手系的需求应该是可以忽略的,直接跳过3.,直接moveByLine?

           3. 假设今天有指定手系的需求而需要使用inverseKinematic,但从该指令上没有看到指定坐标系的参数可以设定,所以在执行的时候他基于的坐标系是哪一个呢?会是基坐标系吗?如果跟get_tcp_pose时指定的坐标系不同感觉会有点奇怪,无法满足控制的需求。moveByLine也是同理、SendCMD时没有坐标系相关的参数可以指定。所以想知道在没有指定坐标系的情况下执行inverseKinematic跟moveByLine时具体套用的坐标系实质上是哪一个。

          4. 有看到一些相关的指令好像有机会达成需求,例如getUserFrame、moveByLineCoord、ConvertPoseFromCartTouser…etc,但因为手边没有手臂可 以实际确认效果,想请问想达成控制需求会不会其实应该 是要透过其他这些指令而非get_tcp_pose => moveByLine?

点击显示全文
赞同0
发表评论
分享

手机扫码分享
1
714
收藏
举报
收起
登录
  • 密码登录
  • 验证码登录
还没有账号,立即注册
还没有账号,立即注册
注册
已有账号,立即登录
选择发帖板块
上传文件
举报
请选择举报理由
举报
举报说明