---
# System prepended metadata

title: 2023 賽季工筆
tags: [程式組工筆]

---

###### tags: `程式組工筆`

# 2023 賽季工筆

# 20230125（三）

## Image Recognition

### 陳伯豪

```
MEMO

1. ctrl c -> stop terminal
you will absolutely want to use this command while running anything related to apriltag

2. make sure webcam can be used on my laptop
  2-1. didn't know if webcam can be used on robot
         Cuz i don't know where to plug the webcam lmao
3. setup apriltag 
  3-1. finish install newest version v2023.1.2, here is the link.
        -> https://github.com/PhotonVision/photonvision/releases
    3-1-1. remember to download the **photonvision-v2023.2.1-winx64.jar** one

4. PhotonLib: Robot Code Interface
  4-1. Installing PhotonLib ( library ) 
    4-1-1. notice to install online, cuz the offline one is still work-in-progress
      -> https://maven.photonvision.org/repository/internal/org/photonvision/PhotonLib-json/1.0/PhotonLib-json-1.0.json

```

:::warning

**NO 1**

I think this is really IMPORTANT when you want to set up your environment or start to use apriltag.

[This screenshot is in the bottom of this page](https://docs.photonvision.org/en/latest/docs/getting-started/installation/sw_install/windows-pc.html)

![](https://i.imgur.com/vPmYvMh.png)

**NO 2**

something i think is very important, too.

[Link](https://docs.photonvision.org/en/latest/docs/getting-started/installation/networking.html#)

its pictures

![](https://i.imgur.com/4YAcDwY.png)

**NO 3**

[Website](https://docs.photonvision.org/en/latest/docs/programming/photonlib/index.html) teach you how to use apriltag

![](https://i.imgur.com/AoeNdCX.png)

:::

## Chassis

### 倪睿宏
* 早上我跑去拆機器人 清場地 還有其他雜工
* 本來要測Andymark底盤車結果壞了 顯庭幫我修
* 研究PathPlanner Lib 結果發現蠻多東西的 要花一些時間研究
* todo：PathPlanner, SetPointPID
* Chassis的Prototype Code有放在GitHub了
* Andymark底盤成功修好了，但是兩邊轉速不一樣，Victor沒有Encoder也很難用程式調整，不過至少能正常動起來
* 自動模式的軌跡追蹤還不知道怎麼寫，明天先從Charge Station的PID下手
* 結果現在的底盤車沒有Encoder，所以還是得先從PathPlanner下手 哭

# 20230126（四）

## Image Recognition

### 陳伯豪

```
MEMO

1. Github
  1-1. 完成push
    1-1-1. Markdown 要排時間講如何寫
      1-1-1-1. 格式
      1-1-1-2. 之後每個人要寫之前都要先 pull 下來再開始寫，不然之後 push 會有 error
    1-1-2. 同 Hong 寫的，之後要統一很多東西
  1-2. 解決Github相關問題
2. Update
  2-1. WPILib VS Code
    2-1-1. 更新到2023版本
    2-1-2. 要把檔案更新
  2-2. Library
    2-2-1. 之後都使用 Manage -> Online
    2-2-2. Library 的整理彙整我放在下面，建議每個人把他寫成 .txt 檔案放桌面
3. Apriltag
  3-1. 所有的程式備註我都放在Github的Markdown裡面了，可以直接去Github找
    
```

:::info

**Library 整理彙整**
,
* Kauai Labs
	
    ```
	https://dev.studica.com/releases/2023/NavX.json
    ```

* REV Robotics REVLib
	
    ```
	https://software-metadata.revrobotics.com/REVLib-2023.json
    ```
    
* PhotonVision
    
    ```
	https://maven.photonvision.org/repository/internal/org/photonvision/PhotonLib-json/1.0/PhotonLib-json-1.0.json
    ```

* Phoenix ( Pro and v5 )

    ```
	https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2023-latest.json
    ```

**NOTICE**

Phoenix 一定要用 v5 或是 Pro and v5，不然你會抓不到馬達（TalonFX）的 library

:::

## Chassis

### 倪睿宏
* 未來開會討論事項：
    * Git Commit 訊息規範
    * Pull & Push 相關注意事項
    * 常數 & 函數命名與寫法規範
    * 程式分工
* 雖然說GitHub Repo的Markdown要打Feature，但也不至於這麼誇張那麼多啦，這些感覺可以私底下傳Discord就好，不然真的會看到眼花
* 重點是Commit訊息要清楚：簡短但明確
* (雜工閒話) 今天早上被姜在宬找去分螺絲ㄏㄏ，下午又被幫幫找去切角鐵
* 今天我研究了PathPlanner的寫法，總算找出追蹤路徑的方法了
* PathPlanner只是幫助我們畫路徑的一個工具，它本質上只是Wpilib Trajectory System的一個外掛插件，所以我跑去看了官方的教學Docs
* 最後完成的程式我放在GitHub，下禮拜底盤出來就能測了，雖然還需要一些優化
* 2/18 有南科模擬賽，我們得加緊腳步！
* 明天Todo：完成SetPoint PID，優化Auto程式

## SuperStructure

### 彭柏鈞   
#### 今日進度:
- 和王敬銜討論了機械手臂的運作方式
  1.**絕對座標(X,Y,Z和rotate)**--以車子上的其中一點為原點(0,0,0)紀錄爪子當前所在位置及面朝方向，並用transform3D()來算出並讓手臂能正確抵達需要到的位置

  2.**挖土機**--直接以搖桿來操作手臂，分別將leftstick和rightstick的X軸和Y軸共四個控制方向來操作機器人
    * 這方法比較好用程式實行，但相對操作難度比較大
    
- 自動模式就讓它跑到指定地點用指定高度來算就好


# 20230127（五）

## Image Recognition

### 陳伯豪

```
2. -> I2 -> Enable

Login : pi
Password : FRC7130

sudo raspi-config
sudo service photonvision status
ifconfig
sudo shutdown -h now
```

## Chassis

### 倪睿宏
* 學會如何Code氣動
* 優化了Path Following的程式，把它寫成一個Command
* 完成Intake的程式

# 20230128（六）

## Image Recognition

### 施暄庭

#### **photon API**


- hasTarget    boolean

Whether the pipeline is detecting targets or not.

- targetPitch    double

The pitch of the target in degrees (positive up).

- targetYaw    double

The yaw of the target in degrees (positive right).

- targetArea    double

The area (percent of bounding box in screen) as a percent (0-100).

- targetSkew    double

The skew of the target in degrees (counter-clockwise positive).

#### **AprilTags Locations**
![](https://i.imgur.com/I8WlEC9.png)

# 20230130（一）

## Chassis

### 倪睿宏
未來研究事項：
* 路徑規劃 x 手臂移動的方法
* 把機器人鎖在充電台上的方法

## Imagine

### 陳伯豪

```
MEMO

1. Solenoid
  1-1. PDP 記得接保險絲
```

# 20230131（二）

## SuperStructure 

### 吳玠廷
#### 今日進度:
1. 研究出氣動(測試完成)
2. 測試底盤(鋁管歪掉不能走直線，機械組在重做)
3. 測試grabber arm(原本氣動兩段式改成夾三角錐單邊夾，抓方形夾單邊)
#### 問題解決:
1. ontrue/onfalse不支援Lambda所以改成
```java
new JoystickButton(js1, OIConstants.Btn_A).onFalse(grab);
```

### 彭柏鈞
#### 今日進度:
- 和Gayting一起寫完了氣動程式+測試
- 上傳Github😦
#### 問題解決:
- 氣動排除koff函式只用kforward和kreverse
- 上傳Github問題用"-f"~~硬推上去了~~

# 20230202（四）

## Image Recognition

```
MEMO

1. 從FABLAB借了樹梅派4與盒子，短HDMI線與轉接頭
2. 樹梅派接ROBOT鏡頭找不到待處理
```

### 今日進度

1. Apriltag update to v1.2
2. Apriltag update to v1.2.3

### 問題解決

- 重灌一次樹梅派，並使用指令確認是否有讀取到鏡頭，然後接上機器人就好了

```
v4l2-ctl --list-devices
```
```
v4l2-ctl --list-formats
```

- 但有發現了一個問題，在插上相機後，會導致樹梅派啟動程序重啟，是否會影響到運作，有待觀察 ~~考驗人品的時候~~

### command撰寫
基礎原理:

- 使用getBestCameraToTarget()函數將相機至目標的位移量以三維向量表示
>  X正-->前
>  Y正-->左
>  Z正-->上
- 分別使用前進和轉彎之PID進行機器速度之定義

AUTO 應用:
- 加入辨識ID之函數getFiducialId()
- 依據場地ID配置設定出追縱ID的排序
- 在未找到特定ID之AprilTag時以一特定速度旋轉旋轉盤(預想)

## Superstructure

### 彭柏鈞
今天只有我來好孤單🥲但手臂那些的都還沒做好也就很難處理了
#### 今日進度
- 將只有手動操控的手臂程式打好了
- 上傳Github + 終於弄懂Git那~~天殺的~~邏輯了 <img src="https://imgur.dcard.tw/iccjoSSh.png"></img>
#### 問題解決
- Git上傳Github一直卡的問題(不用-f)
  * 用新branch之後再merge就好

# 20230203（五）
## Superstructure
利用
    - Transland2d(3d)
- Rotation2d(3d)
- Transform2d(3d)
完成手臂到Track conter的座標轉換

### Prototype_Arm 
1. 目前選擇用搖桿操控，X軸控制spinner、Y軸控制手臂
2. 手動完成(還沒測試過)

## Chassis
* Intake 程式完成
* Charge Station LockPID 程式完成
* Todo: Auto動作串聯
* Refactor intake code

# 20230204 (六)

## Chassis
* Intake button bindings -> Down + Run 合併成一個動作
* 研究 pathplanner

### Paths

命名原則：<起始位置> - <獲取物件數量> - <是否登上充電台>

e.g. Pos1 - 1B - C 
起始位置在Pos1 獲取1個遊戲物件 會登上充電台
* Pos1-2B
* Pos1-1B-C
* Pos2-2B
* Pos2-1B-C
* Pos3-2B
* Pos3-1B-C

:::danger
PathPlanner 有自動鏡像功能，所以紅藍聯盟的路徑只要畫一次就好。
:::

# 20230205（日）

## Chassis
* 路徑我全刪了 還沒重畫
* 底盤確定能動了
* CANCoder能正常傳輸訊號 但數值出來都是0 不知為啥
* Auto沒測 因為Encoder還沒好
* 做場地囉
* 他們說有訂了4隻XBOX搖桿

# 20230206（一）

## Chassis
* 今天將Encoder數值回傳的問題修好了，問題是出在PID公式的除法

### 陳伯豪

今天有把底盤的 LockPID 寫好了，之後等東西弄好之後再去調整數據就可以了
然後有改動的地方我已經放在 Github 上面了

## Imagine

### 陳伯豪

今天就優化一下程式然後處理一下Github的東西

# 20230207（二）

## Chassis
* 路徑全部畫完了，總共45條，可模組化自由選配，但有一些曲線拉的不太好，要再修一下。
* 今天測試了昨天伯豪寫的LockPID，結果非常成功，感謝！
* 晚上跟Henry測試了Ramsete PathFollowing，結果Enable車子直接暴衝，發現是Odometry沒辦法正確抓取車子的位置，導致程式以為車子還停在原地就一直無腦加速。
* 目前有兩種解決方案：
    1. 自己寫一個
    2. 去研究Wpilib是怎麼算的，在看哪裡出問題
* 今日成就解鎖：開底盤車開到馬達掉下來AwA

# 20230208 (三)

## Chassis
* 今天發現Odometry的問題所在了，原本應該是更新機器人的位置的程式，我寫成重設機器人位置了哈哈哈，禮拜四再去測試看看

# Chassis 總統整

## 倪睿宏

### Spark Max 