V-rep学习笔记:并联机构正逆运动学
专业日语翻译 Solving the FK problem of simple kinematic chains is trivial (just apply the desired joint values to all joints in the chain to obtain the position and orientation of the tip or end effector). However it is less trivial to solve the IK and FK problem for clod mechanisms. 计算串联机构(或开链机构)的运动学正解很简单,但是对于并联机构或者闭链机构(若运动链的各构件构成了⾸末封闭的系统,则称其为闭式运动链)来说运动学正解的计算就⽐较复杂。
In the ca of an FK problem, identify the joints that you want to control (i.e. the joints that are driving the mechanism, the active joints—lect the joint mode different from inver kinematics mode). Then, identify which kinematic chain needs to be clod. Closing will be handled by loop closure constraints in the form of tip-target pairs as shown in following figure:
[Forward Kinematics solving method for clod mechanisms]
Then, t the desired joint values for the active joints and call the inver kinematics functionality to handle loop closure constraints. (the default main script handles all IK groups that are not marked as explicit handling). Following example shows some additional functionality that can be ud to solve complicated kinematic problems:
[Inver kinematics task]zai
Most of the time there are veral different ways of solving the IK or FK of a mechanism, and it is always worth considering various alternatives before implementing the most complicated one!
参考V-REP_PRO_EDU\scenes\ik_fk_simple_中的例⼦,实现了闭链机构的运动学正解与逆解:
根据这个例⼦我们来搭建⼀个平⾏四边形机构。构建树形层级结构:以frame作为机座,然后将运动链上的节点依次串联起来,最后将target和tip连接起来构成闭环(loop closure)。target和tip的类型设置为IK,tip-target,然后在Calculation Modules的IK选项卡中添加IK group,并将其设为显式处理(Explicit handling):
[模型结构]
[IK设置]
草莓的英文
给第⼀个关节(主动控制关节。其它关节从动但要设为IK模式,⽽不是passive模式)施加⼀个正弦规律的往复摆动,可以看出机构能跟着⼀起运动⽽不散开。添加Graph记录末端关节转⾓和运动链上倒数第⼆个关节的转⾓,可以看出末端关节转⾓为0且始终保持不变(其实这⾥末端的Joint 并没有什么作⽤,因为在IK的计算下tip和target已经能重合。⽐如上⾯官⽅的那个例⼦中最后⼀根杆L5就没有接Joint⽽是直接连着tip)。
虚拟语气专项练习
代码如下,在设置主动关节⾓度后可以调⽤simHandleIkGroup函数来计算IK,使机构保持闭环:江西英语三级成绩查询
四级查询时间
if (sim_call_type==sim_childscriptcall_initialization) then
运动员代表发言
ikGroup=simGetIkGroupHandle('ik')
tipDummy=simGetObjectHandle('tip')
motor=simGetObjectHandle('Revolute_joint0')
reviled-- t the motor joint into ik mode
simSetJointMode(motor,sim_jointmode_ik,0)
-- clo the mechanism (if it was open)
simHandleIkGroup(ikGroup)
end
if (sim_call_type==sim_childscriptcall_actuation) then
-- First t the motor joint into passive mode
国庆 英语
simSetJointMode(motor,sim_jointmode_passive,0)buddy是什么意思
-
- Set the desired joint angle
local angle=20*math.pi/180*math.sin(math.pi*simGetSimulationTime())
simSetJointPosition(motor, angle)
-- Compute
simHandleIkGroup(ikGroup)
end
注意使⽤⼏何约束求解器GCS也能实现类似的功能,只是相⽐IK存在着⼀些差异:The geometric constraint solver is slower and less preci at solving kinematic problems, but might be easier and more intuitive to u. Moreover, it allows interacting with a mechanism in a more flexible way than the inver kinematics calculation module.
下⾯场景中可以拖拽机构上的任意杆件来直观地控制其运动。这⾥使⽤的是Geometric Constraint Solver(注意要设置好General damping 参数,否则可能出现拖拽时机构不动、动的很迟缓或者约束broken的现象)
参考: