V-rep逆运动学(IK)8-computingJointAnglesForRandomP。。。

更新时间:2023-06-15 12:22:27 阅读: 评论:0

V-rep 逆运动学(IK )8-computingJointAnglesForRandomP 。。。V-rep 逆运动学(IK)8-computingJointAnglesForRandomPos 代码⾃学
⽩⾊机器⼈(即通过封装好的simExtIK插件进⾏逆运动学计算)的代码
代码功能:⽤代码实现dummy的创建、ik组和元素的创建及参数设置
iveco
(//注释部分的代码不能放在vrep⾥直接运⾏,这⾥只做解释使⽤)function sysCall_init () //⼀共六个关节,通过句柄获得 //这⾥的IRB4600_joint1、……、IRB4600_joint6与场景层次结构⾥的名称⼀⼀对应 //把这些句柄分别赋给simJointHandles[1]……simJointHandles[6]    simJointHandles ={}    for  i =1,6,1 do        simJointHandles [i ]=sim .getObjectHandle ('IRB4600_joint'..i )    end    //机器⼈末端的Dummy 赋给simTip ,机器⼈的基座赋给simBa    simTip =sim .getObjectHandle ('IRB4600_IkTip')    simBa =sim .getObjectHandle ('IRB4600')    //规划的机器⼈末端⽬标位置⼀共有四个Dummy ,分别是testTarget1……testTarget4    //把这些末端位置句柄分别赋给target[1]…target[4]    targets ={sim .getObjectHandle ('testTarget1'),sim .getObjectHandle ('testTarget2'),sim .getObjectHandle ('testTarget3'),sim .getObjectHandle ('testTarget4'    //机器⼈的⽬标位置,初始化为0,cnt1在0-3之间循环    cnt1=0    cnt2=0 //    //现在基于机器⼈的运动学在IK 插件环境中建⽴⼀个运动学链和2个IK 组(⽆阻尼和阻尼)    ikJointHandles ={}    //创建⼀个IK 环境ikEnv    ikEnv =simIK .createEnvironment ()    //在IK
环境中创建⼀个Dummy ,命名为ikBa    local ikBa =simIK .createDummy (ikEnv )    //把ikBa 设置成与CoppeliaSim 中的simBa 对应的相同姿势    simIK .tObjectMatrix (ikEnv ,ikBa ,-1,sim .getObjectMatrix (simBa ,-1))    //建⽴⽗基座的Dummy ,当前与ikBa 相同    local parent =ikBa    //循环所有simJointHandles 关节,simJointHandles[1]-simJointHandles[6]    for  i =1,#simJointHandles ,1 do      //在IK 环境中创建⼀个旋转关节ikJointHandles[i]        ikJointHandles [i ]=simIK .createJoint (ikEnv ,simIK .jointtype_revolute )        //把该关节ikJointHandles[i]设置成IK 模式        simIK .tJointMode (ikEnv ,ikJointHandles [i ],simIK .jointmode_ik )        //获得关节simJointHandles[i]的关节限制        local cyclic ,interv =sim .getJointInterval (simJointHandles [i ])        //为ikJointHandles[i]设置上述获得的与关节simJointHandles[i]相同的关节限制        simIK .tJointInterval (ikEnv ,ikJointHandles [i ],cyclic ,interv )        //为ikJointHandles[i]设置与关节simJointHandles[i]相同的关节位置        simIK .tJointPosition (ikEnv ,ikJointHandles [i ],sim .getJointPosition (simJointHandles [i ]))        //为ikJointHandles[i]设置与关节simJointHandles[i]相同的关节姿态
1
2
3
4
one day more5
6
trine7
8
英语作文夏令营
9
成人高考准考证怎么打印10
11
12
13
14
15
maybe16
17
18
19
20
21
22
23
24
25
torr
26
27
28
drunk是什么意思
29
30
31
32
33
34
35
36
37
cyril38
39
40
41
//为ikJointHandles[i]设置与关节simJointHandles[i]相同的关节姿态        simIK .tObjectMatrix (ikEnv ,ikJointHandles [i ],-1,sim .getObjectMatrix (simJointHandles [i ],-1))        //设置相应的⽗元素(第⼀个关节的⽗节点为基座)        simIK .tObjectParent (ikEnv ,ikJointHandles [i ],parent ,true )        //更新相应的⽗元素(第⼆个关节的⽗节点为第⼀个关节)        parent =ikJointHandles [i ]    end    //在IK 环境中创建末端tip Dummy ,命名为ikTip    ikTip =simIK .createDummy (ikEnv )    //把ikTip 设置成与CoppeliaSim 中的simTip 对应的相同姿势    simIK .tObjectMatrix (ikEnv ,ikTip ,-1,sim .getObjectMatrix (simTip ,-1))    //把ikTip 连接到运动链的parent 上,此时parent 为ikJointHandles[6]    simIK .tObjectParent (ikEnv ,ikTip ,parent ,true )    //在IK 环境中创建⽬标Dummy ,命名为ikTarget    ikTarget =simIK .createDummy (ikEnv )    //将ikTarget 设置成与CoppeliaSim 中的simTip 对
应的相同姿势    simIK .tObjectMatrix (ikEnv ,ikTarget ,-1,sim .getObjectMatrix (simTip ,-1))    //连接两个Dummy,ikTip 和ikTarget    simIK .tLinkedDummy (ikEnv ,ikTip ,ikTarget )    //创建⼀个IK 组,命名为ikGroup    ikGroup =simIK .createIkGroup (ikEnv )    //把ikGroup 的分辨率(计算⽅法)设置为undamped ,即对应于界⾯设置中的Pudo inver ,参数0为Damping 的值,参数3为maxIterations 的值    simIK .tIkGroupCalculation (ikEnv ,ikGroup ,simIK .method_pudo_inver ,0,3)    //向ikGroup 中添加⼀个IK 元素---ikTip    local ikElementHandle =simIK .addIkElement (ikEnv ,ikGroup ,ikTip )    //指定IK 元素ikTip 的基座为ikBa    simIK .tIkElementBa (ikEnv ,ikGroup ,ikElementHandle ,ikBa )    //指定IK 元素ikTip 的约束条件    //其中,最后⼀项值是约束条件    //straint_x, straint_y, straint_z, straint_alpha_beta, straint_gamma    //其中,straint_gamma 只能在straint_alpha_beta 设置时设置    //为了⽅便起见,还有    //straint_straint_straint_straint_z    //straint_straint_alpha_straint_gamma    //straint_straint_straint_orientation.    simIK .tIkElementConstraints (ikEnv ,ikGroup ,ikElementHandle ,simIK .constraint_po )    //设置IK 元素ikTip 所需的精度,最后⼀项第⼀个值是linear 精度,第⼆个值是angular 精度    simIK .tIkElementPrecision (ikEnv ,ikGroup ,ikElementHandle ,{0.00005,0.1*math .pi /180})end //函数ap
加勒比海盗5下载plyJoints ,将joints 的每个值设置为jointHandles 的关节位置applyJoints =function (jointHandles ,joints )    for  i =1,#jointHandles ,1 do        sim .tJointPosition (jointHandles [i ],joints [i ])    end end //在这⾥你可以检查碰撞和其他测试。如果配置有效,返回true function configurationValidationCallback (config )    sim .addLog (sim .verbosity_scriptinfos ,"Hello from validation callback")    return  true end function sysCall_actuation () //定义当前的⽬标dummyHandle 为targets[cnt1+1]    local dummyHandle =targets [cnt1+1]    //获得dummyHandle 的姿态m    local m =sim .getObjectMatrix (dummyHandle ,-1)    //设置ikTarget 的姿态为m    simIK .tObjectMatrix (ikEnv ,ikTarget ,-1,m )        //搜索⼀个姿态配置,最⼤100毫秒    local startTime =sim .getSystemTimeInMs (-1)    while sim .getSystemTimeInMs (startTime )<100 do        local validationCB =''        //如果你需要对找到的配置执⾏额外的检查,请取消下⾯的注释:
4142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106

本文发布于:2023-06-15 12:22:27,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/960211.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设置   关节   元素   代码   创建   配置   运动学   姿态
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图