待整理的杂项内容:修订间差异
无编辑摘要 |
无编辑摘要 |
||
| (未显示同一用户的7个中间版本) | |||
| 第1行: | 第1行: | ||
=== Simple === | === Simple === | ||
Simple现在允许多个小车可以发到互相冲突的终点,只要指定一个Escape路径。该Escape路线不会执行,只是用于告诉交管至少保留哪条路径来保证场景不会卡死。使用方法:carprogram的. | '''逃逸功能:''' | ||
Simple现在允许多个小车可以发到互相冲突的终点,只要指定一个Escape路径。该Escape路线不会执行,只是用于告诉交管至少保留哪条路径来保证场景不会卡死。使用方法:carprogram的.Forecast方法增加了一个参数,可以传入EscapePlan。 | |||
注意:这个escapeplan只是用于交管计算,内核并不会真的执行这个plan。如果遇到小车必须执行逃逸路径的情况(比如巷道外车辆等待巷道内停留的车辆离开巷道,此时巷道外车辆的tcstat状态会是Escape[xx...]),那么需要由业务下发实际任务。按照设计理念,内核只告诉业务某个车应该走(挡路了),具体怎么走需要业务决定。 | |||
[[文件:E67a478ac2900cd6b7ab025ee445c9d9 .png|无|缩略图|代码示例]] | [[文件:E67a478ac2900cd6b7ab025ee445c9d9 .png|无|缩略图|代码示例]] | ||
此外小车调用AbstractCar.Reset方法时,也可以给一个escape路径(escape可选参数)。这样可以防止其他车因为不知道该小车后续如何运行而把刚初始化的小车堵死。举个例子而言:刚初始化的小车A在长巷道内,另外一台车B要进入巷道更深的地方。希望小车A初始化后立刻出来取货,那么应该给小车A附加一个escape路径去任意一个取货点,这样初始化后,即便上层业务还没有下发取货指令,B车也不会提前进入巷道导致A车堵死在巷道里。 | 此外小车调用AbstractCar.Reset方法时,也可以给一个escape路径(escape可选参数)。这样可以防止其他车因为不知道该小车后续如何运行而把刚初始化的小车堵死。举个例子而言:刚初始化的小车A在长巷道内,另外一台车B要进入巷道更深的地方。希望小车A初始化后立刻出来取货,那么应该给小车A附加一个escape路径去任意一个取货点,这样初始化后,即便上层业务还没有下发取货指令,B车也不会提前进入巷道导致A车堵死在巷道里。 | ||
| 第7行: | 第10行: | ||
交管计算时,会以以下顺序设置站点的计算方式: | 交管计算时,会以以下顺序设置站点的计算方式: | ||
# | # terminal:表示一个停靠终点站;定义为:入站和出站路线绝对不会冲突。该站点只能被一台车占用。一般环线上可以使用(环线不存在交管问题,使用terminal方式配置相对于编程设置escape而言,较为简单) | ||
# sink:表示该站点无视交管通行矩阵中的冲突。(注:若同时具有terminal标记,仍然只能被一台车占用) | # sink:表示该站点无视交管通行矩阵中的冲突。(注:若同时具有terminal标记,仍然只能被一台车占用) | ||
# mustFree:若某台车要占用该站点,那么mustFree里列举的站点必须不被占用。 | # mustFree:若某台车要占用该站点,那么mustFree里列举的站点必须不被占用。 | ||
# mutexes:若某台车要占用该站点,那么所有“包含至少一个相同mutexes数字”的站点都必须不被占用。 | # mutexes:若某台车要占用该站点,那么所有“包含至少一个相同mutexes数字”的站点都必须不被占用。 | ||
# | # carProgram规定的冲突:包络、<s>优先级</s>现在使用“可达性状态”。 | ||
Detour | === Detour === | ||
使用2D激光SLAM算法,首先必须调平雷达!可以使用红外相机调平。 | |||
[[文件:Weixin Image 20231230212150.jpg|缩略图|无|使用红外相机可以看到激光雷达的扫描线]] | |||
定位一定是有延迟的。要求高精度定位时,不光对定位精度要求高,实际上对车体结构、机械、控制的精度同时很高。一般可以将定位数据和轮子编码器数据画在同一个图上进行对比,从而获取延迟数据,这是个常用的分析方法。举例如下: | |||
[[文件: | [[文件:Excel-latency-actual-draw..png|无|缩略图|使用excel图表功能,可以比较轻松地同时分析定位延迟和机械蠕变等信息。]]DetourLite: 现在增加了二次开发功能,可以将插件放入DetourLite下的plugins目录中。DetourLite开启会自动扫描目录插件完成加载。二次开发主要是匹配雷达并使DetourLite独立运行使用。 | ||
=== Medulla === | |||
=== Clumsy === | |||
=== 通用常识 === | |||
雷达发射的开角腔需要涂黑处理。如果不涂黑则会发生两种可能的问题:1:边缘测距精度严重下降,测距偏小;2:发生掠射,车体壁在雷达看来如同镜子。 | |||
AGV实施大量时候需要拍摄现场场景进行分析。拍现场场景的小tip:要横屏拍,要用手机自带的相机和广角,要拍照而不是录像。否则发一个长达1min的镜头缓缓转动的视频,不仅慢,而且抖,纯属浪费时间。 | |||
2025年8月12日 (二) 17:02的最新版本
Simple
逃逸功能:
Simple现在允许多个小车可以发到互相冲突的终点,只要指定一个Escape路径。该Escape路线不会执行,只是用于告诉交管至少保留哪条路径来保证场景不会卡死。使用方法:carprogram的.Forecast方法增加了一个参数,可以传入EscapePlan。 注意:这个escapeplan只是用于交管计算,内核并不会真的执行这个plan。如果遇到小车必须执行逃逸路径的情况(比如巷道外车辆等待巷道内停留的车辆离开巷道,此时巷道外车辆的tcstat状态会是Escape[xx...]),那么需要由业务下发实际任务。按照设计理念,内核只告诉业务某个车应该走(挡路了),具体怎么走需要业务决定。

此外小车调用AbstractCar.Reset方法时,也可以给一个escape路径(escape可选参数)。这样可以防止其他车因为不知道该小车后续如何运行而把刚初始化的小车堵死。举个例子而言:刚初始化的小车A在长巷道内,另外一台车B要进入巷道更深的地方。希望小车A初始化后立刻出来取货,那么应该给小车A附加一个escape路径去任意一个取货点,这样初始化后,即便上层业务还没有下发取货指令,B车也不会提前进入巷道导致A车堵死在巷道里。
Simple的站点交管方式:
交管计算时,会以以下顺序设置站点的计算方式:
- terminal:表示一个停靠终点站;定义为:入站和出站路线绝对不会冲突。该站点只能被一台车占用。一般环线上可以使用(环线不存在交管问题,使用terminal方式配置相对于编程设置escape而言,较为简单)
- sink:表示该站点无视交管通行矩阵中的冲突。(注:若同时具有terminal标记,仍然只能被一台车占用)
- mustFree:若某台车要占用该站点,那么mustFree里列举的站点必须不被占用。
- mutexes:若某台车要占用该站点,那么所有“包含至少一个相同mutexes数字”的站点都必须不被占用。
- carProgram规定的冲突:包络、
优先级现在使用“可达性状态”。
Detour
使用2D激光SLAM算法,首先必须调平雷达!可以使用红外相机调平。

定位一定是有延迟的。要求高精度定位时,不光对定位精度要求高,实际上对车体结构、机械、控制的精度同时很高。一般可以将定位数据和轮子编码器数据画在同一个图上进行对比,从而获取延迟数据,这是个常用的分析方法。举例如下:

DetourLite: 现在增加了二次开发功能,可以将插件放入DetourLite下的plugins目录中。DetourLite开启会自动扫描目录插件完成加载。二次开发主要是匹配雷达并使DetourLite独立运行使用。
Medulla
Clumsy
通用常识
雷达发射的开角腔需要涂黑处理。如果不涂黑则会发生两种可能的问题:1:边缘测距精度严重下降,测距偏小;2:发生掠射,车体壁在雷达看来如同镜子。
AGV实施大量时候需要拍摄现场场景进行分析。拍现场场景的小tip:要横屏拍,要用手机自带的相机和广角,要拍照而不是录像。否则发一个长达1min的镜头缓缓转动的视频,不仅慢,而且抖,纯属浪费时间。