CoppeliaSim(Vrep)动力学仿真入门设置

这篇博客介绍了CoppeliaSim 4.2中如何添加数据流、创建实体以及设置实体的碰撞属性。实体包括碰撞实体和可视实体,可以通过SW导出URDF文件来创建。脚本部分展示了使用Lua进行简单仿真的例子,用于控制关节运动。此外,还讲解了力传感器的使用,强调其不能直接参与碰撞,需要放置于两个实体之间进行间接测量。
摘要由CSDN通过智能技术生成

 1-图表

vrep4.2之后不能直接添加数据流,需要从脚本添加,或者修改配置文件,设置老版本界面,参考CoppeliaSim 4.2 (V-REP) 添加3D轨迹_长安刘少的博客-CSDN博客

2-实体

包括碰撞实体和可视实体两部分,碰撞实体建议自行添加,降低计算量。可视实体可以采用sw导出的实体,可以采用sw导出urdf文件的形式,参考robot-sw导出urdf_WHC763的博客-CSDN博客

实体需要设置的属性

 

mask 掩码设置规则:

通过勾选设置不同的掩码组合,使物体具有不同的碰撞响应属性,掩码有任意一组以上的掩码重合,则两个物体会发生碰撞,否则不会

例:

物体A掩码1勾选,物体B掩码1勾选,物体AB响应碰撞

物体A掩码1勾选,物体B掩码1不勾选,物体AB不响应碰撞

local respondable mask:本地碰撞掩码,仅在组件内起效

global respondable mask:全局碰撞掩码,全局有效

例:

物体A在物体B上,物体B在物体C上

A的local 1不勾选,global 1勾选

B的local 1不勾选,global 1不勾选

C除local 1外全勾选

则A穿过B落到C上,B穿过C

注:组件内物体之间global属性不起作用

3-脚本

简单仿真,采用lua脚本比较简便,lua语法参考Lua 基本语法 | 菜鸟教程

function sysCall_init()
    corout=coroutine.create(coroutineMain)
end

function sysCall_actuation()
    if coroutine.status(corout)~='dead' then
        local ok,errorMsg=coroutine.resume(corout)
        if errorMsg then
            error(debug.traceback(corout,errorMsg),2)
        end
    end
end

function sysCall_cleanup()
    -- do some clean-up here
end
-- *****************以上可不动******************
function coroutineMain()
-- *********获取对象句柄handle,可以获取整个场景scence里面的对象句柄
    jtw=sim.getObjectHandle('tw')   --tw为场景scence中关节名,jtw为句柄名,lua函数中大部分使用句柄名,以下同理
    jbz=sim.getObjectHandle('bz')   --bozhi handle
    jfzc=sim.getObjectHandle('fzc') --qianzhicheng handle
    jbzc=sim.getObjectHandle('bzc') --houzhicheng handle
-- *******变量初始化,lua语法变量不需要设置类型
    sp = 1  --baocha speed
    pobz = 0.4    --bozhi position
    dis = 0.95   --baocha limit position
    pofzc = 0.2 --qianzhicheng position
    pobzc = -0.2 --houzhicheng position
    crack = 1
-- ********设置需要的运动参数,函数使用参考help
    sim.setJointTargetPosition(jbz,pobz)    --bozhi open
    sim.setJointTargetVelocity(jtw,sp)      --baocha go out
    sim.setJointTargetPosition(jfzc,pofzc)  --qianzhicheng go out
    sim.setJointTargetPosition(jbzc,pobzc)  --houzhicheng go out
-- *******执行逻辑
    while true do                           --cycle    
        tpo = sim.getJointPosition(jtw)     --get the position of baocha
        if (tpo > dis) then                     --if baocha get the box, close the bozhi, baocha go back
            sim.setJointTargetPosition(jbz,0.0) 
            sim.setJointTargetVelocity(jtw,-sp)
            crack = -1
        end    
        if ((tpo < 0.45)and(crack == -1)) then                   --if baocha arrive zero point, stop
            sim.setJointTargetPosition(jfzc,0)  --qianzhicheng go back
            
--            sim.setJointTargetPosition(jbzc,0)  --houzhicheng go back
--            print(a)
        end
        if (tpo < -0.01)  then                    --if baocha arrive zero point, stop
            sim.setJointTargetVelocity(jtw,0.0)
            crack = 1
--            sim.setJointTargetPosition(jfzc,0)  --qianzhicheng go back
            sim.setJointMode(jfzc,4,0)
            as = sim.getJointMode(jfzc)
            for i = 0,50 do
            print(as,"+",i)
            end
            
            sim.setJointTargetVelocity(jtw,1)
            print("assdagdhsgzfvdCsd")
            sim.setJointTargetPosition(jbzc,0)  --houzhicheng go back
        end 
    end   
end

4-Dummy

虚拟点,没有质量和大小,具有六轴方向,可用来作为辅助点

5-joint关节

包括旋转关节revolute、直线关节prismatic、球关节spherical,不同关节具有不同的关节模式,参考vrep关节类型和运行_weixin_45650561的博客-CSDN博客_vrep 关节位置

关节也是对象,具有方向和位置,注意调整

6-7-Forcesensor力传感器

力传感器不可以直接参与碰撞、挤压等,需要加在两个实体之间,间接测量

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值