--- tags: plug in --- # General Purpose User Interface ## For TGIO [TOC] ### Control Center message structure #### Control Center properties: host: 127.0.0.1 port: 1883 username: admin password: password ## MQTT Messages ### 系統狀態回報 (dt/overview) **MESSAGE:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | dt/overview | robot_controller | **OverviewData.msg**<br>- MovingPlatformData.msg<br>- ElevatingPlatformData.msg<br>- GimbalData.msg<br>- TimeOfFlightData.msg<br>- BatteryData.msg | * **PARAMETERS:** | parameter | data type | | --------- | --------- | | moving_platform | MovingPlatformData | | elevating_platform | ElevatingPlatformData | | gimbal | GimbalData | | time_of_flight | TimeOfFlightData | | battery | BatteryData | :::spoiler **SUBPARAMETERS (MovingPlatformData.msg):** | parameter | data type | data | unit | comment | | --------- | --------- | ---- | ---- | ------- | | state | int | <ul><li>0: IDLE</li><li>1: CHARGING</li><li>2: MOVING</li><li>3: OBSTACLE</li><li>4: ERROR</li><li>5: JOYSTICK</li></ul> | | | | position | int | | | *the position of the robot on the hanging track* | | velocity | float | | m/s | *the velocity of the robot on the hanging track* | | error | int | <ul><li>0: No error</li><li>1: Failed to call movingplatform's controlller state service</li><li>2: MovingPlatform's EPOS4 error</li></ul> | | | ::: :::spoiler **SUBPARAMETERS (ElevatingPlatformData.msg):** | parameter | data type | data | comment | | --------- | --------- | ---- | ------- | | state | int | <ul><li>0: IDLE</li><li>1: HOMING</li><li>2: MOVING</li><li>3: OBSTACLE</li><li>4: ERROR</li><li>5: JOYSTICK</li></ul> | | | position | float | | *the height of the motor approximately in cm, 1:50* | | error | int | <ul><li>0: No error</li><li>1: Failed to call elevatingplatform's controlller state service</li><li>2: ElevatingPlatform's EPOS2 error</li></ul> | | ::: :::spoiler **SUBPARAMETERS (GimbalData.msg):** | parameter | data type | data | unit | comment | | --------- | --------- | ---- | ---- | ------- | | state | int | <ul><li>0: OFF</li><li>1: ON</li><li>2: INIT</li><li>3: BUSY</li><li>4: ERROR</li><li>5: JOYSTICK</li></ul> | | | | tilt | float | | ° | *the tilt of the gimbal* | | roll | float | | ° | *the roll of the gimbal* | | pan | float | | ° | *the pan of the gimbal* | | error | int | <ul><li>0: No error</li><li>1: Failed to call gimbal's controlller state service</li><li>2: Gimbal error</li></ul> | | | ::: :::spoiler **SUBPARAMETERS (TimeOfFlightData.msg):** | parameter | data type | data | unit | comment | | --------- | --------- | ---- | ---- | ------- | | distance | float | | mm | *distance measured by the activated sensor* | | error | int | <ul><li>0: No error</li><li>1: ...</li><li>2: ...</li></ul> | | | ::: :::spoiler **SUBPARAMETERS (BatteryData.msg):** | parameter | data type | data | unit | comment | | --------- | --------- | ---- | ---- | ------- | | state | unsigned int | | % | | | is_charging | bool | <ul><li>0: NO CHARGING</li><li>1: CHARGING</li></ul> | | *if the battery is currently charging* | | error | int | <ul><li>0: No error</li><li>1: ...</li><li>2: ...</li></ul> | | | ::: --- :::spoiler ### 機器人系統狀態回報 (dt/moving_platform) **MESSAGE:** * **TOPIC:** dt/moving_platform | Topic | Package | msg | | ----- | ------- | --- | | dt/moving_platform | center_control_msgs | **MovingPlatformData.msg** | * **PARAMETERS:** | parameter | data type | data | comment | | --------- | --------- | ---- | ------- | | actionState | int | <ul><li>0: IDLE<li>1: CHARGING</li><li>2: MOVING</li><li>3: ERROR</li></ul> | | positiveLimitSwitch | bool | <ul><li>0: not triggered</li><li>1: triggered</li></ul> | *input signal from micro switch to maxon_epos4* | | negativeLimitSwitch | bool | <ul><li>0: not triggered</li><li>1: triggered</li></ul> | *input signal from micro switch to maxon_epos4* | | frontUltrasonicSensorState | int | <ul><li>0: NORMAL</li><li>1: EMERGENCY</li><li>2: WARNING</li></ul> | *determine by the distance detected by ultrasonic sensor* | | rearUltrasonicSensorState | int | <ul><li>0: NORMAL</li><li>1: EMERGENCY</li><li>2: WARNING</li></ul> | *determine by the distance detected by ultrasonic sensor* | | positionRecognitionState | int | <ul><li>0: NORMAL</li><li>1: NO_DEVICE</li><li>2: ERROR</li><li>3: WARNING</li><li>4: NOT_CONNECTED</li></ul> | *the state sent by pxv* | | position | int | | *the position of the robot on the hanging track* | | velocity | float | | *the velocity of robot on the hanging track* | | current | short | | *the current output from motor driver to motor* | ::: --- :::spoiler ### 升降平台狀態回報 (dt/elevating_platform) **MESSAGE:** * **TOPIC:** dt/elevating_platform | Topic | Package | msg | | ----- | ------- | --- | |dt/elevating_platform| center_control_msgs | **ElevatingPlatformData.msg** | * **PARAMETERS:** | parameter | data type | data | comment | | --------- | --------- | ---- | ------- | | actionState | int | <ul><li>0: IDLE<li>1: HOMING</li><li>2: MOVING</li><li>3: ERROR</li></ul> | *0: not currently executing mission, 1: moving to home position, 2: executing assigned mission, 3: facing emergency(force to stop), the state will not switch to 3 when the ultrasonic sensor is in warning state* | | homeSwitch | bool | <ul><li>0: NOT_DETECTED</li><li>1: DETECTED</li></ul>| *input signal from micro switch to maxon_epos2* | | upperLimitSwitch | bool |<ul><li>0: NOT_DETECTED</li><li>1: DETECTED</li></ul>| *input signal from micro switch to maxon_epos2* | | lowerLimitSwitch | bool |<ul><li>0: NOT_DETECTED</li><li>1: DETECTED</li></ul>| *input signal from micro switch to maxon_epos2* | | bottomCollisionSwitch | bool |<ul><li>0: NOT_DETECTED</li><li>1: DETECTED</li></ul>| *input signal from micro switch to maxon_epos2* | | electroMagnetLock | bool |<ul><li>0: UNLOCK</li><li>1: LOCK</li></ul>| *output signal from maxon_epos2 to electroMagnet* | | bottomUltrasonicSensorState | int | <ul><li>0: NORMAL</li><li>1: EMERGENCY</li><li>2: WARNING</li></ul>| *determine by the distance detected by ultrasonic sensor* | | position | float | height | *the height of the motor approximately in cm, 1:50* | | brakingState | bool |<ul><li>0: BRAKE_RELEASE</li><li>1: BRAKED</li></ul>| *the state of the brake (holding or not)* | ::: --- :::spoiler ### 超音波狀態回報 (dt/ultrasonic_sensor) **MESSAGE:** * **TOPIC:** dt/ultrasonic_sensor |Topic| Package | msg | |-| -------- | -------- | |dt/ultrasonic_sensor| center_control_msgs | **UltrasonicSensorData.msg** | * **PARAMETERS:** | parameter | data type | data | unit | comment | | ---------------------- | --------- | ---- | ---- | ---------------------------------------- | | frontMeasuredDistance | float | | cm | *distnace measured by the front sensor* | | rearMeasuredDistance | float | | cm | *distnace measured by the rear sensor* | | bottomMeasuredDistance | float | | cm | *distnace measured by the bottom sensor* | : --- :::spoiler ### 電池狀態回報 (dt/battery) **MESSAGE:** * **TOPIC:** dt/battery |Topic| Package | msg | |-| -------- | -------- | |dt/battery| center_control_msgs | **BatteryData.msg** | * **PARAMETERS:** | paramter | data type | data | unit | comment | | | -------------------- | ------------ | ---------------------------- | ---- | --------------------------------- | ------------------------------------ | | temperature | unsigned int | | celcius degree | | | | voltage | unsigned int | | mV | 不可用 | | | current | unsigned int | | mA | | | | averageCurrent | unsigned int | | mA | 不可用 | | | relativeStateOfCharge | unsigned int | | % | | | | remainingCapaicity | int | |10mAh | | | | fullChargeCapacity | int ||10mAh | | | chargingPadDetection | bool | <ul><li>0: NOT_DETECTED</li> <li>1: DETECTED</li></ul>| | *to detect if the pad is touched* | | | chargingEnable | bool |<ul><li>0: DISABLE</li> <li>1: ENABLE</li></ul>| | *open the charging gate*| | chargingState | bool |<ul><li>0: NOT_DETECTED</li> <li>1: DETECTED</li></ul>| | *if the battery is currently charging* | ::: --- :::spoiler old battery | topic | paramter | data type |data| unit | comment | | | ---------------- | ------------------- | ------------------------ | --- | --------------- | ------------------- | --- | | **dt/battery**| | | = 7 | | | 接 | voltage | float[numOfVoltages] | | | | | | | numOfTemperatures | int | | | = 4 | | | | temperature | float[numOfTemperatures] | | Celsius degree | | | | | current | float | | Ampere(A) | | | | | totalVoltage | float | | Voltage(V) | | | | | remainingCapacity | float | | Ampere-hour(Ah) | 剩餘容量 | | | | batteryCapacity | float | | Ampere-hour(Ah) | 電池總容量 | | | | remainingPercentage | int | | % | 剩餘容量/電池總容量 | | ::: --- :::spoiler ### 雲台狀態回報 (dt/gimbal) **MESSAGE:** * **TOPIC:** dt/gimbal |Topic| Package | msg | |-| -------- | -------- | |dt/gimbal| center_control_msgs | **GimbalData.msg** | * **PARAMETERS:** | paramter | data type | data | comment | | ----------- | --------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | state | int | <ul><li>0: OFF</li><li>1: ON</li><li>2: INIT</li><li>3: ERROR</li></ul> | | | commandType | int | <ul><li>0: TURN_OFF</li><li>1: TURN_ON</li><li>2: ABSOLUTE_ANGLE_CONTROL</li><li>3: SLIGHTLY_CONTROL</li></ul> | 0: 命令關機, 1: 命令開機, 2: 絕對角度控制, 4: 微調控制 | | isBusy | bool | | true表示先前有位置控制且還未達到指定位置,後來的命令將會拋棄 | | tilt | float | | | | roll | float | | | | pan | float | | | ::: --- :::spoiler Evan的結晶收起來 ### 新增巡邏點(Server to ROS) : **/PatrolPoint/Create** paramter | data type |unit| comment | -------- | ------|-- |-| id|String|UUID|命令id| robotPositionEnable|bool||是否要將軌道車移動加入排程| cameraHangerHeightEnable|bool||是否要將升降加入排程| gimbalControlPoseEnable|bool||是否要將雲台轉動加入排程| robotPosition|int|mm|軌道車目標位子| cameraHangerHeight|float|cm|升降目標高度| gimbalControlTilt|int|int|tilt| gimbalControlRoll|int|int|roll| gimbalControlPan|int|int|pan| or ### 更新巡邏點(Server to ROS) : **/PatrolPoint/Update** paramter | data type |unit| comment | -------- | ------|-- |-| id|String|UUID|命令id| pointId|String(?)||巡邏點id| -|-|-|再討論需填入資料| ### 刪除巡邏點(Server to ROS) : **/PatrolPoint/Delete** paramter | data type |unit| comment | -------- | ------|-- |-| id|String|UUID|命令id| pointId|String(?)||巡邏點id| ### 查詢所有巡邏點(Server to ROS) : **/PatrolPoint/Request** ### 回報所有巡邏點(ROS to Server) : **/PatrolPoint/Response** (該命令為收到/PatrolPoint/Request後才觸發) ### 命令結果回覆(ROS to Server) : **/CommandResult** 只要收到任一從Server過來的command,則必須返回command result paramter | data type |unit| comment | -------- | ------|-- |-| id|String|UUID|命令id| result|int||Success/Fail| detail|String||result為Fail時可填入失敗原因| ### 中控對機器人命令 - 巡邏點(Server to ROS) : **/CenterControl/Patrol** | topic | parameter | data type | unit| comment | | -------- | -------- | -------- |-|-| | **/CenterControl/Patrol** | || | | ||commandID|int||備註1| ||patrolPointList|PatrolPointData[]||備註2| |||||| ::: :::spoiler Rich的結晶收起來 ```json= { "commandID": 17, "patrolPointList": [ { "robotPositionEnable": true, "cameraHangerHeightEnable": true, "gimbalControlPoseEnable": false, "robotPosition": 8986, "cameraHangerHeight": -50, "gimbalControlTilt": 0, "gimbalControlRoll": 0, "gimbalControlPan": 0 }, { "robotPositionEnable": true, "cameraHangerHeightEnable": true, "gimbalControlPoseEnable": false, "robotPosition": 10768, "cameraHangerHeight": -80, "gimbalControlTilt": 0, "gimbalControlRoll": 0, "gimbalControlPan": 0 }, { "robotPositionEnable": true, "cameraHangerHeightEnable": true, "gimbalControlPoseEnable": false, "robotPosition": 14503, "cameraHangerHeight": -350, "gimbalControlTilt": 0, "gimbalControlRoll": 0, "gimbalControlPan": 0 }, { "robotPositionEnable": true, "cameraHangerHeightEnable": true, "gimbalControlPoseEnable": false, "robotPosition": 16642, "cameraHangerHeight": -80, "gimbalControlTilt": 0, "gimbalControlRoll": 0, "gimbalControlPan": 0 }, { "robotPositionEnable": true, "cameraHangerHeightEnable": true, "gimbalControlPoseEnable": false, "robotPosition": 765, "cameraHangerHeight": -40, "gimbalControlTilt": 0, "gimbalControlRoll": 0, "gimbalControlPan": 0 }, { "robotPositionEnable": true, "cameraHangerHeightEnable": true, "gimbalControlPoseEnable": false, "robotPosition": 3897, "cameraHangerHeight": -80, "gimbalControlTilt": 0, "gimbalControlRoll": 0, "gimbalControlPan": 0 } ] } ``` 備註1: **commandID** | commandID | application | comment | | -------- | -------- | -------- | | 0x11 | Deploy | update patrol point list to ROS and execute| 備註2: **PatrolPointData** |PatrolPointData|parameter|data type|unit|comment| |-|-|-|-|-| ||robotPositionEnable|bool||是否要將軌道車移動加入排程| ||cameraHangerHeightEnable|bool||是否要將升降加入排程| ||gimbalControlPoseEnable|bool||是否要將雲台轉動加入排程| ||robotPosition|int|mm|軌道車目標位子| ||cameraHangerHeight|float|cm|升降目標高度| ||gimbalControlTilt|int|int|tilt| ||gimbalControlRoll|int|int|roll| ||gimbalControlPan|int|int|pan| ::: --- ### 載入ROS Config (cmd/rosconfig/reload) **REQUEST:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/rosconfig/reload | robot_controller | **ReloadRequest.msg** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 命令流水號 | **RESPONSE:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/rosconfig/reload/resp | robot_controller | **Response.msg** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 相關命令流水號 | | result | int | <ul><li>-1: 錯誤</li><li>0: 成功</li></ul> | | error | int | 錯誤碼 | | error value | comment | | ----------- | ------- | | 1 | *The size of the decelerative_section_start_points isn't equel to decelerative_section_end_points.* | **ROS YAML Config** 目前會在ROS config新增下列幾個設定: ``` trackIsCircle: true trackMinPosition: 1 #integer trackMaxPosition: 1000 #integer decelerativeSectionStartPoints: [10, 110] #integer decelerativeSectionEndPoints: [20, 120] #integer ``` --- ### 執行充電 (cmd/charging) **REQUEST:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/charging | robot_controller | **ChargingRequest.msg** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 命令流水號 | | position | int | 充電站位置 | **RESPONSE:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/charging/resp | robot_controller | **Response.msg** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 相關命令流水號 | | result | int | <ul><li>-1: 錯誤</li><li>0: 成功(執行完畢)</li><li>1: 命令已接受,處理中</li></ul> | | error | int | 錯誤碼 | | error value | comment | | ----------- | ------- | | 1 | *Charging process is canceled by joystick.* | | 2 | *Charging process is canceled by center control.* | | 3 | *The charging pad isn't contacted.* | | 4 | *Charging process has been tried 6 times and couldn't be started.* | --- ### 馬達控制 (cmd/motor/control) **REQUEST:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/motor/control | robot_controller | **ControlRequest.msg** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 命令流水號 | | motor | int | <ul><li>0: track motor</li><li>1: elevating motor</li><li>2: gimbal motor</li></ul> | | position | float | 當motor欄為0,1時,將參考此欄位 | | tilt | float | 當motor為2時,將參考此欄位<br/>range: [-40, 50] | | roll | float | 當motor為2時,將參考此欄位<br/>range: [-40, 40],但這邊先綁死0, roll通常不會用到 | | pan | float | 當motor為2時,將參考此欄位<br/>range: [-180, 180] | **RESPONSE:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/motor/control/resp | robot_controller | **Response.msg** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 相關命令流水號 | | result | int | <ul><li>-1: 錯誤</li><li>0: 成功(執行完畢)</li><li>1: 命令已接受,處理中</li></ul> | | error | int | 錯誤碼 | | error value | comment | | ----------- | ------- | | 1 | *All control is canceled by joystick.* | | 2 | *Process is interrupted by command.* | | 3 | *Moving Platform's control is canceled by center control.* | | 4 | *Elevating Platform's control is canceled by center control.* | | 5 | *Gimbal's control is canceled by center control.* | | 6 | *Tof sensor detects obstacle, interrupt Moving Platform's control.* | --- ### (TODO) 軌道速度設定讀取 (cmd/track/speed/read) ### (TODO) 軌道速度設定寫入 (cmd/track/speed/write) ### (TODO) 取得軌道路徑資料 (cmd/track/path/read) **REQUEST:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/track/path/read | robot_controller | **(TBD)** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 命令流水號 | **RESPONSE:** * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/track/path/read/resp | robot_controller | **(TBD)** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | req_sn | string | 相關命令流水號 | | result | int | <ul><li>-1: 錯誤</li><li>0: 成功(執行完畢)</li></ul> | | error | int | 錯誤碼 | | path | array | [ p1, p2, ...] (參考下面範例) | | error value | comment | | ----------- | ------- | | 1 | *data not ready* | | 2 | *...* | ```javascript= // cmd/track/path/read/resp 回覆訊息範例 { reqSn: xxxxx, result: 0, error: 0, path: [ { value: 1000, // pxv值 angle: 0, // 角度: 0~359度 type: 0 // 型態: 0:line, 1: curve }, { value: 1500, angle: 0, type: 0 }, { value: 2000, angle: 30, type: 1 }, ... ] } ``` --- :::spoiler Harrison的結晶收起來 > [name=Harrison] roll暫時不給使用者從中控中心控制,建議從中控就不給使用者輸入,但依然可以先接,以便後續若需要開放 > skyTrakcerMotor_X和cameraDynamicHanger_Y部分分別需要左右上下的按鈕,共四,移動的速度我這裡會先寫死,若以後需要從中控中心決定速度再說 備註3:**commandID** (/CenterControl/Control) | commandID | application |data type|parameter| comment | | -------- | -------- | -------- |-|-| | 0x21 | MoveSkyTrackerMotor |float| skyTrackerMotor_X|以多少比例的速度移動(滿速由機上決定)| | 0x22 | MoveSkyTrackerMotorPoint|float|skyTrackerMotor_X |移動到指定點(滿速由機上決定)| | 0x23|MoveCameraDynamicHanger|float|cameraDynamicHanger_Y|以多少比例的速度升降(滿速由機上決定)| | 0x24 | MoveCameraDynamicHangerHome|int|home = 1|固定先傳送home = 1| | 0x25 | MoveGimbalBy5Degree|int|tilt, roll, pan |-1, 0, 1 (正反方向或是不動)| | 0x26 | MoveGimbalByAbsoluteAngle|int|tilt, roll, pan |give absolute angle| ### 命令結果回覆(ROS to Server) : **/CommandResult** 只要收到任一從Server過來的command,則必須返回command result paramter | data type | comment | -------- | ------|-| requestID|int|命令id(備註)| result|int|Success/Fail| errorCode|int|對應文件| 備註:**id** | commandID | prefix | suffix |content| | -------- | -------- | -------- |-| |0x1X|1|X| 回應topic: /CenterControl/PatrolPoint的執行結果| |0x11 | 1 | 1 || | 0x12|1|2|| |0x13|1|3|| |0x2X|2|X|回應topic: /CenterControl/Control的執行結果| |0x21|2|1|| |0x22|2|2|| |0x23|2|3|| |0x24|2|4|| |0x25|2|5|| |0x25|2|6|| |0x3X|3|X|| |0x31|3|1|| ||||| ::: --- ### 馬達連續移動 (cmd/motor/jog) **REQUEST:** ``` 行為描述 1. 當收到action為moving的命令,馬達會持續運轉一段時間 2. 在運轉期間內收到另一個命令時,馬達將延長運轉時間 3. 若在運轉期間結束時,沒有收到另一個命令,馬達將停止運轉 4. 若收到action為stop的命令,馬達將立即停止運轉 ``` * **TOPIC:** | Topic | Package | msg | | ----- | ------- | --- | | cmd/motor/jog | robot_controller | **JogRequest.msg** | * **PARAMETERS:** | parameter | data type | comment | | --------- | --------- | ------- | | motor | int | <ul><li>0: track motor</li><li>1: elevating motor</li><li>2: gimbal motor</li></ul> | | dir | int | [-1,0,1], 當motor欄為0,1時,將參考此欄位 | | tilt | int | [-1,0,1], 當motor為2時,將參考此欄位 | | roll | int | [-1,0,1], 當motor為2時,將參考此欄位 | | pan | int | [-1,0,1], 當motor為2時,將參考此欄位 | **RESPONSE:** * N/A --- #### 站點編號與對應PXV值 | index | moving_position | elevating_height | gimbal_degrees | | ----- | --------------- | ---------------- | -------------- | | 1 | 9347 | 380.0 | [8.0, -30.0, 60.0]| | 2 | 13150 | 615.0 | [-40.0, -31.0, -178.0] | | 3 | 14626 | 150.0 | [6.0, -19.0, -81.0] | | 4 | 16619 | 420.0 | [-25.0, 23.0, -60.0] | | 5 | 719 | 1000.0 | [-35.0, 0.0, -83.0] | | 6 | 3720 | 410.0 | [13.0, -14.0, 37.0] | | chargingStation | 14336 | 0.0 | [0.0, 0.0, 0.0] |-- --- # TGIO Realted Terminology [軌道工程常用專有名詞中英文對照](https://www.rb.gov.tw/public/files/artsinfo/1543368584-0.pdf) [懸掛軌道](https://www.google.com/search?q=hanging+railway&sxsrf=AOaemvJCmN5tnekP6NnQJ0ihXVOyZ_yvuA:1643002894215&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjM9v7e1sn1AhVrrlYBHdmaDMwQ_AUoAXoECAIQAw&biw=1396&bih=656&dpr=1.38): -~~track~~ hanging track 懸掛機器人: hanging robot/ rail based robot 巡邏機器人: inspection robot 升降平台: elevating platform 充電站: charging station 換軌站: track replacement station 巡邏/檢核點: inspection point 巡檢列表: inspection checklist 軌道區段: track section UI修改部分: | page on pdf | 修改前 | 修改後 | 備註 | | ----------- | ----- | ----- | --- | |1/16|Track Management|HangingTrack Management|單講track可能會偏向地面軌道| ||Point Management|Station Management| ||Patrol Point Management|Inspection Point Management| ||Patrol Point Details|Inspection Point Details| ||Zone Management|Specific Section Management| ||Car Details|Device/Robot Details| ||Schedule Management|Inspection Schedule Management| ||Patrol Point List|Inspection Point List| ||Map Management|???|討論一下| ||Track Point List|???|討論一下| |5/16|Hanger Control|(Elevating)Platform Control| |6/16|take-temperature|temperature measurement|與noise detection, pm 2.5detection一致| |8/16|Action list(s)|Inspection content/list|檢查內容會比較貼切一點嗎?可以討論一下| |12/16|Sersor capture report(s)|Sensor capture report(s)|typo| |13/16|Choose|Select| 2/14開會結果 巡檢列表 inspection list 雲台 gimbla要再討論 ex.PTRPlatform