# 佈置機械人須知

## 釋義

在本篇章中：

**「Program」、「程式」：**\
指已經儲存在 V5 大腦中的程式，V5 大腦可供使用者同時儲存8個程式。

**「Auto Plan」、「自動計劃」：**\
指自動模式開始時的運行計劃

**「Load Program」、「載入程式」：**\
指從主頁面選擇並執行的程式，不是自動計劃。

**「Disable 」、「禁用模式」：**\
指機械人運行模式的一種，此模式下所有機械人的馬達將被斷電。

**「Autonomous Mode」、「自動」：**\
指機械人運行模式的一種，此模式下遙控器遙控桿和按鈕的信號將被屏蔽，機械人只能夠自動運行。

**「Driver Control Mode」、「手動」：**\
指機械人運行模式的一種，此模式下遙控器遙控桿和按鈕的信號將可以被獲得，用作控制機械人。

**場控：**\
指用於控制機械人運行模式的工具，在線上比賽中是一部電腦，實體比賽中是場地上的場地控制系統，或者手提場控板。

**IMU 感應器：**\
![指用於感應機械人加速度以及陀螺儀數據](/files/Xi5zI11sl7RAHarBkDca)

**主界面：**\
![](/files/1LubOJ3HqNUMI2K5DW69)

**程式界面：**\
指由 CMAPI 繪畫的界面。程式界面分為兩個部分，分頁內容以及菜單。使用者可以按下菜單的按鈕轉換到其他分頁，或者查看連接的電池的電量狀況。<br>

## 進入場地須知

<mark style="color:red;">將機械人小心地放到場地上。</mark>香港賽區的場地放置在地面上，放下機械人時應該小心，避免機械人的車輪軸承受力彎曲。

<mark style="color:red;">不要踏進場地，不要擅自移動場地道具。</mark>大部分情況下，設置機械人時不能踏進場地。

<mark style="color:red;">氣缸儲氣</mark>。根據競賽手冊，氣動裝置的充氣壓力最高可達100psi。然而，隊員可以充滿超過規定的氣壓，因為拔出充氣嘴時會有部分氣體洩漏。

<mark style="color:red;">設置好機械人初始位置、連接電源。</mark>隊員可以在機械人未連接電源、或停留在主界面的時候設置機械人的擺放位置、角度、車輪和齒輪的虛位、機關等等。有時候使用遙控器可以讓設置機械人變得方便，隊員可以在載入程式後（需要留意載入程式的注意事項）使用遙控器作幫助。

{% hint style="warning" %}
**遙控器應被妥善保管**。當有人正在設置機械人的時候，而機械人已經載入程式並正在運行手動模式，應避免將遙控器放在地上或場地上，以免被自己或其他人踢到或碰到遙控器按鈕，導致機械人移動發生意外。
{% endhint %}

<mark style="color:red;">設置機械人應盡可能準確。</mark>在場地上設置機械人的隊員應該與編寫自動計劃的隊員充分溝通，了解機械人初始擺放位置以及每個部件、馬達的初始角度。

{% hint style="warning" %}
**摺合機械人須注意安全。**&#x647A;合狀態的機械人會有隨時彈起的風險，注意所有使用橡筋、儲力裝置、齒輪、亞加力膠片的機械人結構的危險性。
{% endhint %}

<mark style="color:red;">載入程式前，應已設置好機械人</mark>。大部分情況下，載入程式後的一剎那所有馬達所處的位置會被程式認定為0，對機械人非常重要。

{% hint style="info" %}
**考慮重新載入程式。**&#x5982;果隊員在設置機械人前已經載入程式，則有可能違反上一條規則，你應該重新載入程式或者按下 Console 頁面的 Reset 按鈕重設感應器，以策安全。
{% endhint %}

<mark style="color:red;">載入程式時，應避免移動機械人。</mark>載入程式後的三秒內，機械人的 IMU 感應器會進行校正，應避免移動機械人，以免影響航向角度的計算。

{% hint style="info" %}
**機械人可能自行啟動。**&#x49;MU 感應器校正後，機械人的半自動程序將會啟動，一些部件例如發射器可能自行啟動以進行校正，隊員需要注意安全，以及在有需要時重新調整機械人的位置。
{% endhint %}

<mark style="color:red;">留意顯示屏上的警告訊息。</mark>如機械人顯示警告訊息，應該盡快處理問題，或者向裁判申請延遲賽局以進行維修。

