AI SDK snabbare än människan?

AI SDK snabbare än människan?

I våra test så användes ett AI SDK som installerades på en enkortsdator.

Vid mätningarna så framgick tydligt att AI’n upptäckte svängarna i banan i god tid och kunde agera därefter.

Hur som helst så var reglerloopen i systemet inte tillräckligt bra. Men efter lite justeringar så kommer den vinna!

Test av H-brygga och bil

Test av H-brygga och bil

En liten testplattform för att kontrollera kopplingen av hårdvara. Här kopplas batteri in i H-bryggan tillsammans med en enkortsdator som skickar ut tre signaler: Två stycken för att bestämma rotationsriktningen på motorn. En PWM (pulse width monitor) för att bestämma hastigheten.

Denna enkortsdator ersätts senare av datorn som kör AI-modellen.

H-brygga med enkortsdator och motor

H-brygga med enkortsdator och motor

Att kontrollera motorn från en enkortsdator kräver en H-brygga. H-bryggan kan variera enormt i komplexitet och tålighet.

När man köper en H-brygga får man vara noga med följande:

  1. Hur hög spänning ska den klara av?
  2. Hur mycket ström ska den klara av?
  3. Hur många motorer ska den ha stöd för?
  4. Hur många olika sätt kan den påverka motorn?
  5. Logikspänning till H-bryggan.

I sitt enklaste läge så sörjer H-bryggan för att ta en styrsignal från enkortsdatorn och släppa på spänning från en annan strömkälla till motorn.

Den är uppbyggd av fyra stycken transistorer runt motorn som på ett schema formar ett H, därav namnet.

Accesstid accelerometer, benchmarking

Accesstid accelerometer, benchmarking

För att resultatet ska bli så bra som möjligt så behöver AI-modellerna så mycket och aktuell data som möjligt. Detta sätter press på flera delar av projektet.

Här testas läshastigheten från givarna, i detta fallet: accelerometern. En tom while-loop kör, som väntat, 100 iterationer väldigt snabbt. Samma antal och while-loop fast med ett anrop till accelerometern tar 2.16 sekunder. Detta resultatet var konsekvent genom alla tester, där antalet iterationer ändrades.

Vi kan alltså få data från accelerometern ungefär 50 gånger / sekund (= 50 Hz). Det är inte jätte hög hastighet jämfört med andra accelerometrar på marknaden, men det sparar oss tid. Dessutom tror vi nog ändå att 50 Hz kommer vara tillräckligt.

Test av sensorer, ställdon

Test av sensorer, ställdon

För att förbereda mjukvaru-modulerna och samtidigt testa accesstider så konstruerades här ett enkelt test. Datorn togglar (slår på och av) en av GPIO-kontakterna ett antal gånger. Tidtagning görs i mjukvaran med Pythons egna tidsbibliotek. På andra sidan sitter en röd LED för att ’visa’ effekten. Tiderna till ställdonen (LED i detta fall, motorn i framtiden) var tillfredsställande låga.

Bilbana med AI, start och bilarna.

Bilbana med AI, start och bilarna.

När bilbanan levererades så påbörjades mätningarna. Bilen öppnades och det fanns en hel del olika saker som skulle räknas på.

Vi behöver undersöka två olika (potentiella) störningar.

  1. Om vår bil står still och den andra bilen körs på full styrka. Hur mycket elektromagnetisk störning drabbas vår bil av då?
  2. Om vi kör vår bil på hög spänning. Hur mycket elektromagnetisk störning drabbas då vår Raspberry av vår egen motor?

Bilarna har ett par filter i sig. De är designade för att äta upp just dessa störningarna.

Roll, pitch eller yaw?

Roll, pitch eller yaw?

Yaw är lite intressantare än pitch. Här syns rotationen som uppstår vid en sväng. Däremot så visas bara hur mycket bilen svänger och inte direkt nödvändigtvis hur snabbt. Så utan en tidsaspekt så blir yaw ointressant.

Däremot är det definitivt en axel vi ska ha i åtanke och den kan mycket väl komplettera modellerna för prediktion.

Styra motor med Python

Styra motor med Python

När strömkällan (ofta batteri) och motorn är inkopplade i H-bryggan så saknas styrsignalerna. Dessa kommer, vanligtvis, från en enkortsdator. Här finns viss flexibilitet men det brukar behövas tre signaler. Två som tillsammans bestämmer riktningen på motorn och en tredje som bestämmer hastigheten. Denna utgörs av en PWM (Pulsbredds-modullering, på svenska). Här motsvarar en hög signal full gas och en låg signal ingen gas. Men för t. ex. 70%-ig gas så är signalen hög 70% av tiden och låg 30% av tiden.

Så ett exempel i Python3 skulle kunna vara (siffrorna är vilken GPIO-kontakt de är kopplade till):

directionOne = LED(1) directionTwo = LED(2) throttle = PWMLED(3)

def start(): directionOne.on() directionTwo.off() throttle.value = 0.7

Raspberry Pi i lager

Raspberry Pi i lager

Efter första halvåret av pandemin så var det väldigt svårt att få tag i en Raspberry pi, bland annat. Saker å ting ser ljusare ut nu på den fronten.

Bilbana med AI, handkontrollerna

Bilbana med AI, handkontrollerna

Handkontrollerna består av en potentiometer, ett ställbart motstånd.

Ju längre in knappen trycks desto mer fart får bilen. Denna bilbanan (eftersom den är ny) levererades med handkontroller som också hade mekaniska begränsningar. Man kunde alltså ställa in olika ’maxfarter’, detta för att barn ska kunna köra utan att köra av hela tiden. Dessa ignorerar vi helt och hållet.

Löda fast bandkabel

Löda fast bandkabel

Att använda bandkabel när det går är att rekommendera. Ledarna är väldigt mycket mer skyddade och det är lättare att hålla koll på de. Mindre risk för trassel och att de åker in i andra komponenter eller hjul och bråkar.

Det kan vara bra att, efter lödningen, fästa själva bandkabeln med lite häftmassa eller liknande för extra skydd. Detta gäller huvudsakligen under utveckling och testande av projektet.

« Till start