Repository Summary

Description 清華大學動力機械系25級畢業專題項目
Checkout URI https://github.com/pomelo925/ttennis-pickup-robot.git
VCS Type git
VCS Version main
Last Updated 2025-05-18
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

TTennis Pickup Robot 桌球自動拾取智慧機器人

清華大學 動力機械系25級 畢業專題(2024)

本人(pomelo925)負責項目為全軟體、部分韌體及部分電路。 非本人負責項目最終會清楚標註貢獻者。

TTennis Pickup Robot 目標是在任意的桌球場中,自動化完成拾取,並抬升內置球架供運動員使用或將桌球傾倒於球架中,使選手能專注於訓練本身。TTennis Pickup Robot 具備動態避障能力,同時用戶可透過遙控器或螢幕來操控機器人,並調整機器人運動參數。

TTennis Pickup Robot 從機構設計、電路板設計、單晶片調適至上層的視覺處理、AI 模型部署、建圖定位與導航避障系統等皆是我們針對特殊的應用場景做開發,並不直接使用市面上的套件。同時軟韌體算法全部開源,代碼已解藕封裝,所有運行節點以虛擬化容器形式運行,十分利於有程式背景的人對特定算法做二次開發。


alt text

以 Nextjs / Framer Motion / Tailwind CSS 製作的 Web 操控介面。

</center> </br>

⭐⭐⭐ 整體架構 ⭐⭐⭐

如下圖,本專題主要區分為以下四大部分。 ![alt text](/5.Docs/assets/overall.png) </br>

⭐⭐ Hardware 硬體 ⭐⭐

外購硬體主要有相機 [Intel® RealSense™ Depth Camera D435](https://www.intelrealsense.com/depth-camera-d435/)、[Luxonis OAK-D](https://shop.luxonis.com/products/oak-d?srsltid=AfmBOoonQ7t1-zn0nqSzjS6hqH9pHZsBbMcbB3aGryrPGHOZsLWWNm30) 以及上位機 [iKOOLCORE R2](https://www.ikoolcore.com/en-tw/products/ikoolcore-r2?srsltid=AfmBOooM286Be_Vosi4SvQe132LjfMP1y9nNQp6Jv6tcy6CoUxvYuutZ)。 ![alt text](/5.Docs/assets/hardware.png) 我們自行設計 PCB 以增加複雜電路的穩定性與減少過多明線帶來的困擾。包含以下三塊電路板: * 電源分壓板:將 [18V工具機鋰電池](https://www.makitatools.com/products/details/BL1850B-2) 降壓至12V、5V、3.3V,同時支援 PD 快充,並且防電源反接及短路保護。其中 DC-DC Bucker 皆採用可調式閉路電壓控制晶片,並充分考慮降噪濾波。PD 快充用以支援上位機的運作。 * 邏輯電路板:運算單元為 Cortex M7 內核的 [STM32H723ZGT6](https://www.mouser.tw/ProductDetail/STMicroelectronics/STM32H723ZGT6?qs=sPbYRqrBIVkPaOxQT7wG%252BA%3D%3D),包含讀取直流馬達之增量式編碼器、閉路控制直流馬達、ROS1 節點通訊等等。並引出 USART 通訊引腳、編碼器端子座、外部晶振時間源、CP2102 TTL 轉 Type-C 通訊等等。 * 馬達驅動板:電力直接由電源分壓板供給 12V,PWM 控制訊號則由邏輯電路板經軟排線傳遞,馬達驅動晶片為 [VNH5019](https://www.mouser.tw/ProductDetail/STMicroelectronics/EVAL-VNH5019-P1?qs=4b8myOmUP%252BuULWYKW0CsPg%3D%3D)。由於功率較大,與邏輯電路板做物理隔離,抗 EMI。 ![alt text](/5.Docs/assets) </br></br>

⭐⭐ Firmware 韌體 ⭐⭐

開發平台為 [STM32CubeIDE](https://www.st.com/en/development-tools/stm32cubeide.html),下圖為本專案資料夾架構與各自任務。 ![alt text](/5.Docs/assets/stm32.png) 此為 C/C++ 混編專案,並將代碼封裝成以任務為導向的獨立資料夾,解藕並增加可移植性,架構圖中的箭頭部分,是針對底盤馬達PID調適中,ROS1、STM32、timer 間的變數傳遞關係。 > 實作細節可參閱 [全端機器人技術筆記 -【韌體】STM32CubeIDE - C/C++ 混編專案架構](https://hackmd.io/@925/robot/%2F%40925%2Fstm-project)。 </br></br>

⭐⭐ Software 軟體 ⭐⭐

軟體複雜度較高,因此會拆分成較多部分說明。 所有軟體的節點皆以 x86 arch Docker 容器形式啟動與結束,容器間共享網路與記憶體。 ![alt text](/5.Docs/assets/software.png) 這裡簡述各區塊任務,並於底下補述細節。後端軟體幾乎運行於 [ROS2](https://docs.ros.org/en/foxy/index.html) 平台之上。開發工具主要使用 [Visual Studio Code](https://code.visualstudio.com/)、[Cursor](https://www.cursor.com/)、[MobaXTerm](https://mobaxterm.mobatek.net/) 及 [Foxglove](https://foxglove.dev/ros) 等。 * 前端 - Nextjs / Framer Motion / Tailwind CSS * 與用戶最直接的交互接口,可點擊螢幕使機器人執行任務,亦顯示機器人即時運動訊息。 * 本專案模板與架構很大程度地參考 [ Cristian Mihai 的開源專案](https://www.youtube.com/watch?v=dImgZ_AH7uA&t=194s)。 * 後端 - Coordinator 協調器 * 作為最上層的節點排程與協調器,依當前任務及情景動態調度必要資源。 * 後端 - Navigation 導航 * 基於官方開源 [Nav2 導航堆棧](https://docs.nav2.org/),開發 AMR 的路徑規劃、動靜態避障、代價地圖堆疊等。 * 後端 - EdgeNN 神經網路邊緣運算 * [Luxonis OAK-D](https://shop.luxonis.com/products/oak-d?srsltid=AfmBOoonQ7t1-zn0nqSzjS6hqH9pHZsBbMcbB3aGryrPGHOZsLWWNm30),即時偵測桌球、桌球桌、置球架以及運動員,並回傳空間座標資訊。 * 後端 - RTAB-Map 建圖定位 * 使用開源 [RTAB-Map](https://introlab.github.io/rtabmap/) 為室內環境作三維建模,為導航節點提供定位的依據。 File truncated at 100 lines [see the full file](https://github.com/pomelo925/ttennis-pickup-robot/tree/main/README.md)