机器人仿真软件 V-REP学习记录(三) -- Demo(1~6)笔记


本案例主要讲解多自由度机械臂的逆运动学,在开始之前先看一下,scenes/ik_fk_simple_examples.这些案例
第一类案例:1~~6

预习–案例

demo1 -singleIkGroupWithSingleIkElement-undamped(单关节逆运动学 - 无阻尼)

  1. 功能:双关节机械臂将执行器末端从A(绿色)移动到B(红色),采用逆运动学算法
  2. 说明:
  • 如果B点在运动范围内可得出关节角度,并正确移动
  • 如果B点不在运动范围内则会出现不唯一解,运动失常
  1. 演示:在这里插入图片描述
  2. 代码
初始化
function sysCall_init()
  
    ui=simGetUIHandle('UI')
    --不明白这里的‘ik’在哪里设置的
    ik=sim.getIkGroupHandle('ik')
    print(ik) -- 这里打印输出2030003,就是Handle编号
end
等待动作
function sysCall_actuation()
    local a=simGetUIEventButton(ui)
    if a==1 then
        sim.handleIkGroup(ik)
    end
end

demo2 -singleIkGroupWithSingleIkElement-damped(单关节逆运动学 - 有阻尼)

  1. 功能:实现和demo1一样的功能,但是解算添加了最小二乘法的解法
  2. 说明:
  • 如果B点在范围内,则两种解法效果一致
  • 如果B点在范围外,逆运动学解法不稳定,而最小二乘法可得出稳定解
  • PS:这里将两种方法做了比较
  1. 代码:备注了疑问,找不到按钮设置
function sysCall_init()
        
    ui=simGetUIHandle('UI')--点击按钮1使用逆运动学解算
    ik=sim.getIkGroupHandle('ik')
    这个按钮不知道如何对应上去的
    uiDamped=simGetUIHandle('UI_damped') --点击按钮2使用二乘法解算
    ikDamped=sim.getIkGroupHandle('ik_damped')
    
end

function sysCall_actuation()
	解法1
    local a=simGetUIEventButton(ui)
    if a==1 then
        sim.handleIkGroup(ik)
    end
    	解法2
    a=simGetUIEventButton(uiDamped)
    if a==1 then
        sim.handleIkGroup(ikDamped)
    end
end

demo 3-twoIkGroupsWithEachOneIkElement-resolutionOrderIsNotRelevant

  1. 功能:两组机械臂分别控制
  2. 说明:就是两个demo1拼到了一起
  3. 演示:在这里插入图片描述
  4. 代码:问题依旧如上
第一套线程
function sysCall_init()
        
    ui=simGetUIHandle('UI_1')
    ik=sim.getIkGroupHandle('ik_1')
    
end
第二套线程同第一套,标号为2

demo4-twoIkGroupsWithEachOneIkElement-resolutionOrderIsRelevant

  1. 功能:依旧是跟随
  2. 说明:实际还是两部分,只是一个会是另一个的随动
  3. 演示:依次点击按键1,2点击前
    在这里插入图片描述
  4. 代码:基本和demo3一样
function sysCall_init()
        
    ui1=simGetUIHandle('UI_1')
    ik1=sim.getIkGroupHandle('ik_1')
    ui2=simGetUIHandle('UI_2')
    ik2=sim.getIkGroupHandle('ik_2')
    
end
function sysCall_actuation()
    local a=s的GetUIEventButton(ui1)
    if a==1 then
        sim.handleIkGroup(ik1)
    end
    a=simGetUIEventButton(ui2)
    if a==1 then
        sim.handleIkGroup(ik2)
    end
end

demo5-singleIkGroupWithTwoIkElements

  1. 功能:实现三种运动方式,1,2各自单独运动。1,2一起运动
  2. 说明:
  • 按键1,右边移动
  • 按键2,左边移动
  • 按键3,左右分别移动
  1. 演示:在这里插入图片描述
    e在这里插入图片描述
  2. 代码:基本同上
自行脑补,基本同上

demo6-singleIkGroupWithTwoIkElements-weightedAndDampedResolution

  1. 功能:目标点不在范围内的处理方式
    原状态:
    在这里插入图片描述
    向右:
    在这里插入图片描述向左:
    在这里插入图片描述
    两边:
    在这里插入图片描述
  2. 代码基本一致

小结

这部分讲解了组和和元素的关系和逆运动学控制方式,代码控制方式
重点函数

  1. 关于逆运动学
  • ikGroup=sim.getIkGroupHandle(‘ik’) – [取handle]
  • sim.setIkElementProperties(ikGroup,tipDummy,0) – [设置组参数]
  • sim.handleIkGroup(ikGroup) – [逆运动计算]
  1. 关于电机
  • motorJoint1=sim.getObjectHandle(‘fk_motor1’) – [取得电机handle]
  • sim.setJointMode(motorJoint1,sim.jointmode_passive,0) – [设置电机模式]
  • angle=sim.getJointPosition(motorJoint1) – [读取电机角度]
  • sim.setJointMode(motorJoint1,sim.jointmode_ik,0) – [设置电机角度]

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值