查看“非标车型使用手册”的源代码
←
非标车型使用手册
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
以非标差速底盘地牛说明MDCS的使用方法。 = 一、概述 = [[文件:Image-20250627111525131.png|无框|691x691像素]] '''图 1-1 车型开发架构图''' MDCS由4个子系统构成,分别部署在上位机和下位机: * 上位机。用于管理车队的工控机或服务器,部署Simple(管控子系统)以管理车队、任务,通过开放接口向第三方系统开放自动化集成能力。 ** Simple。管控软件,实现车队管理、管控地图配置、任务路线规划、交通管制等功能。车型插件定义特定车型的功能与规格,支持管控软件规划路线与任务编译。 * 下位机。用于实现移动机器人的运动功能,通过传感器感知环境,执行上位机下发的任务。由3个子系统构成,部署在车载工控机(或嵌入式主板)上。 ** Detour。定位软件,实现激光SLAM(2D/3D Lidar)、地纹SLAM、二维码定位。 ** Clumsy。自动驾驶软件,实现运动控制(行走、旋转、货叉控制等),避障区域(基于激光雷达输出点云)配置,目标识别(通过激光雷达/深度相机识别托盘/货架等),执行上位机下发的任务。车型插件定义移动机器人运动控制相关的信号,比如驱动轮速度、货叉升降控制与高度、SLAM定位置信度等。 ** Medulla。硬件驱动软件,实现与移动机器人硬件(电气模组)的通信能力,比如(电机)驱动器、激光雷达、底盘控制器等。车型插件定义电气模组相关的信号,实现与电气模组的通信功能。 新车型开发的主要任务就是开发车型插件,整定运动参数,配置管控线路。应用新车型的项目还有业务应用开发,即第三方系统部分。业务应用开发不属于本手册范围。 = 二、启动 = == 2.1 下位机 == 顺序启动下位机软件。<blockquote>备注:MDCS对下位机软件的启动顺序没有要求,调试时顺序启动可避免无谓的错误,比如medulla较晚启动,detour未收到点云而触发Clumsy的“盲目驾驶”警报。</blockquote> === 2.1.1 Medulla === 资源管理器打开L100的安装目录,双击"Medulla\Medulla.exe"。 [[文件:Image-20250627165034978.png|无框|605x605像素]] '''图 2-1 Medulla运行界面''' 窗口左侧的"对象列表"有两个组件:cart是移动机器人的下位信号,frontlidar是导航雷达。这是调试时主要关注的对象。 === 2.1.2 Detour === 资源管理器打开L100的安装目录,双击"Detour\Detour.exe"。 [[文件:Image-20250628153846834.png|无框|635x635像素]] '''图 2-2 Detour 启动后界面''' L100 仿真环境已建图。Detour 启动后自动加载地图,勾选 Detour 窗口右下角的"显示选项 \ 跟随小车",使 L100 在窗口中央,使用鼠标滚轮缩放激光地图。<blockquote>备注:由于 Robopal 不会记录 L100 最后位置,因此 Detour 启动后可能会出现丢定位现象,使用 Detour 的"概览"标签的"全图重定位"可找回定位。</blockquote> === 2.1.3 Clumsy === 资源管理器打开L100的安装目录,双击"Clumsy\ClumsyConsole.exe"。 [[文件:Image-20250628155351989.png|无框|524x524像素]] '''图 2-3 Clumsy 启动后界面''' Clumsy 界面由 2 个标签构成。控制面板展示小车的运动状态,以及用于调试的功能列表。车辆配置用于整定运动参数。 == 2.2 上位机 == === 2.2.1 Simple === 资源管理器打开L100的安装目录,双击"Simple\SimpleComposer.exe"。 [[文件:1751190069399.png|无框|591x591像素]] '''图 2-4 Simple 启动后界面''' 使用鼠标滚轮缩放地图,按下滚轮(中键)拖动地图,使 L100 模拟车和管控路线在地图上显示。 == 2.3 仿真环境 == 对于不具备物理调试环境的用户,比如缺调试场地、非标AGV尚未制造下线,可以使用仿真环境来调试。仿真环境由以下子系统构成: * 仿真环境。Robopal是仿真环境软件,实现移动机器人及其运行环境的仿真,模拟配置了2D雷达、安全触边的移动机器人,以及单舵轮、差速底盘,在设定环境中运行。可用于激光SLAM建图和定位,接触式和非接触式避障测试,运动参数整定等调试任务。 * 设备模拟器。Mimics是自控设备模拟器,实现移动机器人的电机驱动器、点位开关的仿真。可用于运动参数整定等调试任务。 * 配套应用软件。modbus slave模拟器、西门子S7模拟器等。用于模拟现场总线,与设备模拟器配套使用。 我们以代表车型来说明仿真环境使用方法。 === 2.3.1 L100地牛 === L100地牛使用差速底盘,配有一个2D激光雷达,系统通信图如下。 [[文件:Image-20250627150427180.png|无框|579x579像素]] '''图 2-5 L100仿真通信图''' L00地牛的PLC负责控制电机驱动器和点位开关,通过串口与车载工控机通信;倍加福R2000激光雷达直连车载工控机网口。仿真L100地牛用Mimics模拟PLC,Mimics是MDCS工具链的设备模拟器,可模拟电气模组,并集成Web界面来修改设备运行参数。用Robopal的180度视野激光雷达代替R2000激光雷达,以便模拟货物遮挡雷达情况下的建图与定位。 Diagslave是Modbus TCP Slave模拟器,Mimics L100模拟器以Modbus TCP替换Modbus RTU,以简化仿真环境搭建。Medulla L100插件也切换为使用Modbus TCP通道。 按照以下步骤启动仿真环境: # Windows资源管理器打开L100仿真版目录; # 双击"modbus\diagslave.exe",启动Modbus TCP Slave模拟器,运行界面见图2-2; # 双击"Mimic\Mimics.exe",启动L100模拟器,运行界面见图2-3; # 浏览器输入"localhost:7200/index.html",打开Mimics监控页面,见图2-4; # 登入Ubuntu,进入Robopal目录,在命令行下执行"./robopal"启动,见图2-5。 ==== 2.3.1.1 diagslave ==== [[文件:Image-20250627151731326.png|无框|555x555像素]] '''图 2-6 diagslave的运行窗口''' diagslavec.exe是命令行程序。可以在资源管理器双击启动,或者在cmd终端启动,启动后都会在cmd终端运行。<blockquote>注意:如果鼠标左键点击命令行窗口的文字,会暂停命令行程序的运行,敲回车键可以解除选择文字并恢复运行。</blockquote> ==== 2.3.1.2 Mimics ==== [[文件:Image-20250627152134779.png|无框|557x557像素]] '''图 2-7 Mimics的运行窗口''' Mimics.exe也是命令行程序。当日志停止输出时启动完毕。浏览器打开"localhost:7200/index.html",进入监控页面。 [[文件:Image-20250627152918543.png|无框|515x515像素]] '''图 2-8 L100Mimic的监控页面''' L100模拟器启动后,先要修改RemoteRalIp,这是Robopal所在Ubuntu的IP地址,L100模拟器使用UDP 4344端口向Robopal发送移动机器人的线速度/角速度。如果Robopal的移动机器人不会移动,基本上是这个参数配置错误。 其他属性值参考L100的下位信号说明使用。一般而言,主要是修改IsAutomatic、IsEmergencyStopPressed属性值,用于手/自切换和复位警报。 右侧拟态方法用于模拟升降货叉。 ==== 2.3.1.3 Robopal ==== 首先修改L100模拟器的RemotePalIp值,指向运行Robopal的Ubuntu主机。 [[文件:Image-20250627153735146.png|无框|600x600像素]] '''图2-9 修改RemotePalIp值''' Ubuntu上进入Robopal目录,检查robopal.cfg配置(如果首次使用),确认lidarRemoteIp指向运行Medulla的主机(Robopal向目标主机的UDP 4343端口推送点云数据)。 bruce@u22:~/Robopal$ cat robopal.cfg lidarRemoteIp=192.168.3.102 lidarRemotePort=4343 listenPort=4344 world=./worlds/SmallWareHouse.world robotsCount=1 命令行下输入"./Robopal"启动。Robopal是命令行程序,启动后在控制台输出日志,见图2-6,随后弹出仿真环境窗口,见图2-8。 [[文件:Image-20250627154009452.png|无框|600x600像素]] '''图 2-10 Robopal的控制台输出''' 如果输出日志的speed & angle都是0,表示没收到L100模拟器的运控指令,RemotePalIp配置错误。下图是配置正确时的输出。 [[文件:Image-20250627154234078.png|无框|536x536像素]] '''图 2-11 Robopal收到L100模拟器运控指令的输出'''<blockquote>备注:例图是WindTerm SSH到Ubuntu的操作界面,因此左侧有时间戳和行号。</blockquote>[[文件:Image-20250627154436498.png|无框|523x523像素]] '''图 2-12 Robopal的仿真界面''' Robopal启动后处于暂停状态(左下角的仿真计时器不动),顺序点击"Run"菜单的"One step"、"Pause"启动仿真(也可以在键盘顺序输入"."、"p"启动)。 启动后计时器跳动,移动机器人的激光雷达扫描线出现。使用鼠标滚轮缩放视图,左键按压拖动视图,左键拖拽移动机器人移动。 [[文件:Image-20250627161652076.png|无框|529x529像素]] '''图 2-13 仿真环境启动后界面''' L100仿真环境模拟了一个小型车间,外间是仓库,内间是生产区,配有一台L100地牛。 <blockquote>注意:Robopal 有个已知错误,在运行一段时间后雷达输出停止。在 4G 内存的 Ubuntu 上,约 52 分钟后出现。此时 Medulla 的 frontlidar 标红,同时弹出“雷达无数据”警告。</blockquote>[[文件:1751035019133.png|无框|653x653像素]] '''图 2-14 Robopal 的模拟雷达异常界面''' 重启 Robopal 可解决问题。Robopal 重启后,L100 位置会跳动到默认位置(靠近 2 根立柱),鼠标拖动 L100 到重启前位置,如果 Detour 上显示定位丢失,则使用“全局重定位”找回位置即可。 == 2.4 看门狗 == MDCS 看门狗可监控下位机程序的运行状态,当程序意外退出时会自动拉起,适用于生产环境。从 <nowiki>https://dev.lessokaji.com/index.php?topic=258.0</nowiki> 下载看门狗程序。 = 三、使用 = == 3.1 Medulla == 下面分别说明 cart 和 frontlidar 的属性和功能。 === 3.1.1 cart对象 === cart的信号包括下位信号(由Medulla车型插件定义)、上位信号(由Clumsy车型插件定义)。以"电量%"(BatteryPercent)为例,L100模拟器的默认值是75,Medulla通过Modbus TCP连接L100模拟器,读出75%电量。 L100的下位信号在"PelletTruck\PelletTruckMedulla\PalletTruckDefinition.cs"定义,说明如下。 下位信号的分类说明: * 状态机。正交的3种工作模式。 ** 自动模式(Automatic)。可执行上位机下发的任务,由Clumsy自主控制。 ** 手动模式(Manual)。可使用Medulla的遥控器控制机器人行走,用于SLAM建图、运动参数整定和故障处理。 ** 故障模式(Malfunction)。当电气模组工况异常、触发安全相关警报时进入,必须解除异常/报警源问题,按下复位键后切换到原来状态(自动/手动)。 * 诊断。判断移动机器人是否在故障模式,以及故障模式的归因。 ** HasFault。电气模组的异常工况都会触发为True,比如电机驱动器报警、底盘控制心跳停止等。 ** FaultMessage。逗号分割的硬件故障提示。 * 安全。低级安全包括接触式和非接触式安全响应,高级安全综合定位置信度、安全措施屏蔽和行走状态判定。 ** 接触式安全响应。拍下急停按钮、安全触边触发等需要人接触的安全信号。 ** 非接触式安全响应。避障激光雷达、货叉光电传感器等非接触安全信号。 ** 高级安全。鲁莽驾驶是屏蔽安全措施且在自动模式下行走,一般发生在处理故障后未接触屏蔽,然后切自动模式。盲目驾驶是detour返回的定位置信度(lstep)大于16(经验阈值),且自动模式下连续行走5秒以上。 * 轮系。驱动轮的目标速度、反馈速度、状态和故障。 * 货叉。升降状态及高度。 * 电池。剩余电量。 L100 的上位信号在"PelletTruck\PelletTruckPilot\PelletTruckDefinition.cs"定义,说明如下。 上位信号由 Clumsy 控制,Medulla 读取,下位信号则相反。 Lstep 来自 Detour,表示定位置信度,回环线程锁定关键帧时 Lstep 等于 2,否则会单调递增,直到再次锁定关键帧为止。 SSC 是 Clumsy 的激光雷达避障区域,点云来自导航激光雷达。命名风格为"[fwd|rev|lt|rt]_[fast|slow]_[empty|loaded]",包括 3 部分(中括号),说明如下: * 行走方向:fwd 表示前进,rev 表示后退,lt 表示左转,rt 表示右转。 * 行走速度:fast 表示高速,slow 表示低速。 * 载货状态:empty 表示空载,loaded 表示带载。 以带载高速前进为例,SSC 名称就是"fwd_fast_loaded",该场景下应扩大缓行区域长度,使行人侵入缓行区域时可提早减速,停车区域和急停区域同理,保证减速及停车时货物不至于惯性过大而倾倒。再如,带载低速右转,SSC 名称就是"tr_slow_loaded",应适当扩大区域右侧面积,在右转方向及时发现行人。 === 3.1.2 frontlidar === L100 配置 1 个激光雷达,仿真环境使用 180 度视野的仿真雷达,视野较小的雷达有助于工程师理解SLAM 能力边界,比如建图时路线必须闭环,使激光雷达从不同角度看到相同的路标。 [[文件:1751031602666.png|无框|586x586像素]] '''图 3-1 frontlidar''' frontlidar 窗口主要看 scanC和 pointsN,前者是点云帧计数器,单调加一,连接雷达后会持续增大;后者是点云的测量点数量,本例配置雷达的角分辨率是 0.25,180° 视野,因此测量点数量 = 180 / 0.25 = 720。 frontlidar 窗口的另一个重要功能是"view"。点击右侧功能列表的"view",打开点云视窗。 [[文件:1751031978875.png|无框|595x595像素]] '''图 3-2 点云视窗''' 对比右侧Robopal 的仿真窗口,激光雷达观测得到的点云在雷达的视野内。点云视窗使用雷达坐标系(右手坐标系),雷达 0 度(雷达正前方)是食指指向的正 X 轴,中指指向正 Y 轴。<blockquote>备注:L100 仿真环境面向新手,配置的模拟雷达未开启噪音功能,因此点云是干净不含噪音的,不像 R2000 的点云有轻微跳动。由于没有噪音,Detour 中的位姿也是稳定的不会轻微波动。</blockquote> === 3.1.3 MedullaConsole === 如果 Medulla的驱动发生异常,比如 frontlidar 没收到点云,对象列表中相应的对象会标红提示。此时可切换到"ui"标签,点击"ShowConsole"打开 MedullaConsole 窗口,查看日志来分析异常。 点击"HideConsole"则隐藏 MedullaConsole 窗口。<blockquote>注意:不要关闭 MedullaConsole 窗口,这会关闭 Medulla 进程。如果要隐藏 MedullaConsole 窗口,应使用"HideConsole"功能。如果要关闭 Medulla,可右键点击在 Windows 任务栏右侧的 Medulla 图标,选择"Exit"菜单退出。</blockquote>"MessageLogs"功能弹出插件日志对话框,查看通过Medulla.Diagnosis 的 Post 或 Toast 方法输出的日志。Post与 Toast的区别在于后者只显示给定标签的最新消息,适合输出实时刷新的日志,比如 CAN 的调试信息(不会刷屏而挤走其他重要日志)。 === 3.1.4 startup.iocmd === 位于 Medulla 目录下的 startup.iocmd 是 Medulla 的配置脚本,用于加载驱动,显示 MedullaConsole。L100 模拟器的配置脚本说明如下: # startup.iocmd使用 JavaScript 语法,将"."替换为空格,方法参数亦然。 # 比如"frontlidar Start"就是"frontlidar.Start()",调用 frontlidar 的 # Start方法,无参数。 # 创建车型激活器 loader = io load plugins/CartActivator.dll # 加载 plugins 子目录下的"Medulla 地牛插件库" cart = loader load plugins/MedullaPelletTruck.dll # 加载 plugins 子目录下的"通用雷达驱动库" frontlidar = io load plugins/UniversalLidarDriver.dll # frontlidar使用robopal驱动,雷达IP是192.168.3.101,UDP 端口是 4343,角分辨率 0.25° frontlidar Setup robopal 192.168.3.101 4343 0.25 # frontlidar的盲区是10mm,最大测距20,000mm frontlidar setMaskDist 10 20000 # 启动frontlidar frontlidar Start # 加载WinMedulla库(MedullaConsole 的 WinForm 实现) ui=io load plugins\WinMedulla.dll # 显示WinMedulla 监视窗口 ui Show === 3.1.5 监控硬件异常 === 移动机器人常见问题是硬件异常,导致不能执行任务。L100的状态机根据上下位信号实时监控硬件异常,当硬件故障或安全异常时,转入故障状态并告警。当L100出现异常时,应观察cart对象的HasFault和HasAlarm信号。 [[文件:1751034226409.png|无框|341x341像素]] '''图 3-3 cart对象的故障与警告信号''' * HasFault:当电气模组出现故障时为True。FaultMessage显示故障硬件名称,如果有多个则以逗号分割。 * HasAlarm:出现安全隐患时为True。AlarmMessage显示告警源,如果有多个则以逗号分割。 出现HasFault时,应先解决硬件故障。常见硬件故障如下: * 电机驱动器报警。一般是伴生故障,比如急停时可能引起驱动器过压报警,这种警告无须处理,复位后自动解除。 * 安全触边报警。应移动地牛,将安全触边脱离障碍物。 * 货叉探货传感器报警。应移动地牛(或障碍物),使光电传感器前没有障碍物。 出现HasAlarm时,应先判断安全风险,比如行人侵入急停区,则应拍下急停按钮,等行人离开后再松开。<blockquote>注意:L100没有复位按钮,以急停按钮代替。拍下急停按钮,等待 1 秒以上松开,车型插件会创建复位按钮信号,持续 3 秒后消除。</blockquote>'''当工作模式为手动(Manual)时,L100 也不会执行上位机下发的任务'''。 == 3.2 Detour == 关于 Detour 的操作请参考 [[首页|https://wiki.lessokaji.com/index.php?title=%E9%A6%96%E9%A1%B5]] 的'''快速开始'''。新手建议使用 L100 地图熟悉定位相关操作,然后进阶学习建图。<blockquote>备注:L100 模拟车的雷达位置是精确的,因此无须标定外参。实物车必须标定外参,Wiki 有详细说明。</blockquote>开发机一般没有 Detour 授权证书,因此有 '''60 分钟时长限制''',超时后重启 Detour 即可。<blockquote>备注:Detour 试用超时后,状态栏的位姿不会更新,控制台窗口会持续输出错误提示。</blockquote> == 3.3 Clumsy == 我们以 L100 地牛来说明 Clumsy 的调试功能。 L100 的调试功能如下: * 测试前进行走。鼠标拖拽一条直线路径,让小车跟踪路径行走,用于整定运动参数。 * 测试多段路线。鼠标拖拽多条直线路径,右键结束,让小车跟踪路径行走,用于整定与转向相关的运动参数。 * 测试倒车行走。与前进行走操作类似,让小车倒走。 * 测试自旋。输入小车应转到的角度,用于测试自旋功能。 * 测试取货,测试放货。升降货叉。 仿真器未实现充电机,因此仿真环境内不要使用充电功能。 === 3.3.1 测试前进行走 === 点击 Clumsy 窗口(如果 Clumsy 不是当前活动窗口,点击功能菜单可能无效,要多点一次),点击“测试前进行走”,鼠标左键在左边视图的小车上按下,然后向前进方向拖出一个箭头线,随后松开左键。 [[文件:Image-20250628160443048.png|无框|503x503像素]] '''图 3-4 鼠标拖拽出直线路径''' 黄色箭头线段是小车要跟随的轨迹,小车的红色箭头指向车头方向,黄绿色箭头线指向轨迹终点,白色箭头线指向'''预瞄点'''。 Clumsy 的轨迹跟踪算法简要说明如下: # 预瞄点。计算小车运动中心质点在跟踪路径上的垂足,从垂足延轨迹向前延伸预瞄距离,得到预瞄点。预瞄点作用与我们开车相似,开车时司机看的是前方,而不是车头,车速越快,向前看得越远,如此可以控制加减速以平顺驾驶。 # 首次转向。小车开始跟踪轨迹时,如果距离轨迹较远,先转向使车头指向轨迹(尽快开到轨迹上),然后向轨迹行走。 # 跟踪路径。当小车向轨迹行走时,会根据车头指向与直线轨迹的角度差调整车速,夹角越小速度越快。 # 下一段路径。当小车即将跟踪下一段路径时(测试多段路线),会计算下一段路径与车头指向的夹角,如果是小夹角则速度不减,否则减速。 === 3.3.2 车辆配置 === 运动参数整定是新车型适配的关键任务之一。L100 的运动参数已配好,使用即可。以下是 L100(差速底盘)相关的运动参数说明,供参考。 '''基础车体参数''' {| class="wikitable" !变量名 !数据类型 !用途 |- |vthBias |double |车体参数:旋转补偿,用于补偿车辆旋转时的偏差 |- |rotSync |double |车体参数:角度同步阈值,当实际角度与目标角度差小于此值时开始同步 |- |wAcc |float |车体参数:角度同步加速度,控制角度调整的加速度大小 |- |Stail_l |double |运动学参数:定轮距离,用于计算差速转向模型 |} '''速度控制参数''' {| class="wikitable" !变量名 !数据类型 !用途 |- |thresAcc |double |加速阈值,限制车辆加速度大小 |- |thresDeAcc |double |减速阈值,限制车辆减速度大小 |- |thresRotAcc |double |转弯加速阈值,限制转弯时的角加速度 |- |maxWSpeed |float |转弯最大速度,限制车辆旋转的最大角速度 |- |finSpeed |double |终点速度,到达终点时的目标速度 |} '''路径跟踪参数''' {| class="wikitable" !变量名 !数据类型 !用途 |- |distFin |int |路径结束距离,判断路径是否结束的距离阈值 |- |dthFac |float |左右差速P,差速转向的比例系数,相当于PID控制中的P参数 |- |lookAhead |float |点跟踪方法点距,车辆跟踪路径点的前视距离 |- |trackFinDist |float |判断"已到达终点"的阈值,距离小于此值认为已到达目标点 |- |predict |float |前进预测量,根据当前速度预测未来位置的时间系数 |- |thScale |float |转弯预测量,转弯时的预测系数,影响转弯平滑度 |- |nfFac |float |转弯负反馈量,减少转弯抖动的阻尼系数 |- |stoppingPow |double |停止幂数,控制车辆接近终点时减速曲线的形状 |- |wayPointFinSpeedFactor |float |速度越大时,wayPointFinDist 增大的幅度,高速行驶时提前减速的系数 |} '''角度控制参数''' {| class="wikitable" !变量名 !数据类型 !用途 |- |speedDegThres |double |角度优先调节的角度范围,当角度偏差大于此值时优先调整角度而非速度 |- |firstThAccuracy |float |行走指向精度,初始定向时的角度精度要求 |- |stoppingLAFac |double |接近终点时lookAhead的衰减系数,影响终点附近的路径跟踪平滑度 |} === 3.3.3 SSC === Clumsy 支持导航激光雷达用于避障(使用 Medulla 输出的点云,与 Detour 无关)。避障区域称为 SSC,绘制方法与点位输出型避障雷达相似。避障区间抽象为“行走方向” + “车速” + “带载”的组合,下面以绘制带载高速直行为例说明。 [[文件:1751100609693.png|无框|561x561像素]] '''图 3-5 Clumsy 的车体编辑器''' “车辆配置”标签页,点击“查看/编辑车体布局”打开布局编辑器。车体布局上有一个单线雷达,其名称(name)与 Medulla 的 frontlidar 一致。车体布局上已有 SSC(雷达触边),点选“frontlidarArea”来修改。 [[文件:1751100798306.png|无框|534x534像素]] '''图 3-6 SSC 的重绘制功能''' 点选“动作”标签,双击“重绘制”。鼠标左键顺序点击绘制区域的顶点,如下图的红色框。 [[文件:1751100906863.png|无框|535x535像素]] '''图 3-7 重新绘制 SSC 轮廓''' SSC 轮廓是封闭多边形,带载直行时,轮廓宽度应大于托盘,长度应满足高速直行时的减速/停车要求。SSC 的命名风格如下(数据词典语法): '''[ fwd | rev | lt | rt ]_[ fast | slow ]_[ empty | loaded ]_[ slowdown | stop | estop ]''' SSC 名称由 4 部分构成:行驶方向、车速、带载、行为。以下划线连接。 * 行驶方向:fwd(前进),rev(倒走)、lt(左转弯)、rt(右转弯)。 * 车速:fast(高速),slow(低速)。 * 带载:empty(空载),loaded(带载)。 * 行为:slowdown(降速缓行),stop(停车),estop(急停)。 我们正在绘制的 SSC 是带载高速直行的缓行区域,那么 SSC 的 name 就是"fwd_fast_loaded_slowdown",如下图。 [[文件:1751101787310.png|无框|516x516像素]] '''图 3-8 带载高速直行的缓行区间'''<blockquote>SSC 可用布局编辑器菜单的“添加\雷达触边”增加,也可以用菜单删除。新增的雷达触边以“重绘制”功能编辑轮廓。</blockquote> == 3.4 Simple == 下图显示了 L100 在仿真环境、Detour 和 Simple 地图上的位置。可见 L100 的位置是一致的,这也是激光 SLAM 的目的:使移动机器人使用激光雷达在物理世界中精确定位。 [[文件:1751191333111.png|无框|671x671像素]] '''图 3-9 L100 在仿真环境、Detour 和 Simple 地图中的位置''' Simple的功能以 5 个标签组织: * 地图。配置激光地图。 * 进程。配置'''任务插件'''。 * 车辆。配置'''车队'''。 * 脚本。查看小车执行的'''任务脚本'''。 * 场景。配置'''管控地图'''的站点、路径。 === 3.4.1 地图标签 === [[文件:1751191661158.png|无框|569x569像素]] '''图 3-10 地图标签界面''' 导入 Detour 的激光地图文件,作为管控路线配置的依据。 Detour 的激光地图又称为'''稠密地图''',记录了环境信息,使移动机器人通过激光雷达获得实时位置。稠密地图记录的信息量相当大,这是定位所必须的。Simple 的管控地图也称为'''稀疏地图''',仅记录由站点和路径构成的路网图,用于规划移动机器人从 A 点到 B 点的路线。 以公交车比喻,司机记忆的地图属于稠密地图,包括路标(医院、学校、超市等有明显特征的地点)、车道宽窄、红绿灯等,这个信息量丰富的地图有助于司机安全驾驶公交车执行客运任务。公交车终点站的调度员使用的地图则是稀疏地图,记录构成线路的站点、发车时刻表,协助调度员合理调度车辆和司机以执行客户计划。 虽然管控程序不会直接使用激光地图,但是激光地图包含的环境轮廓与坐标有助于配置管控路线。所以导入激光地图是 Simple 配置的第一个步骤。 === 3.4.2 进程标签 === [[文件:1751196976753.png|无框|585x585像素]] '''图 3-11 进程标签界面''' Simple 通过插件机制扩展功能。CDM(链式搬运任务)是标配插件,调度小车执行“取/放”搬运任务。项目的定制功能可通过 Simple 插件实现自定义任务实现。 ==== 3.4.2.1 CDM ==== [[文件:1751197357322.png|无框|571x571像素]] '''图 3-12 CDM 的动作列表''' 点选“CDM”,再切换到“动作”标签,可使用 CDM 的功能(以使用频率顺序说明): * 初始化所有车辆。Simple 启动后,所有小车处于“未初始化”状态(见图 3-11,小车上有个 X 图标),使用此功能初始化所有小车(详见“车队标签”)。 * 取放货。双击“取放货”条目,然后鼠标顺序在管控地图上点击“取货”站点、“放货”站点。CDM 自动选择一台就近的空闲小车,然后规划出取放货路径,调度小车执行取放任务。 * 取货。仅取货。 * 放货。仅放货(小车上应有货)。 * 查看任务。弹出任务列表对话框,可取消待执行/执行中的任务,查看已执行的任务。 * 启动进程 / 关闭进程。启动 / 停止 CDM 任务。 * 添加 Idle 标签。向小车贴上“空闲”标签(可调度执行任务)。 <blockquote>注意:CDM 要求管控地图上至少有一个“躲避”站点(待命点或库位),当小车挡住另一台小车的任务路线时,CDM 会调度堵路小车去躲避站点。如果没有“躲避”站点,CDM 在规划路线会失败,即便只配置一台小车也是如此。</blockquote> === 3.4.3 车队标签 === 启动仿真环境后,L100在默认位置,Detour 可能会丢定位(Detour 持续记录当前位姿,如果位姿跳变则会丢定位)。 [[文件:Image-20250629195535720.png|无框|689x689像素]] '''图 3-13 仿真环境启动后 L100 丢定位''' 参考上图,自上而下来看: # Robopal 是 L100 的默认位姿。 # Detour 显示点云与地图有明显偏差(向右下方偏出)。 # Simple 上L100 位姿与 Detour 一致(位姿来自于 Detour),小车未初始化,且不在站点上。 在 Robopal 窗口,鼠标左键慢慢拖动 L100 到“待命点”站点。 [[文件:1751198377317.png|无框|698x698像素]] '''图 3-14 把 L100 拖动到待命点''' 慢速拖动 L100 是让 Detour 能够修正定位误差(如果拖放后定位有错误,使用 Detour 的“全局重定位”修正),如上图所示,点云(绿色线)与地图轮廓已贴合,且小车附近的一个关键帧(红色实心点,右下方有点云配置分数 0.75)被锁定,说明 Detour 已修正定位偏差。 “地牛 1”的属性说明如下: * siteID:小车所在站点编号,由于未初始化,因此是-1。 * speed:小车的默认速度(mm/s)是 0.4m/s(速度属性的数据类型是整数,因此使用 mm/s)。 * address:小车的 IP 地址(Clumsy 所在主机的 IP)。 * lstatus:小车的状态。 * id:流水号。 * name:小车名称。 * group:小车所在组。有些场景需要分组执行任务,比如“分拣”与“产品下线”由不同组车队执行任务,不可交叉执行。默认填"default",用于不分组场景。 移动 L100 到待命点,且定位准确时,双击“动作”标签的“初始化”。 [[文件:1751200524675.png|无框|582x582像素]] '''图 3-15 初始化后的 L100''' L100 的“X”消失,初始化成功。<blockquote>注意:小车在站点上才允许初始化。</blockquote>切换到“状态”标签,看 L100 的状态。 [[文件:1751200956848.png|无框|581x581像素]] '''图 3-16 L100 的状态''' 车辆状态反映了小车当前工况,当小车异常时,比如不执行任务,应根据其状态来分析故障源。 * Clumsy 上传的状态。以“车体_”为前缀,实时更新。例图中的“车体_WorkMode”为“Manual”,表示L100 处于手动模式,不会执行 Simple 下发的任务。 * 交通管制相关状态: ** holdingLocks:小车当前所在站点编号。 ** pendingLocks:小车执行任务时,会锁定前进方向的 3 个站点(包含当前站点,3 点定 2 条线段,即当前行走的路线和下一段路线)。如果小车在行驶时停下且无报警,应检查 pendingLocks,如果小车在礼让另一辆有交叉路线的小车,pendingLocks 只有 1 个站点,表示'''锁点失败而停车'''。 ** blockedBy:正在礼让的另一台小车编号。 ** TCStat:交通管制状态。 常用动作说明: * 立即强制结束。向 Clumsy 发送“强制结束”指令,Clumsy 自动重启并丢弃正在执行的任务,小车停下。 * 现场检修并小车下线。小车停在路上检修故障,调度认为小车下线,不再调度。(现场检修的时间应短,否则小车会堵路)。 * 返厂检修。下车下线且被移出管控地图(siteID=-1)。把小车移出车道(比如推到路边不会堵路)检修时使用。 * 小车上线/下线。“状态”的“标记”是一种标签机制,可理解为向小车贴上便签,应用程序可利用标签实现定制功能。比如 CDM 使用“上下线”标签来标记小车能否使用。 <blockquote>一般而言,当小车执行任务时出现异常,比如硬件故障,任务不能执行时,可用“现场检修”、“返厂检修”来防止 CDM 向它下新任务,然后用“立即强制结束”清除小车任务,处理完毕后用“初始化”使小车上线。</blockquote>鼠标左键点选 L100,双击“前往站点”动作,然后左键点击目标站点,Simple 会规划一条路线并下发给 L100。 [[文件:1751202335408.png|无框|612x612像素]] '''图 3-17 L100 前往待命点的规划路线''' 彩色的规划路线是 L100 的包络线,表示 L100 在空载行走时需要占用的空间。Simple 的路线规划算法基于包络,当 2 台小车的包络有交叠时,则表示它们存在争用,Simple 会计算出通行顺序,使 2 台车安全通过。<blockquote>备注:“前往站点”的快捷方式是鼠标右键点击目标站点。</blockquote> === 3.4.4 脚本标签 === Simple 将规划路线编译为任务脚本,下发给 Clumsy,后者将执行结果回传 Simple。 [[文件:1751202625972.png|无框|605x605像素]] '''图 3-18 L100 执行的一个任务脚本的例子''' 选择脚本条目,双击“显示脚本”动作,可看到脚本内容。脚本使用 JavaScript 语法,Go 是行驶指令,指令小车跟踪直线轨迹行走。除此以外还有取货、放货、SSC 切换等指令,参见 Clumsy 的动作代码。 === 3.4.5 场景标签 === 场景用于编辑管控地图,主要是站点和路径。 [[文件:1751202889451.png|无框|597x597像素]] '''图 3-19 场景标签界面''' 管控地图由站点和路径构成。使用“添加”菜单,逐个或连续将站点放入地图,然后用路径连接。 L100 是差速底盘,无须使用圆弧和贝塞尔路径。 Simple规划出路线后,模拟小车顺序走过规划路线的站点和路径,根据站点和路径的属性编译出相应的动作指令,比如行走、停车、旋转、取货等。 '''站点属性''' '''路径属性''' {| class="wikitable" !属性名 !数据类型 !用途 |- |pdscene |string |行人检测场景名称 |- |speed |int |行驶速度(mm/s),默认400mm/s |- |reverse |bool |倒退行走,与revdst配合使用 |- |revdst |int |倒退行走的目标地标 |- |turndst |int |指向终点的turn=true时,在终点自旋到dstAngle |- |dstAngle |int |终点的自旋角度 |- |typeInfo |int |与下段路径的关系: - 0 表示小角度转向,无须减速。 - 1表示根据下段路径夹角计算是否减速。 - 2 表示转到下段路径时必须停车。 |} 我们以去取货站点的路线配置为例。 [[文件:1751203529929.png|无框|623x623像素]] '''图 3-20 取货路线配置''' 我们希望地牛取货时按照规划路线精确行走,以保证货叉正对托盘,不至于跑偏而叉取失败。上图中选中的2条橙色路径是关键,要求地牛向 6 点方向直行到转弯处停下,然后自旋到 180 度,使货叉正对第 2 条路径,然后倒走进入取货库位。 [[文件:1751204090229.png|无框|619x619像素]] '''图 3-21 取货路线的第一个路径''' 第一条路径: * typeInfo=2:到下条路径前停车。 * speed=400:速度降到 0.4m/s。 * turndst=28:到编号为 28 的(路径)终点时自旋。 * dstAngle=180:自旋到 180 度。 [[文件:1751204394062.png|无框|624x624像素]] '''图 3-21 取货路线的自旋站点''' 第一段路径的终点: * id=28:即路径 turndst 指向的自旋站点。 * turn=true:自旋站点。 [[文件:1751204497640.png|无框|610x610像素]] '''图 3-22 取货路线的第二个路径''' 第二条路径: * speed=200:降速到 0.2m/s。 * reverse=true:倒走。 * revdst=962:倒走的终点编号是 962。 <blockquote>提示:reverse + revdst、turndst + dstAngle 都是配套使用。当地牛从取货站点离开时,是正走,到自旋站点后转向 89 度。</blockquote>[[文件:1751204840386.png|无框|585x585像素]] '''图 3-23 取货路线的取货站点''' 取货站点: * group="default":使用默认分组。取货和放货站点必须有 group 字段,与小车的 group 配套使用。 * shelf=true:这是库位。(shelf 表示货架) * angle=180:停下时的车头指向 180 度。
返回
非标车型使用手册
。
导航菜单
个人工具
中文(中国大陆)
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息