简介:面向轨道交通信号系统课程学习与目标检测入门实践的实验报告文档,围绕车载系统与控制模式实验展开,适合需要完成课程实验、理解CBTC场景下列车运行控制与目标识别应用的学生参考。压缩包内为1个doc文件,约27.52MB,集中呈现实验目的、器材、内容、过程、分析与总结等完整报告结构。文档涵盖区域控制器与车载软件初始化、ATC钥匙接通、RM/CM/AM模式转换、ATS计划下发与运行曲线观察、到站开关车门、提前发车及跳停等实验环节,并在分析部分讨论线路设置、任务下发和不同驾驶模式的操作要点,附有成绩评定标准。资源描述还提到OpenCV图像处理与Anaconda环境配置,可为目标检测在轨道交通场景中的理解提供辅助。目前已有135人学习,适合用作实验报告撰写范本、课程复习与实训对照材料。
1. 一个反直觉的结论:轨道仿真实验里最难的并非算法
跑完那套车载系统与控制模式的仿真实验之后,最让我意外的并非某个目标检测模型有没有收敛,而是一台车要跑起来,背后至少得有三台机器各司其职,还有一串顺序完全不能乱的点按流程。我主要做驾驶台操作,眼看着同组同学因为把「ATC 钥匙接通」和「ATC 初始化」的点击顺序搞反,整套软件直接重启,十几分钟的准备全部归零。这篇内容围绕轨道实验、目标检测实验报告这条线展开,把我真刀真枪跑过的流程、模式转换的判断依据、以及那些只有踩过才知道的坑,拆成能直接照着复现的步骤。如果你正要做车载系统与控制模式实验、要写一份站得住的目标检测实验报告,或者想在 CBTC 条件下搞明白 RM、CM、AM 三种模式到底怎么切,下面的内容能省你不少返工。
2. 先把实验台搭明白:三机协同与软件初始化
2.1 为什么一台车要三台机器
刚进实验室的时候我以为一人一台电脑就够了,结果发现每台列车的完整操作至少要三台计算机设备配合:一台跑区域控制器软件 CBTCZC,一台跑车载软件,还有一台负责计划与运行图相关的操作。这三者的关系不是简单的客户端与服务端,而是各自承担一段状态机——区域控制器管注册与进路,车载管模式与曲线,计划侧管任务下发。任何一端没起来或者状态不对,车就动不了,而且报错往往不在这端显示。
我一般会这么排查:先确认区域控制器 CBTCZC 的初始界面已经正常起来,再看车载软件能不能加车到列车初始位置,最后才看计划侧有没有成功上传运行线。这个顺序不能反,因为注册成功的提示是出现在区域控制器那边的,你盯着车载界面等是等不到的。常见的误区是新手上手就把三台机器全部点一遍,结果状态错位,谁也说不清是哪一步出的问题。
2.2 车载界面的四个分区与各自职责
车载软件最大化之后,界面清晰地分成四块,这个划分直接决定了你操作时眼睛该往哪看:
| 区域 | 位置 | 承担的功能 | 操作时关注什么 |
|---|---|---|---|
| 车载显示界面 | 左上 | 列车位置、线路拓扑 | 红色线段即当前车所在位置 |
| 方向与牵引制动 | 左下 | 方向选择、牵引制动、目标速度 | RM 参数点亮、向前按钮 |
| 运行曲线显示 | 右上 | 站间曲线与进路曲线 | 绿线、黄线是否都已生成 |
| 重要信息显示 | 右下 | 运行过程中的状态信息 | 模式标识、到站提示 |
这张表看着简单,但实际操作用处很大。比如你在切 RM 模式的时候,眼睛要盯的是左下角那个 RM 参数有没有点亮,而不是去看右上的曲线——曲线在 RM 模式下本来就不会完整生成,新手在这里容易误判成失败,然后反复点,最后把状态点乱。
2.3 初始化的标准动作序列
把车加到列车初始位置之后,按顺序点「ATC 钥匙接通」和「ATC 初始化」,区域控制器那边会提示注册成功。这一步是整个实验的地基,顺序错了就是前面说的那种全员重启。从存车线出发和从车辆段、停车场出发的流程还不一样:前者要先在「列车初始位置」里选好位置,注意上下行——向右为上行,反之为下行,选错了后面曲线方向全歪;后者则要等车辆段或者停车场的信号开放,才能以 RM 模式把车开到转换轨。
提示:初始位置的选择里有上下行区分,这一步选错不会立刻报错,但会在后续曲线生成时暴露出来,返工成本很高,点之前先确认方向。
3. 三种控制模式的切换:RM、CM、AM 的判断依据
3.1 RM 模式:进入条件与退出动作
RM 是受限人工模式,本质上是让车在没有完整 ATP 防护的条件下低速移动。实验里的标准进入动作是三步:参数选择里把 RM 点亮,方向按钮里点向前,最后再把 RM 点熄。这个「点亮—操作—点熄」的节奏很容易被忽略,很多同学点完 RM 就直接等车动,结果什么都不发生。
为什么是这个顺序?因为 RM 点亮相当于给系统一个「我要进入受限模式」的请求,方向选择是在这个请求生效期间完成的动作,点熄才是确认提交。理解了这个逻辑,你就不会去死记硬背,而是知道每一步在干什么。常见的失败在于:点熄之后车没动,先别急着重复点击,去看区域控制器那边的信号是否开放,信号没开你再怎么点都没用。
3.2 CM 与 AM:从人工到自动的跃迁
CM 是人工驾驶模式,AM 是自动驾驶模式。实验要求的动作是先切 CM,再切 AM,不能跳步。切 CM 的判断依据是「CM 可用」这个状态出现,出现之后点击才有效;切 AM 则是先点 ATO 点亮,再点 ATO 发车使其点熄。
这里有个我踩过的坑:AM 模式下如果计划时间点还没到,点 ATO 发车是没有任何响应的,界面不会有明显报错,就像点了个寂寞。第一次遇到时我以为是软件卡了,反复点,最后是同学提醒才反应过来是时刻表没到。解决办法是到列车处点击提前发车,然后再重新走一遍 AM 模式,车就正常驶出了。这个「无响应」的设计其实合理,但对新手极不友好,因为没有任何提示。
3.3 两条运行曲线分别代表什么
接收到 ATS 下发的计划之后,运行曲线会显示出来,而且是两条:绿色的是依据计划生成的站间曲线,黄色的是依据进路开放情况生成的运行曲线。这两个颜色不是装饰,它们分别回答两个不同的问题——绿线告诉你「按计划你应该什么时候到」,黄线告诉你「当前进路条件下你实际能怎么跑」。
判断列车是否处于正常状态,我一般看两条线是否都存在且大致贴合。只有绿线没有黄线,说明进路还没开放,这时候切 AM 也跑不起来;黄线明显偏离绿线,往往是进路条件受限或者前车占用的结果。红色线段是车的当前位置,它在曲线上往右移动的过程,就是整个实验最直观的反馈。
4. 从发车到跳停:一次完整运行的可复现流程
4.1 计划上传与任务下发
实验开始要先设计列车运行线并上传当天的运行路线,然后等待发车。这里的关键判断是:计划有没有设置成功,要看列车计划表,而不是看运行图上的线画得漂不漂亮。实验里我们这组用的是 3 号车,线路设置成某两个站之间,仿真环境下可以随意拖拉运行图上两点之间的横坐标距离,这个距离对应的就是两站之间预计的时间。
任务下发是另一个必须单独确认的环节。如果没给本列车下发任务就直接操作驾驶台,列车是不会有运行速度的——这一点我在实验分析里专门写过,因为它太容易被当成软件故障。判断依据很简单:下发成功后,驾驶台和车载侧的状态会同步变化,你在操作驾驶台时能看到速度响应;没下发的话,油门推到底也是零。
4.2 驾驶台操作与到站开关门
驶出列车靠驾驶台操作,这一步要小心谨慎,因为它是整个流程里唯一持续需要人盯着的动作。列车运行到站后,人工点击打开左边车门或者打开右边车门,再点关闭,车门状态变化之后,运行曲线会跟着重新生成,然后重新以 AM 模式操作列车继续运行。
这套开关门的动作看起来是纯操作,实际上它验证的是车门状态与运行授权之间的联动关系。门没关好,车是走不了的。我建议把这个环节当成一次状态检查点:门开、门关、曲线刷新、AM 重新激活,四个动作依次确认,别一口气全点完。
4.3 提前发车与跳停设置的实测效果
我们这组遇到过一个典型情况:两站之间设置的时间点过长,开关车门之后切 AM 模式完全没响应。原因就是前面说的时刻表没到。处理方式是在列车处点击提前发车,然后重新进 AM 模式,车正常驶出。这个操作在真实运营里当然不会这么随意,但在仿真实验里它是理解「计划时间约束」的最好教材。
跳停设置则是另一个方向。我们为了观察列车速度能不能到 80km/h,在列车处设置了跳停,设置结束后列车运行速度几乎很快就逼近了这个值。能跑到这个速度的前提是站间距离够长、行驶时间足够,距离短的话加速段还没走完就到站了。下面这段是我用来对照记录运行状态的思路示意,不是实验软件本身的代码,而是把关键状态点抽出来做成可打印的检查脚本:
# 运行状态检查点记录:把关键动作和预期状态配对,便于实验报告复盘 checkpoints = [ # (动作, 预期状态, 失败时先看哪里) ("加车到初始位置", "车显示在存车线", "上下行是否选对"), ("ATC钥匙接通 + ATC初始化", "区域控制器提示注册成功", "点击顺序是否颠倒"), ("RM点亮-向前-RM点熄", "车载进入RM模式", "区域信号是否开放"), ("切CM", "CM可用状态出现", "RM是否已正确退出"), ("ATO点亮-ATO发车点熄", "进入AM模式并生成曲线", "计划时间点是否已到"), ("到站开门再关门", "运行曲线刷新", "门状态是否闭合"), ] for action, expect, fallback in checkpoints: print(f"动作: {action}") print(f" 预期: {expect}") print(f" 异常先查: {fallback}")这段脚本的价值不在执行,而在于它强制你把「动作—预期—异常先查」三件事写在一起。实验报告里如果只是罗列截图,评阅的人看不出你到底理解了多少;把每个动作对应的预期状态和排查方向写清楚,A 档的实验分析基本就稳了。参数上你可以按自己组的实际情况增删条目,但建议保留 fallback 这一列,它是你复盘时最有用的东西。
4.4 目标检测在这套流程里落在哪
摘要里提到用 OpenCV 和 Anaconda 做目标检测,这个方向在这类轨道实验里通常落在两个位置:一是对车载显示界面或者运行曲线截图做元素识别,验证列车位置、信号状态的自动判读;二是对线路场景图像做列车、信号设备的检测。环境上用 Anaconda 建独立环境装 OpenCV 是最省事的做法,避免和系统里其他 Python 版本打架。
我一般会把检测目标和判断依据先对齐再动手:要检测的是列车位置标识还是信号灯状态?前者关注红色线段的定位精度,后者关注颜色分类的阈值稳定性。如果一上来就堆模型,最后报告里说不清检测结果和实验流程的对应关系,分析部分就会很空。比较务实的做法是先用传统图像处理把阈值和颜色空间调稳,再考虑要不要上检测模型——仿真界面本身是干净渲染的,传统方法往往就够用,报告里也更容易讲清楚每一步为什么这么做。
5. 避坑清单:五条血泪经验
5.1 点击顺序颠倒导致全员重启
现象:点完 ATC 相关按钮后,三台机器的软件同时重启,之前所有状态清零。原因:ATC 钥匙接通和 ATC 初始化的顺序不能搞错,系统对状态机的先后有硬约束。解决:把这两个动作当成一个不可拆分的原子操作,点之前先确认前一步的状态提示已经出现,宁可慢一点也不要抢。
5.2 AM 模式无响应被误判为软件故障
现象:开关门之后切 AM,点 ATO 发车毫无反应,界面也没有报错。原因:计划时间点还没到,系统在等时刻表。解决:先看当前时间与计划时间的差距,确认是提前到站后,在列车处点击提前发车,再重新走 AM 流程。这个坑我踩过一次,之后每次切 AM 前都会先扫一眼计划时间。
5.3 初始位置上下行选错导致曲线方向反了
现象:车能加进去,初始化也成功,但生成的运行曲线方向和预期相反。原因:「列车初始位置」里向右为上行、反之为下行,选错时系统不会拦截。解决:加车之前先确认线路方向,选完之后对照运行图检查曲线走向,发现反了立刻重来,别将错就错往下跑。
5.4 没下发任务就操作驾驶台,速度始终为零
现象:驾驶台操作正常,界面也没异常,但列车就是不走。原因:任务没有下发到本列车。解决:回到计划侧确认任务下发状态,在列车计划表里核实,下发成功后再操作驾驶台。判断依据是驾驶台和车载侧的状态是否同步变化。
5.5 只截界面不记状态,实验报告分析写不深
现象:截图存了一大堆,写分析时却只能描述「如图所示」,评阅标准里实验分析那一栏拿不到高分。原因:操作时没同步记录每个动作的预期状态和实际结果。解决:操作过程中用检查点的方式随手记,把动作、预期、实际、异常原因四栏填上,截图只是佐证,分析的主体是这套记录。
6. 把实验报告写成能复现的文档:我的收尾习惯
如果只让我留一条经验给要做这类轨道实验的人,那就是:把实验报告当成一份别人能照着复现的操作文档来写,而不是当成一份给自己交差的截图合集。评阅标准里实验任务与内容、实验分析、实验报告三块各占一档,真正拉开差距的是分析那一块,而分析能不能写深,取决于你在操作时有没有留下可追溯的状态记录。
我的具体做法是三步。第一步,操作前把检查点表列出来,动作、预期状态、异常先查三列,照着走。第二步,每个关键节点截一张图,但截图文件名里带上动作名和当时的状态,比如初始化成功、RM 进入、AM 曲线生成,后期写报告时不用靠回忆去对图。第三步,写分析时按「现象—依据—结论」组织,比如提前发车那一节,现象是 AM 无响应,依据是计划时间未到,结论是计划时间约束对发车授权的实际影响,这样一段就是完整的分析,而不是一句「点了一下就好了」。
还有一点值得单独说:这套实验里最贵的成本是重启。三台机器任意一台状态错乱,重来一遍的代价是十几分钟加上全组的节奏。所以我在点任何涉及初始化和模式切换的按钮之前,都会先确认上一步的状态提示已经出现,宁可等两秒,不抢那一下。这个习惯后来被我带到了所有需要多端协同的操作场景里——先确认前一步的反馈,再做下一步的动作。
模式转换的判断依据、两条曲线的含义、跳停和提前发车的触发条件,这些东西实验课上跟着指导走一遍好像都懂,但真正写报告、真正要给别人讲清楚的时候,才发现只有自己动手复现过、踩过坑、记下过状态的那部分才留得住。上面这套流程和检查点表,你直接拿去改改就能用。希望帮到你。
本文还有配套的精品资源,点击获取