VREP(Coppeliarobotics)仿真介绍

本文介绍了仿真器如何使用中间状态推进模拟,并详细阐述了实时仿真的工作流程。主要内容包括模拟循环、仿真速度控制及调整、以及仿真时间步长的影响。在非实时仿真中,速度取决于仿真时间和渲染通道;而在实时仿真中,速度受实时乘法系数和时间步长制约。文章还展示了如何在代码中处理仿真循环,并提供了调整仿真速度的工具栏按钮的说明。
  1. 仿真介绍

在内部,模拟器将使用额外的中间状态,以便正确地通知脚本或程序接下来会发生什么。 以下状态图说明了模拟器的内部状态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MAuVTywH-1638620486660)(F:\0_毕设相关\VREP\typora图片\仿真状态流程图.png)]

Simulation Loop(仿真循环)

模拟器通过以恒定时间步长推进模拟时间来运行。 下图说明了主要的模拟循环:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-igcjLcM1-1638620486662)(F:\0_毕设相关\VREP\typora图片\仿真循环.png)]

通过尝试使仿真时间与实时同步来支持实时仿真:

在这里插入图片描述

以下代表一个非常简化的主要客户端应用程序(为了清晰起见,已省略消息、插件处理和其他细节):

void initializationCallback
{    
    // do some initialization here
}

void loopCallback
{    
    if ( (simGetSimulationState()&sim_simulation_advancing)!=0 )    
    {        
        if ( (simGetRealTimeSimulation()!=1)||(simIsRealTimeSimulationStepNeeded()==1) ) 
        {            
            if ((simHandleMainScript()&sim_script_main_script_not_called)==0)                		  		simAdvanceSimulationByOneStep();        
        }    
    }
}
void deinitializationCallback
{    
    // do some clean-up here
}

根据仿真的复杂性、计算机的性能和 simulation settings,实时仿真可能并不总是可行

Simulation Speed(仿真速度)

在非实时仿真中,仿真速度(即感知速度)主要取决于两个因素:仿真时间步长(simulation time step)和一次渲染通道的模拟通道数(有关更多详细信息,请参阅仿真对话框)。 在实时仿真的情况下,仿真速度主要取决于实时乘法系数,还取决于一定程度的仿真时间步长(仿真时间步长过小可能与实时性不兼容)。 由于计算机的计算能力有限而导致仿真的特征)。 在仿真过程中,可以使用以下工具栏按钮调整模拟速度:

在这里插入图片描述

以某种方式调整仿真速度,以便从不增加初始模拟时间步长(因为这可能会导致例如破坏机制)。 下面两张图说明了仿真速度调节机制:

在这里插入图片描述

默认情况下,每个仿真周期由以下顺序操作组成:

  • 执行主脚本(main script)
  • 渲染场景
  1. 仿真时间设置对话框

  1. 点击[菜单栏–>Simulation–>Simulation settings]即可调出仿真对话框

在这里插入图片描述

  • Time step:即仿真时间步长。主脚本每执行一次,仿真时间增加一个仿真时间步长。使用大仿真步长会加快仿真速度但同时也不准确/不稳定,当然使用小步长会实现更精确的模拟但会花费更长时间。因此建议默认步长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值