From 361f5bea6bf0f4c3ed4819e02afc6e130d155d53 Mon Sep 17 00:00:00 2001 From: yuliang <398780299@qq.com> Date: Thu, 10 Jul 2025 11:07:33 +0800 Subject: [PATCH] =?UTF-8?q?cl2=20=E5=9F=BA=E4=BA=8E=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=92=8C=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=88=86=E6=AD=A5=E7=94=9F=E6=88=90=E8=AE=BE=E5=A4=87=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/manager/amr/AmrMessageDefine.ts | 1 + src/core/manager/amr/AmrMessageManager.ts | 17 ++++++-- src/editor/propEditors/PtrController.vue | 15 +++++-- src/editor/widgets/monitor/MonitorView.vue | 4 +- src/modules/amr/ptr/PtrObject.ts | 64 ++++++++++++++++++++---------- 5 files changed, 71 insertions(+), 30 deletions(-) diff --git a/src/core/manager/amr/AmrMessageDefine.ts b/src/core/manager/amr/AmrMessageDefine.ts index f7dc3ba..426ea2d 100644 --- a/src/core/manager/amr/AmrMessageDefine.ts +++ b/src/core/manager/amr/AmrMessageDefine.ts @@ -516,6 +516,7 @@ export { AmrMsg10060, AmrMsg10110, AmrMsg10120, + AmrMsg20000Base, AmrMsg20010, AmrMsg20011, AmrMsg20012, diff --git a/src/core/manager/amr/AmrMessageManager.ts b/src/core/manager/amr/AmrMessageManager.ts index 86fbe02..da1e117 100644 --- a/src/core/manager/amr/AmrMessageManager.ts +++ b/src/core/manager/amr/AmrMessageManager.ts @@ -1,4 +1,4 @@ -import { AmrMsg, AmrMsg10010, AmrMsg10050, AmrMsg10060, AmrMsg10110, AmrMsg10120, AmrMsg20050 } from '@/core/manager/amr/AmrMessageDefine' +import {AmrMsg, AmrMsg10010, AmrMsg10050, AmrMsg10060, AmrMsg10110, AmrMsg10120, AmrMsg20000Base, AmrMsg20020, AmrMsg20060} from '@/core/manager/amr/AmrMessageDefine' import Cl23dObject from '@/modules/amr/ptr/cl2/Cl23dObject' import Viewport from '@/core/engine/Viewport' @@ -62,7 +62,18 @@ export default class AmrMessageManager { } } - handleStatusMessage(topic, amrMsg: AmrMsg) { - // switch () + handleStatusMessage(topic, amrMsg: AmrMsg) { + const vehicleId = amrMsg.content.VehicleId + const amrItem = this.viewport.entityManager.findObjectById(vehicleId + '') as Cl23dObject + switch (amrMsg.id) { + case 20020: + amrItem.handle20020Message(amrMsg.content as AmrMsg20020) + break + case 20060: + amrItem.handle20060Message(amrMsg.content as AmrMsg20060) + break + default: + break + } } } diff --git a/src/editor/propEditors/PtrController.vue b/src/editor/propEditors/PtrController.vue index ebe10da..1a7ce45 100644 --- a/src/editor/propEditors/PtrController.vue +++ b/src/editor/propEditors/PtrController.vue @@ -14,12 +14,20 @@ defineOptions({ // 读取组件 props 属性 const props = withDefaults(defineProps(), {}); -function start() { +function startMonitor() { const viewport: Viewport = window['viewport'] // viewport.envManager.client.publish('/agv_robot/status', '') const item = viewport.state.selectedItem const ptrObject: PtrObject = viewport.state.selectedObject as PtrObject - ptrObject.boot() + ptrObject.bootForMonitor() +} + +function startShow() { + const viewport: Viewport = window['viewport'] + // viewport.envManager.client.publish('/agv_robot/status', '') + const item = viewport.state.selectedItem + const ptrObject: PtrObject = viewport.state.selectedObject as PtrObject + ptrObject.bootForShow() } function stop() { @@ -35,7 +43,8 @@ function stop() { diff --git a/src/editor/widgets/monitor/MonitorView.vue b/src/editor/widgets/monitor/MonitorView.vue index 782c60d..f98a528 100644 --- a/src/editor/widgets/monitor/MonitorView.vue +++ b/src/editor/widgets/monitor/MonitorView.vue @@ -104,8 +104,8 @@ export default { continue } const view3DObject = Model.find3D(deviceInfo.id) - if (typeof view3DObject.boot === 'function') { - view3DObject.boot() + if (typeof view3DObject.bootForMonitor === 'function') { + view3DObject.bootForMonitor() } } }, diff --git a/src/modules/amr/ptr/PtrObject.ts b/src/modules/amr/ptr/PtrObject.ts index ce37605..6594e3e 100644 --- a/src/modules/amr/ptr/PtrObject.ts +++ b/src/modules/amr/ptr/PtrObject.ts @@ -172,9 +172,7 @@ export default class PtrObject extends THREE.Object3D { this.viewport.addFrameTimerCallback(this.item.id, this.onFrameTimer.bind(this)) if (!worldModel.state.runState.isVirtual) { - this.subscribeMessage('/wcs_server/' + this.item.id) - this.subscribeMessage('/agv_robot/status') - this.boot() + this.bootForShow() } window.agv3 = this } @@ -219,10 +217,19 @@ export default class PtrObject extends THREE.Object3D { const rbInfo = new this.viewport.ammoModel.btRigidBodyConstructionInfo(mass, boxMotionState, boxShape, localInertia) this.boxBody = new this.viewport.ammoModel.btRigidBody(rbInfo) this.viewport.physicsWorld.addRigidBody(this.boxBody) + } - if (!worldModel.state.runState.isVirtual) { - return - } + bootForShow() { + + this.boot() + this.subscribeMessage('/wcs_server/' + this.item.id) + this.subscribeMessage('/agv_robot/status') + + } + + bootForMonitor() { + + this.boot() this.subscribeMessage('/wcs_server/' + this.vehicleId) this.send20147() setTimeout(() => { @@ -565,22 +572,25 @@ export default class PtrObject extends THREE.Object3D { } if (endDirection != currentStepTask.EndDirection) { - const stepTask: StepTask = { - SeqNo: data.SeqNo, - StepTaskType: 'ROTATION', - OperationType: 0, - PickMode: 0, - X: prevLink.X, - Y: prevLink.Y, - Speed: prevLink.Speed, - EndDirection: endDirection, - ChargeLocation: data.ChargeLocation, - GoodsSlotHeight: data.GoodsSlotHeight, - position: Model.getPositionByLogicXY(prevLink.X, prevLink.Y) as THREE.Vector3, - isCompleted: false + const item = this.viewport.entityManager.findItemByLogicXY(prevLink.X, prevLink.Y) + if (item.dt?.agvRotation && item.dt?.agvRotation?.length > 0) { + const stepTask: StepTask = { + SeqNo: data.SeqNo, + StepTaskType: 'ROTATION', + OperationType: 0, + PickMode: 0, + X: prevLink.X, + Y: prevLink.Y, + Speed: prevLink.Speed, + EndDirection: endDirection, + ChargeLocation: data.ChargeLocation, + GoodsSlotHeight: data.GoodsSlotHeight, + position: Model.getPositionByLogicXY(prevLink.X, prevLink.Y) as THREE.Vector3, + isCompleted: false + } + currentStepTask = stepTask + this.currentStepTaskList.push(stepTask) } - currentStepTask = stepTask - this.currentStepTaskList.push(stepTask) } const stepTask: StepTask = { @@ -704,7 +714,7 @@ export default class PtrObject extends THREE.Object3D { this.runningStepTask = stepTask this.currentStepTaskList.shift() this.runningStepTaskList.push(stepTask) - + console.log('移动') this.addTravel(stepTask.X, stepTask.Y, stepTask.EndDirection, stepTask.Speed / 1000) } else { @@ -715,12 +725,16 @@ export default class PtrObject extends THREE.Object3D { this.currentStepTaskList.shift() this.runningStepTaskList.push(stepTask) if (stepTask.StepTaskType == 'MOVE' || stepTask.StepTaskType == 'MOVE_BACKWARD') { + console.log('移动') this.addTravel(stepTask.X, stepTask.Y, stepTask.EndDirection, stepTask.Speed / 1000) } else if (stepTask.StepTaskType == 'ROTATION') { + console.log('转动') this.addRotation(stepTask.EndDirection) } else if (stepTask.StepTaskType == 'LOAD') { + console.log('取货') this.addLoad(stepTask.GoodsSlotHeight / 1000, this.agvStatusVo.bizLpn) } else if (stepTask.StepTaskType == 'UNLOAD') { + console.log('放货') this.addUnload(stepTask.GoodsSlotHeight / 1000, this.agvStatusVo.bizLpn) } } @@ -747,6 +761,9 @@ export default class PtrObject extends THREE.Object3D { // 转 addRotation(direction: number): Promise { + this.OperationType = 0 + this.PickMode = 0 + this.TaskMode = 2 let rad = 0 switch (direction) { case 1: @@ -794,6 +811,7 @@ export default class PtrObject extends THREE.Object3D { this.OperationType = 0 this.PickMode = 0 + this.TaskMode = 2 const pos = Model.getPositionByLogicXY(logicX, logicY) this.__toPos = pos as THREE.Vector3 //加速度 @@ -923,6 +941,7 @@ export default class PtrObject extends THREE.Object3D { addLoad(height: number, goodsId: string): void { this.actionAnimation = 'wq' console.log('取货') + this.TaskMode = 2 this.PickMode = 1 this.OperationType = 4 this.animationUpFork(height).then( @@ -951,6 +970,7 @@ export default class PtrObject extends THREE.Object3D { addUnload(height: number, goodsId: string): void { this.actionAnimation = 'wq' console.log('卸货') + this.TaskMode = 2 this.PickMode = 2 this.OperationType = 4 this.animationUpFork(height + 0.2).then(