Rocker
terénní robot
Robota s nezávislým pohonem a řízením všech kol jsem si chtěl postavit již dávno.
Konečně jsem objevil vhodné pohony - robotická serva (WaveShare ST3215),
která splnila téměř všechny požadavky (a za rozumnou cenu).
A tak vznikl robot se čtyřkolovým podvozkem typu rocker-bogie.
Aktualizace: 28.1.2024 Odladěn driver pro komunikaci se servy
Základní údaje
- Autor
- Martin Locker
- Řídicí počítače
- low level - STM32F103
- high level - Raspberry Pi 3B
- Senzory
- IMU
- GPS
- Lidar LDrobot LD-06
- hloubková kamera RealSense D455
- Pohon
- 8x digitální robotické servo WaveShare ST3215
- Napájení
- pohony LiPol 3s 5Ah
- elektronika power banka 20Ah
- Koncepce
- čtyřkolový podvozek typu Rocker-bogie (výkyvné uložení kol)
- každé kolo má nezávislý pohon a nezávislé natočení směru
Charakteristika robota
Podvozek
Podvozek robota je postaven z hliníkových profilů, plexi a dílů vyrobených 3D tiskem z PLA.
Snahou bylo udělat konstrukci co nejčistší (aby nikde nic nepřekáželo, nekoukaly dráty, ...).
Takže některé části jsou nakonec celkem komplikované - převodovka s pohonem uvnitř kola,
vidlice kol, jejímž vnitřkem vedou vodiče k servům (viz. fotky).
Kolo |
Vidlice kola |
Pohon kola |
Kompletní pohon |
Součásti kyvných ramen |
Tělo robota |
Podvozek 2 |
Podvozek 3 |
Podvozek 4 |
Řízení pohybu
Podvozek je navržen tak, že osy zatáčení kol jsou ve vrcholech čtverce (robot má stejný rozchod
i rozvor kol).
Díky nezávislému natáčení každého kola lze realizovat dva základní způsoby řízené:
Vlastní řízení (výpočty natočení kol a jejich rychlosti) řídí mikrokontroler na základě povelů z nadřízeného systému
(1. dopředná rychlost + úhlová rychlost, 2. rychlost + směr).
- "automobilové" řízení s (ackermannovým) řízením všech čtyř kol a samostatným řízením rychlosti každého kola
- synchrodrive (všesměrové řízení) - všechna kola natáčena do stejného směru a otáčejí se stejnou rychlostí
+ otáčení na místě (kola se natočí ve směru kružnice procházející osami natáčení kol)
Vlastní řízení (výpočty natočení kol a jejich rychlosti) řídí mikrokontroler na základě povelů z nadřízeného systému
(1. dopředná rychlost + úhlová rychlost, 2. rychlost + směr).
Video
První jízda - dálkově řízeno
28. ledna 2024 - Odladěn driver pro komunikaci se servy
Po postrčení Martinem D. jsem (po delší době) vytáhl robota a pustil se konečně do
napsání rozumného rozhraní pro komunikaci s digitálními servy.
Snažil jsem se to napsat tak, aby to bylo použitelné na různých platformách
(zatím tedy AVR, STM32 a ESP32). Nejnižší vrstvu implementující jednodrátovou
sériovou komunikaci jsem oddělil od vyšších vrstev a pro STM32 vyzkoušel
tři varianty realizace - standardní využití knihovní obsluhy uartu
(s možností využití hw řešení single wire half duplex na STM32), vlastní obsluha
uartu přes přerušení (zatím nevyzkoušeno) a využití dma přenosu (to by měla být
cílová varianta). Bohužel zatím DMA přenos nepůjde použít, protože na použité desce
zrovna UART3 sdílí stejné kanály s rozhraním SPI1, které bude sloužit pro komunikaci
s RPi a tam je dma nutností.
Low level mikrokontroler by měl být v budoucnu schopen obsloužit všechny
periferie (kromě kamery), tj. pohony, imu, gps a lidar. Z hlediska pohonů
bude zajišťovat výpočet natočení jednotlivých kol a jejich rychlosti dle
povelů z nadřízeného systému a zpětné čtení enkodérů. U dalších periferií bude
zajišťovat periodické vyčítání dat. Proto se snažím napsat obsluhu tak, aby co
nejméně zatěžovala mikrokontroler. Použití dma pro uart jsem už zvládl (po
větším úsilí) při vyčítání lidaru. Proto to u komunikace se servy už celkem
šlo (jen se museli použít dva kanály - pro vysílání a příjem).
Závěr
- hotovo: vyčítání dat z lidaru, komunikace se servy
- k řešení: doladit řízení pohonů (výpočty natočení a rychlostí), komunikace s imu (třetí uart po fyzické vrstvě can), komunikace s RPi (spi)