查看“使用手册 - 劫持用法”的源代码
←
使用手册 - 劫持用法
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
=== 1.功能介绍: === 使小车在运行途中改变原先的路线,通过指定劫持的起点和终点,在小车到达劫持起点时,改变路线最终前往劫持终点。 如下图所示,车辆原本路线是前往右侧的点,此时通过劫持,指定劫持起点为分叉路口的点,终点为右上方的点,则小车路线变为前往右上方点 [[文件:48ad20c77e4f1b66f6da4817f2e642f.png|居中|无框|600x600像素]] [[文件:Fb8cb265f1fe7388e8b719015dbf20a.png|居中|无框|600x600像素]] === 2.使用方法及注意点 === ==== 2.1 clumsy准备 ==== 首先替换最新支持劫持的clumsy核心。 然后AGV.cs需要能够支持不停车切换路径。如将clumsy工程中agv.cs下的动作改为静态(因为行走动作的“不停车继续走”一般是通过修改上个动作的参数达到的),如差速轮行走动作:<code>public static LeftRightWheelTracking driver</code> ==== 2.2 simple准备 ==== 首先小车需要在conf字段里增加"nowait"标记,这样Simple向Clumsy发脚本时,Clumsy可以不等待前一个脚本的DriveTask动作完成,就允许执行下一个脚本。(如果不加nowait,则Clumsy会先等到全部动作结束,才会执行下一个脚本) 在simple中增加以下测试代码<syntaxhighlight lang="c#" line="1"> [MethodMember(name = "劫持", desc = "指定一个起点和终点,当小车到达起点后劫持小车至终点")] public void Hijack() { async void HijackFun() { G.pushStatus("Select starting point"); var pt1 = await Program.UI.getPoint(new UIOps.getPointOptions() { site = true }); G.pushStatus("Select ending point"); var pt2 = await Program.UI.getPoint(new UIOps.getPointOptions() { site = true }); if (GetLastSite() == -1) { G.pushStatus("Car not initialized to any site"); return; } try { var plan = new SegmentPlan() { usingCar = this }; plan.FindRoute(SimpleLib.GetSite(pt1.site), SimpleLib.GetSite(pt2.site), false); await plan.Compile("hijack", false).TryHijack().Queue(); Console.WriteLine("Done"); } catch (Exception e) { Console.WriteLine(e); } } Task.Run(HijackFun); } </syntaxhighlight>此时在车辆行走时,就可以使用该按钮进行劫持。 ==== 2.3 注意点 ==== # 劫持起点只能选择还未被车上锁的点; # 若在右击站点即simpleMove时进行劫持,则小车到达劫持起点后,前往劫持终点; # 若在cdm任务中进行劫持,则从劫持起点后所有路线都废弃,前往劫持终点。比如:在取货路途中进行劫持并成功,那么废弃路线原有动作都不会继续执行(比如在废弃路线终点的放货动作)。但如果劫持路线生成代码中包含放货动作,则会执行。
返回
使用手册 - 劫持用法
。
导航菜单
个人工具
中文(中国大陆)
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息