Robottien aivot auki – miten teet koneesta oikeasti fiksun kaverin?

Robottien ja tekoälyn maailma kiehtoo monia, mutta mistä oikein lähteä liikkeelle, kun haluat rakentaa oman “älykkään” koneen? Robotalk Podcastin emäntä Elli Enigma ottaa sinut mukaan työpajaan, jossa käydään läpi sensorit, aivot (eli ohjelmisto) ja kaikki se, mikä saa robotin ajattelemaan itsenäisesti.

Tekoäly robottiprojekteissa: Raspberry Pi Pico, Pi 5 ja Jetson Nano

Robottien älyttäminen on siirtynyt harrastajan ulottuville. Pienemmät mikrokontrollerit ja edulliset kehityskortit pystyvät jo pyörittämään koneoppimista reunalaskentana, eli ilman pilveä. Tässä katsauksessa käydään läpi, miten teet omasta robotistasi älykkään hyödyntämällä Raspberry Pi Picoa, Raspberry Pi 5:ttä ja NVIDIA Jetson Nanoa Pythonilla ja C++:lla.

Raspberry Pi Pico ja TinyML

Raspberry Pi Pico on edullinen, ARM Cortex-M0+ -pohjainen mikrokontrolleri, joka loistaa kevyissä AI-tehtävissä TinyML-frameworkien avulla. TensorFlow Lite Micro sallii pienien neuroverkkojen ajon suoraan microcontrollerin RAM-muistissa, esimerkiksi tunnistamaan ääniä tai yksinkertaisia kuvioita sensoreiden syötteistä.

  • Käytä MicroPythonia nopeaan prototypointiin
  • Optimoi mallit int8- tai uint8-kvantisoinnilla muistin säästämiseksi
  • Hyödynnä Picon PIO-oheispiirejä reaaliaikaiseen signaalinkäsittelyyn
  • Testaa simuloituna ennen lataamista laitteelle, jotta virheet tulee kiinni ajoissa

Pico sopii parhaiten sulautettuihin älytoimintoihin, joissa kaistanleveys ja virrankulutus on minimissään mutta älykkyyttä silti tarvitaan.

Raspberry Pi 5: monipuolinen AI-alusta

Raspberry Pi 5 on täysiverinen Linux-tietokone, jossa on neliytiminen Cortex-A76 2,4 GHz -suoritin, 4–8 GB LPDDR4 RAM ja PCIe-tuki ulkoisille NPU-kiihdyttimille. Se pystyy ajamaan TensorFlow Lite- ja PyTorch-malleja sulavasti sekä käsittelemään OpenCV-pohjaisa videoanalytiikkaa.

  • Asenna 64-bittinen Raspberry Pi OS ja päivitä pakettivarastot
  • Pipillä Python-kirjastot: numpy, pandas, opencv-python, tflite-runtime
  • Käytä SSD:tä PCIe-väylässä nopeaan mallien lataukseen
  • Ota GPU käyttöön OpenCL- tai Vulkan-rajapinnan kautta kevyisiin CV-sovelluksiin

Pi 5 soveltuu vaativiin reunalaskentatehtäviin, kuten reaaliaikaiseen kuvantunnistukseen, ääniavustajiin tai monimutkaisiin robottiprosesseihin.

NVIDIA Jetson Nano: reunalaskennan tehopaketti

Jetson Nano on NVIDIAn reunalaskentayksikkö, jossa on 128 CUDA-ydintä ja 4 GB LPDDR4 RAM:ia. Se tukee täyttä NVIDIA JetPack-stackia, TensorRT-kiihdytystä ja ROS-integraatiota, minkä ansiosta voit ajaa useita neuroverkkoja rinnakkain ja orkestroida autonomista toimintaa suoraan piirillä.

  • Flashaa JetPack SDK microSD-kortille ja aja nvpmodel-modi performance-tilassa
  • Käytä TensorRT-muunninta nopeaan inferenssiin ja int8-kvantointia
  • Integroi JetBot-robottikehykseen anturien datan keräämiseen ja ajo-opetukseen
  • Ota CUDA-streamit ja multi-threading käyttöön monisäikeiseen kuvankäsittelyyn

