# 佈置機械人須知

## 釋義

在本篇章中：

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

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

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

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

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

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

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

**IMU 感應器：**\
![指用於感應機械人加速度以及陀螺儀數據](https://173460135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmJJUr5WnvBDJV4DugYtP%2Fuploads%2FtLt6NshxUoFtbRE1Qzhi%2Fimage.png?alt=media\&token=b507573d-166b-40d9-ba59-db0c6a50f020)

**主界面：**\
![](https://173460135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmJJUr5WnvBDJV4DugYtP%2Fuploads%2FUG2Zaxjoy8ZmXm8lqlGS%2Fimage.png?alt=media\&token=90101fb8-95ff-42e1-b568-9902d3edbc76)

**程式界面：**\
指由 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連接或者按下屏幕任意地方，亦可能需要調到禁用模式以解除警告。不論手動還是自動模式程序均需要等待警告解除後才開始執行。\
![](https://173460135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmJJUr5WnvBDJV4DugYtP%2Fuploads%2FGpay0b2IHc7qoA91pwyR%2Fimage.png?alt=media\&token=450dda7c-970e-40f7-93f8-85768343c7e3)

### 自我檢查警告

程式會在開啟後進行自我檢查，如發現被組件使用的馬達未有插入端口，則會顯示該警告訊息。\
![](https://173460135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmJJUr5WnvBDJV4DugYtP%2Fuploads%2FHW7Hf1kvy19aXXwH3NVT%2Fimage.png?alt=media\&token=93c572e2-8725-4842-93ca-34cb28b35833)

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

當硬件設備斷線，則會顯示該警告訊息。\
![](https://173460135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmJJUr5WnvBDJV4DugYtP%2Fuploads%2FewkS65ke3ut46ZKIjbtl%2Fimage.png?alt=media\&token=67440071-941e-42c4-8c4e-9971d3a02c4c)

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