---
# System prepended metadata

title: Dingo 期末報告

---

# Dingo 期末報告
>[HackMD連結](https://hackmd.io/@DingoBell/SJLhv6JNxg)

>[ 期中報告](https://hackmd.io/PU-IMZr-T4qc0oHrfqBXpQ?both)

>[Slide](https://docs.google.com/presentation/d/1PcN57-9hIHpBcS6xbGaHTz6qPtMZRbfjDCU5KOzFcwc/edit?slide=id.g36882a821f8_0_0#slide=id.g36882a821f8_0_0)
## 電量偵測修復

我們發現LCD螢幕上顯示的電量會一直卡在99%

## 電量顯示檢測
### 排查邏輯 
設定log在ROS運行時
如果不變 → 檢查 topic 名是否生效 / 檢查百分比計算、round() 邏輯
如果 log 顯示在變，但畫面不變 → 或 ImageDraw 坐標是否把新值畫進去了

依序檢查每個節點的output
- 快速測試方式: 將 battery line 接到直流供電器直接改變電壓來看液晶螢幕上面的值有沒有變
電壓電阻分配正常，而程式碼在經過測試後要吃到2.1-1.9V電壓才會改變，但PCB分壓結果為4.5-3V，後續應該會採用更改程式碼，修正成4.5-3V range，並再次測試



### 排查結果
發現問題1: BOM表上面的電阻值錯誤! 電路圖上面為22k電阻，但實際購買的是47k電阻，算完分壓後，應購買22k才是正確的！

發現問題2: PCB的分壓為4.5-3V, 但arduino中推算相對電量的程式需要2.1-1.9才會改變，重新調整範圍



## 腳部結構穩定度不足

1. Bambu A1設定：
   在 Leg Offset Mod 的.gcode檔案中，到 Layer43 設定 Pause，手動把培林放進去再繼續列印
    
2. 加入螺絲膠

## IMU
原本的package中並沒有IMU節點，需要加入作為強化學習的sensor
==-> 在dingo.launch新增IMU節點== `imu_publisher.py`

### 新增步驟: 

- 建立坐標系廣播(TF)
- CMakelists.txt變更
    - find_package、catkin_package、catkin_install_python

- 對應的package.xml
- 查找ros msg and topic
- 開rviz檢查是否有IMU相關節點資料

:::spoiler rosmsg show sensor_msgs/Imu

```bash=
$ rosmsg show sensor_msgs/Imu
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
geometry_msgs/Quaternion orientation
  float64 x
  float64 y
  float64 z
  float64 w
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity
  float64 x
  float64 y
  float64 z
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration
  float64 x
  float64 y
  float64 z
float64[9] linear_acceleration_covariance
```
:::



### 移動控制問題
1. 修改部分 `InputInterface.py` 中xbox對應ps4按鈕的問題，現在可以[踏步](https://youtube.com/shorts/Xw4FGWJ9rDc?si=j0AFEoZbxDPZq5Tc)了
2. 了解整個控制流程，之後debug應該可以更順利（[chatgpt對話紀錄](https://chatgpt.com/share/68333422-5700-8001-a54b-cc01d654d2e6)）
3. 接下來要解決前進的問題
4. 也發現沒辦法支撐自己 -> 新的腳掌還沒實裝
5. E-stop會一直被按下

### 行走的控制已經完成
修改ps4搖桿對照到xbox搖桿
走路方式：先按下y進入指令模式，接下來按下x開啟走路模式，在走路模式下就可以使用左蘑菇前進後退

### 問題：沒辦法承受負載
正常行走後，把狗放在地上卻沒辦法如預期移動

1. 檢查機構是否有正常安裝
在檢查過後發現，螺桿的長度有一隻特別長，沒有鎖到底

2. 測試馬達力量是否足夠
3. 嘗試使用巧拼作為增加地面摩擦力的方式

### 鏡頭架
設計完成，使用M4-10mm螺絲固定相機 (相機背部6mm，底座厚度3mm)
![image](https://hackmd.io/_uploads/ByFJ4kLmgx.png)




## 決策模型訓練
環境：
```
$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0

$ lscpu
Architecture:                         x86_64
CPU op-mode(s):                       32-bit, 64-bit
Byte Order:                           Little Endian
Address sizes:                        39 bits physical, 48 bits virtual
CPU(s):                               8
On-line CPU(s) list:                  0-7
Thread(s) per core:                   1
Core(s) per socket:                   8
Socket(s):                            1
NUMA node(s):                         1
Vendor ID:                            GenuineIntel
CPU family:                           6
Model:                                158
Model name:                           Intel(R) Core(TM) i7-9700F CPU @ 3.00GHz
Stepping:                             13
CPU MHz:                              4456.526
CPU max MHz:                          4700.0000
CPU min MHz:                          800.0000
BogoMIPS:                             6000.00
Virtualization:                       VT-x
L1d cache:                            256 KiB
L1i cache:                            256 KiB
L2 cache:                             2 MiB
L3 cache:                             12 MiB
NUMA node0 CPU(s):                    0-7

$ python3 -V
Python 3.8.10
```

平台：```Isaac Sim 4.5.0```

### 進度
#### 1. 建置環境(80%)
- 包括```ground```, ```light```, ```camera``` 以及 ```robot```
- ```robot```的`foot`因為技術問題一直讀取不到，導致後面設定獎勵函數有問題

#### 2. 設定`ObservationsCfg`(60%)
- 身體的速度與角速度，並且加上noise(即`IMU`輸入)
- `projected_gravity`，重力加速度投影
- 前進方向指令
- 前一次的動作輸出
- 關節速度與關節位置(之後為了符合我們的機器狗會刪除)
- RGB相機(還未加入)

#### 3. 設定```ActionsCfg```(100%)
- 所有12個關節的馬達

#### 4. 設定```EventCfg```(90%)
- 一些初始化設定包括摩擦力，質量等的隨機初始化，但因還不確定載重設定確切的數值
- 設定要機器人朝向的方向

#### 5. 設定```RewardsCfg```(60%)
- 沿著指定方向前進 權重：1.0
- 往其他方向前進 權重：-0.05
- 腳停留在空中 權重：0.5
- 大腿碰到地板 權重：-1.0
- 應該要加上觸發中止條件時的負權重`reward`
- 腳停留在空中目前設定是用小腿偵測，應該改成腳底

#### 6. 設定`TerminationsCfg`(100%)
- 身體碰到地板時重置

### 目前問題
- 訓練出來的狗幾乎不會動，只維持站姿
    推測是因為腳停留在空中的偵測條件不正確
- 雖然不太會跌倒，但應該要做到100％不會倒
    推測是沒有加上當觸發跌倒時的負權重獎勵
- 初始設定還未調整好
- 關節移動限制範圍還未設定完成
[決策模型成果影片](https://youtu.be/hEkcGRbYn7U)

##

##  補充tips

### 網路設定修改
可以進去netplan/50......yaml 改設定
改完輸入sudo netplan apply




## 進度表
![截圖 2025-06-18 下午1.26.47](https://hackmd.io/_uploads/HJOXCpyVgl.png)

BOM更新
新增一台D455 rgb深度攝影機

## 未來展望
- 串聯影像辨識模型，透過深度相機快速辨識障礙並自動繞過。
- 負載約1.5公斤的物品（模擬救援物資或偵測儀器），並確保依然能有效執行任務並維持步態穩定。
- 定點巡航、繞行工科系館。