Jetson Nano on täydellinen valinta, kun robottisi tarvitsee kasvoja tunnistavia kameroita, kollisioon välttyviä lidar-antureita tai itsenäistä navigointia ROS 2 -ympäristössä.

Python ja C++ ohjelmointityökaluna

Python on yleisin valinta AI-mallien käsittelyyn ja prototypointiin: kirjastoista TensorFlow Lite, OpenCV ja PyTorch tarjoavat suoraan tuen pienille laudoille. C++ puolestaan mahdollistaa tiukan optimoinnin ajovaiheessa, kun inferenssin viiveet ja muistijalanjälki pitää pitää minimissä.

  • Rakenna datankäsittelyputket Pythonilla ja siirrä haastavat osat C++-laajennuksina
  • Käytä MicroPythonia Picon päällä logiikan testaamiseen ennen C++-porttausta
  • Hyödynnä SWIG:iä tai pybind11:ä yhdistääksesi C++-kirjastoja helposti Python-käyttöliittymään
  • Profioi koodi valmiilla työkalusarjoilla (gprof, cProfile) ja optoi pullonkaulat

Yhdistämällä Pythonin joustavuus ja C++:n suorituskyky saat robottiprojektisi sekä älykkääksi että responsiiviseksi.

Tekoäly ja robotiikka kulkevat nyt käsi kädessä harrastajasta ammattilaiseen. Pienistä mikrokontrollereista täysiverisiin reunalaskenta-PC:ihin löytyy ratkaisu jokaiseen tarpeeseen ja budjettiin – kunhan valitset oikean laudan ja ohjelmointiympäristön projektisi vaatimalle älykkyydelle.

Käytännön AI-robottiesimerkit: Pico, Pi 5 ja Jetson Nano

Harrastajan robotti saa uuden elämän, kun lisäät siihen tekoälyä. Seuraavaksi esitellään konkreettisia projektiesimerkkejä kolmella suositulla alustalla: Raspberry Pi Pico, Raspberry Pi 5 ja NVIDIA Jetson Nano. Mukana tarvittavat laitteistot, ohjelmistokehykset sekä näytekoodinpätkät Pythonilla ja C++:lla.

Raspberry Pi Pico: TinyML-robotin sielu

Raspberry Pi Pico ja TensorFlow Lite Micro mahdollistavat kevyet neuroverkot suoraan mikrokontrollerilla. Esimerkeissä hyödynnämme MicroPythonia ja C++:aa.

1. Esteentunnistusrobotti (Ultrasonic + TinyML)

  • Laitteisto: Raspberry Pi Pico, HC-SR04-ultrasonic, 2× servomoottoria
  • Ohjelmisto: TensorFlow Lite Micro C++ -malli, joka on kvantisoitu int8-muotoon
  • Toiminta: Pico laskee etäisyyden esteeseen ja ohjaa servoja kiertämään sitä ennakoinnin avulla

Mallin koulutus ja kvantisointi:

  1. Kokoa oma etäisyysdata Python+NumPy:lla
  2. Train/convert TensorFlow Lite Micro -malliksi
  3. Sisällytä mallin .h-tiedosto C++-projektiin

2. Keyword Spotting – äänikomennot

  • Laitteisto: Pico W, MEMS-mikrofoni, LED
  • Ohjelmisto: MicroPython + TensorFlow Lite Micro keyword spotting
  • Toiminta: Picon sisäisessä mikrofoni-API:ssa tunnistetaan „start“ ja „stop“ -komennot, LED syttyy käskystä

Keyword-mallin koulutus TensorFlow:lla ja vienti .tflite-muotoon onnistuu Raspberry Pi Pico -esimerkkirepojen avulla.

Raspberry Pi 5: AI Kitin voima reunalaskennassa

Raspberry Pi 5 yhdessä AI Kitin (Hailo-8L) kanssa kaivaa koneoppimisen pilvestä suoraan reunalle. Tässä kahdessa esimerkissä hyödynnämme Pythonia ja valmista Hailo TAPPAS –post-processing-työkalua.

1. Peeper Pam – pomo­ilmaisin

  • Laitteisto: Raspberry Pi 5 + AI Kit + Camera Module 3 Wide + Pico W + voltmetri
  • Toiminta: Pi 5 tunnistaa kasvoja reaaliajassa, web­sovellus lähettää „boss detected“ –signaalin Picon voltmetrille
  • Kielivalinta: Python (OpenCV + Hailo TAPPAS JSON-skenaariot)