<mark style="color:red;">留意顯示屏上的 Inspect 頁面的訊息。</mark>確保機械人所有馬達已連接，頁面上沒有灰色標誌，以及機械人航向角度數字沒有異常以及飄移情況。所有馬達所處的位置在介面上應顯示為0。如果機械人航向角度數字發生飄移情況，可以按下 Console 頁面的 Reset 按鈕重設感應器。

{% hint style="info" %}
**如果機械人顯示屏難以使用，可以忽略本規則。**
{% endhint %}

<mark style="color:red;">選擇並檢查自動計劃，即使已插入 SD Card。</mark>已插入 SD Card 的 V5 大腦會暫存上一局使用的自動計劃的編號、區域，以方便隊員不需要每次進入賽場時重新選擇自動計劃。然而，隊員應該每次都檢查已選擇的自動計劃是否正確。隊員亦需要留意介面顯示的地圖，灰色圖案的位置是否吻合機械人實際在比賽場地上的位置，並且再次確定定位系統的回傳值正常，航向角度沒有飄移情況。

{% hint style="info" %}
**如果機械人顯示屏難以使用，可以先插入場控。**&#x63D2;入場控後機械人會立即進入「里程計」頁面，無需人手干預。
{% endhint %}

<mark style="color:red;">蓋上螢幕保護蓋，檢查場地。</mark>檢查是否有零件散落在場地上，場地上的道具是否佈置正確。如有需要，可要求裁判進行修正。

<mark style="color:red;">插上場控，準備好後，向裁判示意。</mark>請記緊，在遙控器未插上場控前，裁判是沒有辦法開始比賽。這能夠盡可能拖延時間，也能夠避免負責場地控制的工作人員意外啟動已連接場控的機械人，導致隊員受傷。

## 程式界面

### 概述、「控制台」頁面

程式界面分為兩個部分，分頁內容以及菜單。使用者可以按下菜單的按鈕轉換到其他分頁，或者查看連接的電池的電量狀況。

控制台頁面是程式界面的主頁。控制台提供共10行空間給予使用者顯示資訊，而每一行支援設置獨立的點擊響應事件。

```cpp
log(0, "Hello World"); // 在第一行顯示 "Hello World"

display::llemu2::setLineCallback(4, [=] { 
  // 使用者按下第四行將會運行這裏
});
```

