使用手册 - Simple:包络如何定义:修订间差异

来自MDCS wiki
跳到导航 跳到搜索
无编辑摘要
无编辑摘要
 
(未显示2个用户的2个中间版本)
第1行: 第1行:
Simple可以根据底盘、路径、运行状态等信息,实时绘制出AGV在运行路径上即将占用的物理空间,得到AGV运行的包络。内核保证车辆运行时包络不冲突。在以下两种场景使用包络尤其有效:
# 车尺寸大于站点间隔,站点之间冲突配置非常复杂。
# 车在载货/空车时尺寸不同,且会造成站点冲突。
== 1.为什么要使用包络 ==
== 1.为什么要使用包络 ==
举一个简单的例子,如下图所示,两辆对向行驶的车辆,要从窄通道交汇而过。
举一个简单的例子,如下图所示,两辆对向行驶的车辆,要从窄通道交汇而过。
第16行: 第21行:
所以包络可以理解为车辆的“轮廓”,“锁点”没有冲突不代表“轮廓”没有冲突。
所以包络可以理解为车辆的“轮廓”,“锁点”没有冲突不代表“轮廓”没有冲突。


== 如何定义包络 ==
== 2.如何定义包络 ==
 
=== 2.1常规状态下包络定义 ===
首先需要定义车辆常规状态下的包络,需要在simple工程下的xxxxCar.cs中进行定义。如下图所示,使用<code>[EnveplopConfig(centerX = 0,centerY = 0,lengthX = 1162,lengthY = 783]</code>进行常规包络的定义,此代码的含义为,车体包络为“以车体坐标系(0,0)为中心,x方向长度为lengthX,y方向长度为lengthY”。
首先需要定义车辆常规状态下的包络,需要在simple工程下的xxxxCar.cs中进行定义。如下图所示,使用<code>[EnveplopConfig(centerX = 0,centerY = 0,lengthX = 1162,lengthY = 783]</code>进行常规包络的定义,此代码的含义为,车体包络为“以车体坐标系(0,0)为中心,x方向长度为lengthX,y方向长度为lengthY”。


[[文件:C26d8e9b23099a3a8eba0326ae778d1.png|无框|600x600像素]]
[[文件:C26d8e9b23099a3a8eba0326ae778d1.png|无框|600x600像素]]


=== 2.2特殊情况下包络定义 ===
在定义完常规包络后,还可以定义小车在不同情况下的包络。如下图所示。创建一个名为<code>RotateSiteEnvelop</code>的类,代表是在站点旋转时的包络,继承<code>SiteEnvelopDefinition</code>类。首先覆写<code>Use()</code>方法,为true代表启用此包络。然后覆写<code>Prompt()</code>方法,此方法中定义了旋转时的包络。当进行<code>Fetch()</code>动作时,将包络修改为1550*1120大小,进行<code>Put()</code>动作时,将包络修改为1160*783大小。
在定义完常规包络后,还可以定义小车在不同情况下的包络。如下图所示。创建一个名为<code>RotateSiteEnvelop</code>的类,代表是在站点旋转时的包络,继承<code>SiteEnvelopDefinition</code>类。首先覆写<code>Use()</code>方法,为true代表启用此包络。然后覆写<code>Prompt()</code>方法,此方法中定义了旋转时的包络。当进行<code>Fetch()</code>动作时,将包络修改为1550*1120大小,进行<code>Put()</code>动作时,将包络修改为1160*783大小。


[[文件:96156e1740ea9b85f26f6075d3599c5.png|无框|600x600像素]]
[[文件:96156e1740ea9b85f26f6075d3599c5.png|无框|600x600像素]]


== 如何启用包络 ==
==== 2.3 根据路径或点的信息判断车体运动并绘制包络 ====
Simple通过可编程包络来适应全部种类的移动机器人包络定义。如可以定义某个路线上车实际的运行方式(主要使用moveTo函数),从而根据实际情况生成包络。
 
... TODO...
 
== 3.如何启用包络 ==
在simple中,点击项目属性,将属性中的<code>useEnvelop</code>改为true,即开启了包络。
在simple中,点击项目属性,将属性中的<code>useEnvelop</code>改为true,即开启了包络。


[[文件:54f7e7a808524b994aeba527ace9eab.png|无框|600x600像素]]
[[文件:54f7e7a808524b994aeba527ace9eab.png|无框|600x600像素]]

2024年7月9日 (二) 12:18的最新版本

Simple可以根据底盘、路径、运行状态等信息,实时绘制出AGV在运行路径上即将占用的物理空间,得到AGV运行的包络。内核保证车辆运行时包络不冲突。在以下两种场景使用包络尤其有效:

  1. 车尺寸大于站点间隔,站点之间冲突配置非常复杂。
  2. 车在载货/空车时尺寸不同,且会造成站点冲突。

1.为什么要使用包络

举一个简单的例子,如下图所示,两辆对向行驶的车辆,要从窄通道交汇而过。

如果不使用包络,两辆车会同时进入窄通道,虽然在“锁点”上,两辆车没有冲突,但是对于实际轮廓,两辆车是冲突的。

如果使用包络,可以看到,右侧车辆要锁的点,实际上是在左侧车辆的包络中的,此时不会允许右侧车辆锁点,直到包络间没有冲突,右侧车辆才可以通过。

所以包络可以理解为车辆的“轮廓”,“锁点”没有冲突不代表“轮廓”没有冲突。

2.如何定义包络

2.1常规状态下包络定义

首先需要定义车辆常规状态下的包络,需要在simple工程下的xxxxCar.cs中进行定义。如下图所示,使用[EnveplopConfig(centerX = 0,centerY = 0,lengthX = 1162,lengthY = 783]进行常规包络的定义,此代码的含义为,车体包络为“以车体坐标系(0,0)为中心,x方向长度为lengthX,y方向长度为lengthY”。

2.2特殊情况下包络定义

在定义完常规包络后,还可以定义小车在不同情况下的包络。如下图所示。创建一个名为RotateSiteEnvelop的类,代表是在站点旋转时的包络,继承SiteEnvelopDefinition类。首先覆写Use()方法,为true代表启用此包络。然后覆写Prompt()方法,此方法中定义了旋转时的包络。当进行Fetch()动作时,将包络修改为1550*1120大小,进行Put()动作时,将包络修改为1160*783大小。

2.3 根据路径或点的信息判断车体运动并绘制包络

Simple通过可编程包络来适应全部种类的移动机器人包络定义。如可以定义某个路线上车实际的运行方式(主要使用moveTo函数),从而根据实际情况生成包络。

... TODO...

3.如何启用包络

在simple中,点击项目属性,将属性中的useEnvelop改为true,即开启了包络。