Projektissa Pi päättää, onko kehossa pomo­taulu ja lähettää vain varoituksen Pico W:lle, jolloin voltmetrille muodostuu ADC-ohjausnäyttö. Kokonaisuus on inspiroiva esimerkki ja se tehtiin vain 3 päivässä.

2. Autojen laskenta ja seuranta

  • Laitteisto: Raspberry Pi 5 + AI Kit + Camera Module Wide
  • Toiminta: Edge Impulse + YOLOv5-malli tunnistaa ja laskee ajoneuvot tokaltaan tolpassa – useita kaistoja samanaikaisesti
  • Kielivalinta: Python (Edge Impulse SDK + OpenCV)
  1. Kouluta YOLOv5 custom-malli (dataa useista kaistoista)
  2. Vie malli TFLite-muotoon ja lataa Pi 5:lle
  3. Aja seuraava skripti:

Tulos: reaaliaikainen laskutoiminto tolppien virtaustilanteeseen ja datan tallennus CSV:ään oppimista varten.

NVIDIA Jetson Nano: kova kilpakumppani reunaytimessä

Jetson Nano tuo CUDA-ydinten ja TensorRT-tuen pieneen korttiin. Seuraavassa kaksi iskevää esimerkkiä Pythonilla.

1. Hello AI World – inferenssin alkeet

  • Laitteisto: Jetson Nano + USB-webcamera tai MIPI CSI
  • Ohjelmisto: jetson-inference (Python & C++)
  • Toiminta: valitsee esikoulutetun CNN-mallin (esim. GoogLeNet), näyttää luokkien todennäköisyydet reaaliajassa

tai paikallisesti:

Tämä esimerkki esittelee inferenssin GPU-kiihdytyksellä ja Python/C++-rajapinnat .

2. JetBot – autonominen tutkija

  • Laitteisto: Jetson Nano + AI KIT + PiCamera + DC-moottoriohjain
  • Ohjelmisto: Python (PyTorch + TensorRT + ROS2)
  • Toiminta: syväoppiminen radoilla, kiertää esteet reaaliajassa ja kokoaa tallentamaton dataa cloudiin
  1. Flashaa JetPack SDK ja asenna ROS 2
  2. Asenna jetbot-pkg ja konfiguroi motopinot
  3. Aja

JetBot-projekti yhdistää kuvantunnistuksen, SLAMin ja ohjauksen robotiikkakehikossa.

Kokonaisvertailu ja kielivalinnat

Käytännön esimerkit osoittavat, miten eri laitteilla ja työkaluilla voit kasvattaa robottisi älykkyyttä: kevyistä mikrokontrollereista aina moniytimisiin reunalaskentayksiköihin. Seuraavaksi voit valita tarkemman AI-kehitysympäristön, valita oikeat mallit ja syventyä optimointiin—projektisi rajana on vain mielikuvitus.

Mikä on ROS 2?

Robot Operating System 2 eli ROS 2 on avoimen lähdekoodin kehys robottiohjelmistojen rakentamiseen. Se on jatkokehitys alkuperäisestä ROS 1:stä, ja sen tavoitteena on korjata ROS 1:n rajoituksia parantaen kommunikaatiota, monialustatukea ja suorituskykyä.

Arkkitehtuuri ja middleware

ROS 2 käyttää ROS Middleware Interfaceä (RMW) erottamaan ydinarkkitehtuurin eri toteutuksista.

  • Yleisin RMW-implementaatio on Data Distribution Service (DDS), joka mahdollistaa hajautetun viestinvälityksen.
  • DDS:n Quality of Service -asetuksilla säädellään viiveitä, luotettavuutta, priorisointia ja skaalautuvuutta.
  • Arkkitehtuuri on suunniteltu tukemaan reaaliaikaista laskentaa ja sulautettuja järjestelmiä.

Perusrakenteet: solmut ja viestit

ROS 2:n ydinrakenteet ovat:

  • Node (solmu): itsenäinen prosessi, joka suorittaa laskentaa.
  • Topic (aihe): julkaisu/tilaus-malli viestien vaihtoon.
  • Service (palvelu): synkroninen pyyntö-vastaus -rajapinta.
  • Action: asynkroninen tehtävien hallinta aikakatkaisuineen ja palautteineen.

