继之前分享的一篇《Robotics Studio学习教程:第二十二天——让相扑机器人动起来!》, 我们将继续分享下一篇《Robotics Studio学习教程:第二十三天——控制虚拟的KUKA LBR3机器人手臂》,让我继续开始我们学习Visual Programming Language,以及使用Robotics Studio学习开发机器人应用的道路吧。
[Robotics Studio] 操控虚拟 Kuka LBR3 机器人手臂 -- Day23
玩完车子, 换玩机器人手臂吧.
照例用简单的 VPL , 使用 GenericArticulatedArm 以及 SimpleDashboard 两个 service 就可以玩:
在 GenericArticulatedArm 当中我们可以选用 manifest - KUKA.LBR3.simulation.Manifest.xml :
就可以开始啦:
Dashboard 的使用方法跟操控机器车子很像, 先点选 Remote Node 里面的 Connect, 再点选 Articulated Arm 里面的 Connect:
你会看到一堆 Joint, Joint 在医学上就是骨头的关节 ... 当然也可以翻译成为缝合点, 接合点...
在此就是机器手臂可以旋转的关节点. Joint 在 XNA 当中可以如下旋转 (来自官方说明文件):
换句话说, Local Axis 旋转的, 称之为 TwistMode (Roll) , Normal Axis 的叫做 SwingMode1 , Binormal Axis 称之为 SwingMode2.
在 KUKA LBR3 当中, 每个 Joint 都只有开放 TwistMode (unlock) , 所以只能绕着 Local axis 旋转.
由下(基座) 一直到最上面(手臂尾端) 分别为 Joint0 ~ Joint 6
想要推倒骨牌, 很简单, 将 Joint0 设定为 120 (先双击 Joint0 , 然后输入 angle : 120 , 再点选 Apply Changes)
然后把 Joint1 设为 280 , 你就会看到下面的画面啰:
那要怎么写 VPL 来控制刚刚的动作 ?
先将 120 (注意 type 是 double) , 然后丢给 MathFunctions 计算 Radians (因为 GenericArticulatedArm 只吃这种, 型态还要 float!)
所以再转成 float , 丢给 GenericArticulatedArm 的 SetJointTargetPose (JointName = "Joint0"), 同时在数据产生时设定 Timer (我设定为 1000 ms)
之后 timer 的 TimerComplete 发生通知时, 改丢 280 的 Radian 给 GenericArticulatedArm 的 SetJointTargetPose (JointName = "Joint1").
而 SetJointTargetPose 的其他参数设定如下:
主要是设定 TargetOrientation 以及 JointName, 注意 TargetOrientation 的 Axis 只能是 x = 1, y = 0, z = 0,
因为 KAKU LBR3 的每个 Joint 只有 TwistMode 可以旋转 , 所以只能 x 有值 (当然是 1, 如果你设定其他值, Angle 就不是这样计算了)
让我们继续一下章教程:
《Robotics Studio学习教程:第二十四天——DSS System Services》