本次学习过程基本按照 https://www.jianshu.com/p/b349e5c557c0 进行
V-rep简单介绍(整理)
1、
Vrep是一款动力学仿真软件,主要定位于机器人仿真建模领域,可以利用内嵌脚本、ROS节点、远程API客户端等实现分布式的控制结构,是非常理想的机器人仿真建模的工具。控制器可以采用C/C++, Python, Java, Lua, Matlab, Octave or Urbi等语言实现。目前大家可能更熟知的是Adams这款建模软件,的确Adams有很多的参考资料,而且国内推广的比较好,但是如果你稍微了解一下Vrep的话,就会深深地被他的亲和的画面和灵活的结构所吸引,再也不想回首学习adams的痛苦经历了。在这里隆重的向大家介绍Vrep这款软件,后续我将将我的一些学习心得逐渐整理出来,让大家能够快速入门。(from monkey61)
2、
V-REP(Virtual Robot Experimentation Platform),是全球领先的机器人及模拟自动化软件平台。V-REP让使用者可以模拟整个机器人系统或其子系统(如感测器或机械结构),通过详尽的应用程序接口(API),可以轻易的整合机器人的各项功能。V-REP可以被使用在远程监控、硬件控制、快速原型验证、控制算法开发与参数调整、安全性检查、机器人教学、工厂自动化模拟及产品展示等各种领域。
之前用过多体动力学仿真软件ADAMS,现在再来学V-rep感觉很不习惯,界面和操作方式都有很大的差异,毕竟ADAMS是一个成熟的商业软件而V-rep只是一个开源软件。但V-rep好在编程很方便,支持多种编程语言(lua,python,C/C++,MATLAB,java等),还可以和ROS连接。国内的V-rep用户应该不是很多,网上关于V-rep的中文资料也几乎为零,而官方的教程对我这种菜鸟来说又太过高级。所以先自己慢慢摸索吧,下面将自己的学习过程记录下来,以免以后忘记...(xxxx已失联:http://home.cnblogs.com/u/21207-iHome)
3、。V-REP是机器人仿真界的“瑞士军刀”,其功能之丰富可以满足绝大多数仿真需求。https://zhuanlan.zhihu.com/p/32788790 有较为详细的背景介绍
- 模型搭建-一个简单的移动小车
小车的万向轮即通过添add一个球体sphere,两个驱动后轮add两个cylinder,注意动力学参数!!
2、贴纸通过三维建模软件导入,依附于实体(操作方法见链接)
3、车体、万向轮、后驱动轮的刚性连接其实也是一种“依附”,将他们作为车体的子部分就行--即实现了刚性连接
4、用脚本控制小车运动,Vrep中是Lua语言
下面是一个简单设置后轮速度驱动小车的子脚本,包含GUI设置运动参数,基本方式是
下面是代码,理解下吧:
xml = [[
<ui closeable="true" onclose="closeEventHandler" resizable="true">
<label text="Car control pan" wordwrap="true" />
<group>
<label text="Right wheel speed:" wordwrap="true" />
<spinbox minimum="-30" maximum="30" onchange = "Right_speed_set" />
<label text="Left wheel speed:0" wordwrap="true" />
<spinbox minimum="-30" maximum="30" onchange = "Left_speed_set" />
<stretch />
</group>
<group>
<button text="Start move" onclick = "Start_move" />
<button text="Stop move" onclick = "Stop_move" />
<stretch />
</group>
</ui>
]]
function Start_move(h)
Start_flag = true
end
function Stop_move(h)
Start_flag = false
end
function Right_speed_set(ui,id,newVal)
Right_vel = newVal
end
function Left_speed_set(ui,id,newVal)
Left_vel = newVal
end
function closeEventHandler(h)
simAddStatusbarMessage('Window '..h..' is closing...')
simExtCustomUI_hide(h)
end
if (sim_call_type==sim_childscriptcall_initialization) then
MotorHandle_Left=simGetObjectHandle('left_motor')
MotorHandle_Right=simGetObjectHandle('right_motor')
ui=simExtCustomUI_create(xml)
Left_vel = 0
Right_vel = 0
Start_flag = false
end
if (sim_call_type==sim_childscriptcall_actuation) then
if Start_flag then
simSetJointTargetVelocity(MotorHandle_Left,Left_vel)
simSetJointTargetVelocity(MotorHandle_Right,Right_vel)
else
simSetJointTargetVelocity(MotorHandle_Left,0)
simSetJointTargetVelocity(MotorHandle_Right,0)
end
end
if (sim_call_type==sim_childscriptcall_sensing) then
end
if (sim_call_type==sim_childscriptcall_cleanup) then
simExtCustomUI_destroy(ui)
end
还有一些显示曲线的方法gragh的
自学状态机可以学习Matlab下的Stateflow