Solmut löytävät toisensa automaattisen discovery-protokollan kautta ja vaihtavat dataa joko julkaisten tai tilaamalla aiheita.

Keskeiset ominaisuudet

  • Node Lifecycle: hienojakoinen hallinta solmujen tilasiirtymistä ja virrankäyttöä
  • Turvallisuus: sisäänrakennetut todennus-, salaus- ja käyttöoikeusmekanismit
  • Reaaliaikaisuus: matalat latenssit ja deterministinen viestinvälitys DDS:n QoS-profiileilla
  • Monialustatuki: Linux, Windows, macOS ja sulautetut RTOS-järjestelmät
  • Monikielisyys: C++, Python, sekä joukko muita kieliä tuettuna ekosysteemipaketeilla.

Kehittäjätyökalut ja ekosysteemi

ROS 2 tarjoaa sarjan työkaluja, jotka nopeuttavat kehitystä ja virheiden selvitystä:

  • launch: monisolmuisten järjestelmien käynnistys ja konfigurointi
  • introspection: ajonaikainen topologian ja parametrien tarkastelu
  • debugging: viestien ja palvelujen seurantatyökalut
  • visualization: rviz2-kokonaisuus 2D/3D-näkymiin
  • plotting & logging: data-analyysi ja lokitiedostojen hallinta
  • playback: nauhoitettujen rosbag-datan toisto testausta varten.

Domain ID ja verkot

Jokaisella ROS 2 -verkolla on oma Domain ID -tunnus, joka eristää viestinvälityksen samassa fyysisessä verkossa.

  • Solmut, joilla on sama Domain ID, löytävät toisensa automaattisesti.
  • Eri Domain ID:t estävät yhteydenpidon, mikä on hyödyllistä testiympäristöissä ja moniverkkoratkaisuissa.

Vertailu ROS 1:n kanssa

ROS 2 on suunniteltu unelmien täyttämiseksi robotiikan kehittäjille, jotka vaativat skaalautuvuutta, luotettavuutta ja monipuolisuutta. Se tarjoaa tilan, jossa solmut kommunikoivat joustavasti, turvallisesti ja reaaliaikaisesti niin sulautetuissa ratkaisuissa kuin pilvestä reunaytimeen ulottuvissa sovelluksissa.

Mistä ROS 2 saa ladattua?

ROS 2:n virallinen lataussivu löytyy ROS:n ylläpitämästä dokumentaatiosta osoitteesta:
https://docs.ros.org/en/rolling/Installation.html

Täältä löydät asennusohjeet eri jakeluille (distroille) kuten Humble Hawksbill (Ubuntu 22.04) ja Kilted Kaiju (Ubuntu 24.04). Jakeluita tuetaan vielä tietyn ajan LTS-julkaisuina, joten valitse projektiisi sopiva versio ja käyttöjärjestelmä ennen asennusta.

Tuetut laitteet ja käyttöjärjestelmät

ROS 2 on suunniteltu toimimaan useilla alustoilla, ja REP-2000 määrittelee viralliset “tier 1” -käyttöjärjestelmät ja arkkitehtuurit.

Muilla alustoilla ROS 2 toimii usein Docker-konttien kautta tai kääntämällä lähdekoodista, mutta virallinen tuki on rajattu yllämainittuihin.

Kuinka ROS 2:ta ohjelmoidaan

Ubuntu:

Ympäristömuuttujat:

Valitse kieli:

  1. rclcpp (C++): tehokas, reaaliaikainen rajapinta
  2. rclpy (Python): nopea prototypointi ja skriptit

Luo työtila:

Tee yksinkertainen node:

C++

Python:

Julkaise ja tilaa viestejä:

  • .create_publisher() ja .create_subscription()
  • Synkroniset palvelut (Service) ja asynkroniset tehtävät (Action)

Lisätietoa ja yhteisöt

Näillä resursseilla pääset liikkeelle ROS 2:n latauksessa, asennuksessa ja ohjelmoinnissa – oli sitten kyseessä täysiverinen Linux-kone, kehityskortti tai sulautettu mikrokontrolleri.

Lisää Ellin artikkeleita, robotiikan ja tekoälyn rakenteluista: