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力传感器
力传感器不可以直接参与碰撞、挤压等,需要加在两个实体之间,间接测量