[![image](https://user-images.githubusercontent.com/12783829/211572353-1027dace-219f-4e5d-97ea-8db39ec658be.png)](https://user-images.githubusercontent.com/12783829/211572353-1027dace-219f-4e5d-97ea-8db39ec658be.png)

1. 轉換到「控制台」頁面
2. 轉換到「自動計劃」頁面
3. 轉換到「檢查」頁面
4. 轉換到「里程計」頁面
5. 電池的電量
6. 這一行會顯示 IMU 感應器的狀態，使用者可以按下這一行重新校正 IMU 感應器

### 「自動計劃」頁面

從CMAPI2遺留的分頁。使用者可以使用這個分頁選擇自動模式開始後執行哪一個自動計劃。使用者亦可以選擇`紅方`以及`藍方`，這會改變變數`is_blue_side`的值，讓程式在自動計劃中在不同區域的情況下執行不同的策略。以下是一個例子：

```cpp
#include "../user-variables.hpp"

void plan1() {
  if (is_blue_side) {
    ...
  } else {
    ...
  }
}
```

[![image](https://user-images.githubusercontent.com/12783829/211572832-295e319b-441d-4415-814d-9f75224d5bf2.png)](https://user-images.githubusercontent.com/12783829/211572832-295e319b-441d-4415-814d-9f75224d5bf2.png)

1. 自動計劃選擇按鈕
2. 執行區域選擇按鈕，可以選擇在`紅方`還是`藍方`執行，該按鈕會改變變數`is_blue_side`的值
3. 被選擇的自動計劃的描述

### 「檢查」頁面

使用者可以在`user-variables.hpp`檔案將需要「檢查」的變數使用`INSPECT`包括，變數的內容將會顯示在「檢查」頁面上。以下是一個例子：

```cpp
#pragma once

#include "main.h"
#include "cmapi.hpp"

extern std::vector<autoplan> autoplans;

GLOBAL pros::IMU gyro WITH(21);
GLOBAL GyroOdometry odom WITH(gyro)

GLOBAL Motors INSPECT(left_motors) WITH(GREEN, 20, 12);
GLOBAL Motors INSPECT(right_motors) WITH(GREEN, -13, -2);
GLOBAL long INSPECT(my_speed) WITH(10);
GLOBAL PID INSPECT(my_pid) WITH(12.34, 0.0, 7.8, 45);
GLOBAL pros::Motor INSPECT(left_motor) WITH(19);
```

[![image](https://user-images.githubusercontent.com/12783829/211573265-be259224-952f-4333-8c26-fa8c151c2754.png)](https://user-images.githubusercontent.com/12783829/211573265-be259224-952f-4333-8c26-fa8c151c2754.png)

1. 當檢查馬達組件（Motors），頁面會列出所有馬達的計步器讀數，順序根據程式碼而定，並以顏色表示馬達的連接狀態或者溫度。灰色代表馬達未有連接，藍色代表馬達溫度正常，黃色以及紅色代表馬達過熱。
2. 當檢查任何數字變數，變數的值會顯示在頁面上。
3. 當檢查 PID 實例，頁面會列出`P`值、`I`值、`D`值、`F`值、及最新輸出`Out`。
4. 當檢查 PROS Motor 實例，頁面會以顏色顯示設定的齒輪組類型`[G]`，並列出計步器讀數`Pos`、實際速度（單位RPM）`Vec`、溫度`Temp`、牛頓米`Nm`及輸出電壓`V`
5. 切換到其他頁面的按鈕

### 「里程計」頁面

這個頁面可視化機械人在場地的位置。座標單位為CM，0點在場地的中心，地圖的上方是場地的北面。機械人在不同的自動計劃的初始位置可以在`main.cpp`檔案進行設定：

```cpp
#include "autoplan/plan1.hpp"
#include "autoplan/plan2.hpp"
#include "autoplan/plan3.hpp"
#include "autoplan/plan4.hpp"
#include "autoplan/plan5.hpp"
#include "autoplan/plan6.hpp"

std::vector<autoplan> autoplans = {{[] {}, {0, 0, 0}, "Stop and wait until time's up"},
                                   {plan1, {-5_ft, 3_ft, 0}, "Plan 1 Description"},
                                   {plan2, {0, 0, 0}, "Plan 2 Description"},
                                   {plan3, {0, 0, 0}, "Plan 3 Description"},
                                   {plan4, {0, 0, 0}, "Plan 4 Description"},
                                   {plan5, {0, 0, 0}, "Plan 5 Description"},
                                   {plan6, {0, 0, 0}, "Plan 6 Description"}};
                                   
...
```

[![image](https://user-images.githubusercontent.com/12783829/211574456-b42b2316-ef0d-4754-8b20-fd877753b42f.png)](https://user-images.githubusercontent.com/12783829/211574456-b42b2316-ef0d-4754-8b20-fd877753b42f.png)

1. 機械人現時位置的計算結果，包括X座標、Y座標以及航向角度
2. 自動計劃選擇按鈕，與「自動計劃」頁面的按鈕功能相同
3. 機械人現時的位置
4. 自動模式啟動時機械人將會被設定到這個位置

## 警告訊息

### 已連接電腦警告

系統為確保機械人不會在仍然連接電腦的情況下意外啟動自動模式。使用者需要拔掉USB連接或者按下屏幕任意地方，亦可能需要調到禁用模式以解除警告。不論手動還是自動模式程序均需要等待警告解除後才開始執行。\
![](/files/J8GyFKFI1uEAGTwtAIZN)

### 自我檢查警告

程式會在開啟後進行自我檢查，如發現被組件使用的馬達未有插入端口，則會顯示該警告訊息。\
![](/files/2imx4lvVZEdvQMNViS1F)

### VEX OS系統設備斷線警告

當硬件設備斷線，則會顯示該警告訊息。\
![](/files/OeAnu8YEqdkcfnUUMsKq)

如果看見以上灰色或者橙色的全螢幕警告，即表示有馬達端口鬆脫，警告信號會在馬達斷線時或在程序開啟自我檢測階段發出，警告顯示的端口號碼應被進行檢查。<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cmapi3-doc.jerryio.com/bu-zhi-ji-xie-ren-xu-zhi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
