====== Autonoomia tarkvara virnad ====== Kaasaegsed autonoomsed süsteemid – alates isejuhtivatest autodest ja mehitamata õhusõidukitest (UAV) kuni mererobotite ja tööstuslike kaasrobotiteni – sõltuvad põhiliselt tarkvaraarhitektuuridest, mis on võimelised reaalajas tuvastama, tegema otsuseid ja juhtima. Kui mehaanilised ja elektroonilised komponendid määravad, mida süsteem saab teha, siis tarkvarapakk määratleb, kuidas see seda teeb – kuidas see maailma tajub, andmeid tõlgendab, tegevusi kavandab ja keskkonnaga ohutult suhtleb [66,67]. Autonoomiatarkvara erineb tavapärasest manus- või ettevõttetarkvarast mitmel kriitilisel viisil. * See töötab rangete reaalajas piirangute alusel. * See peab integreerima heterogeensete andurite andmed. * See peab toetama tõrketaluvust ja ohutust. * See toetab pidevat õppimist ja kohanemist tehisintellekti kaudu. * See suhtleb füüsiliste süsteemide, ühendatud võrkude, servaseadmete ja pilveteenustega. See ohutuskriitilise inseneri ja AI-põhise otsustusprotsessi kombinatsioon muudab autonoomiatarkvara tänapäevase andmetöötluse üheks kõige keerulisemaks valdkonnaks. ===== Autonoomia tarkvara põhilised funktsionaalsed nõuded ===== Autonoomiatarkvara peab saavutama neli peamist funktsionaalset eesmärki [68,69]: * **Taju:** keskkonna tuvastamine ja tõlgendamine (LiDARi, radari, kaamerate, sonari jne kaudu). * **Lokaliseerimine:** süsteemi täpse asukoha ja orientatsiooni hindamine maailmas. * **Planeerimine:** selliste radade või käitumisviiside loomine, mis täidavad missiooni eesmärke, vältides samas takistusi. * **Kontroll:** toimingute ohutu ja stabiilne teostamine, kompenseerides keskkonnamuutusi. Kõik need eesmärgid vastavad autonoomia virna erinevatele tarkvarakihtidele ja moodulitele. ===== Autonoomiale ainulaadsed tarkvara omadused ===== ^ Iseloomulik ^ Kirjeldus ^ Tähtsus ^ | Täitmine reaalajas | Peab töötlema anduri andmeid ja reageerima millisekundite jooksul. | Tagab ohutuse ja stabiilsuse. | | Determinism | Ettenähtav käitumine määratletud tingimustes. | Nõutav kinnitamiseks ja usalduseks. | | Skaleeritavus | Toetab suurenenud anduri andmeid ja arvutamise keerukust. | Võimaldab tulevasi uuendusi. | | Koostalitlusvõime | Integreerib erinevat riistvara, OS-i ja vahevara. | Hõlbustab modulaarsust. | | Vastupidavus | Peab vaatamata osalistele riketele jätkama töötamist. | Kriitiline missiooni järjepidevuse jaoks. | | Kohanemisvõime | Õpib andmetest või värskendab käitumist dünaamiliselt. | Tehisintellekti juhitud autonoomia võti. | Need omadused juhivad arhitektuuriotsuseid ja raamistike valikut (nt ROS, AUTOSAR Adaptive, DDS). ===== Autonoomia tarkvara kui mitmekihiline süsteem ===== Autonoomiatarkvara on kihiline, ühendades mitu tarkvaratehnoloogiat: * **Madala tasemega manustatud püsivara** (reaalajas juhtimine ja draiverid). * **Keskvara- ja sideraamistikud** (andmevahetus ja ajastamine). * **Kõrgetasemelised AI algoritmid** (taju, otsuste tegemine). * **Järelevalve- või pilvetasandi süsteemid** (pargihaldus, värskendused, andmeanalüütika). Nende kihtide kombinatsioon moodustab autonoomia tarkvaravirna, mis võimaldab keerukat käitumist, säilitades samal ajal usaldusväärsuse. Autonoomsuse tarkvara määrav aspekt on selle sõltuvus vahevarast – raamistikest, mis haldavad protsessidevahelist sidet (IPC), andmete jaotust ja aja sünkroonimist hajutatud andmetöötlussõlmede vahel. Mõned laialdaselt kasutatavad standardid: * ROS / ROS 2 (robotite operatsioonisüsteem): Modulaarne avaldamise ja tellimise side. * DDS (Data Distribution Service): reaalajas, QoS-il põhinev sõnumite standard. * MQTT / ZeroMQ: kerged protokollid pilve ja asjade Interneti integreerimiseks. Täielik tarkvarapakk on tarkvarakomponentide, raamistike ja teekide kihiline kogum, mis töötavad koos, et pakkuda täielikku süsteemi funktsioonide komplekti. Iga kiht pakub teenuseid selle kohal olevale kihile ja sõltub selle all olevast kihist. Vahevara, mis on mitmekihiliste arhitektuuride oluline osa, tagab, et tarkvaravirna kõik kihid saavad teavet deterministlikult ja turvaliselt vahetada [70]. Autonoomsetes süsteemides võimaldab tarkvarapakk integreerida: * Riistvara abstraktsioon (andurid, täiturid, arvutusüksused). * Vahevara (side ja andmevahetus). * Rakendustaseme moodulid (AI taju, planeerimine, juhtimine). * Süsteemihaldus (diagnostika, simulatsioon, autopargi uuendused). See on selgroog, mis võimaldab autonoomial toimida sidusa süsteemina, mitte lahtiühendatud moodulite kogumina (Quigley et al., 2009; Maruyama jt, 2016). Tehnilisest vaatenurgast määratleb tarkvarapakk, kuidas süsteemis on üles ehitatud funktsionaalsus, andmevoog ja juhtimine. **Modulaarsus ja abstraktsioon** Iga kiht eraldab keerukuse, pakkudes ülalolevale puhta liidese. * Arendajad saavad muuta üht kihti (nt tajualgoritme) ilma madalamaid kihte (nt draivereid) muutmata. * Võimaldab lihtsamat testimist, silumist ja taaskasutamist mitme sõiduki või rakenduse puhul. **Reaalajas ja deterministlik käitumine** Autonoomsed süsteemid toetuvad reaalajas reageerimisele. Virna arhitektuur tagab: * Õigeaegne suhtlus taju, planeerimise ja kontrolli vahel. * Deterministlik ajastamine RTOS-i tuumade või reaalajas Linuxi paikade abil [71]. * Mitme anduri andmevoogude sünkroonimine ajatempli ja ajatundliku võrgu (TSN) abil. **Koostalitlusvõime** Vahevara, nagu ROS 2 või DDS, standardib protsessidevahelise suhtluse. See võimaldab erinevate tarnijate tarkvaramoodulitel (nt ettevõtte A LiDAR-draiver ja ettevõtte B planeerija) koos töötada. **Tõrketaluvus ja koondamine** Virna kihilisus toetab ohutuse seisukohalt oluliste funktsioonide jaoks üleliigseid teid. Kui tajusõlm ebaõnnestub, võib varundusprotsess sujuvalt üle võtta, tagades vastupidavuse, eriti kosmose- ja autosüsteemides [72]. **Pidev integreerimine ja simulatsioon** Kihiline disain võimaldab arendajatel: * Integreerige tarkvarakomponente järk-järgult. * Testige neid, kasutades riistvara-in-the-loopi (HIL) ja tarkvara ahelas (SIL) meetodeid. * Kasutage simulaatoreid (nt CARLA, Gazebo, AirSim), et kinnitada ülemise kihi mooduleid ilma riistvara kahjustamata. **Juhtimine ja organisatsiooniline tähtsus** Tarkvaratehnoloogia juhtimise vaatenurgast pakub määratletud tarkvarapinn arendusprotsessi struktuuri ja juhtimist, mis annab järgmised peamised eelised: Tööjaotus. Meeskonnad võivad spetsialiseeruda kihtide kaupa – nt üks rühm tegeleb tajuga, teine ​​juhtimine, teine ​​vahevara. See paralleelselt arendab ja võimaldab kasutada domeenide teadmisi ilma häireteta. **Korduskasutatavus ja versioonikontroll** Korduvkasutatavad moodulid ja API-d kiirendavad arendust. Sellised tööriistad nagu Git, Docker ja CI/CD torujuhtmed tagavad hajutatud meeskondade jälgitavuse, hooldatavuse ja kiired värskendused. **Skaleeritavus ja elutsükli haldamine** Hästi struktureeritud pinu saab laiendada uute andurite või algoritmidega, ilma kogu süsteemi uuesti üles ehitamata. Elutsükli haldustööriistad (nt ROS 2 käivitussüsteemid, AUTOSAR Adaptive manifestid) säilitavad versioonide järjepidevuse ja sõltuvuse kontrolli. **Kvaliteedi tagamine (QA) ja sertifitseerimine** Kihilised tarkvaravirnad muudavad kvaliteedikontrolli ja vastavusraamistike, näiteks ISO 26262 (autode ohutustarkvara), DO-178C (lennundustarkvara) või IEC 61508 (automaatika funktsionaalne ohutus) rakendamise lihtsamaks. Iga kihti saab valideerida eraldi, lihtsustades dokumentatsiooni ja sertifitseerimise töövooge. **Kulude ja riskide vähendamine** Kui mitu projekti jagavad ühtset tarkvarapakki, langevad testimise, valideerimise ja hoolduse kulud märkimisväärselt. See lähenemisviis toetab kogu tööstust hõlmavaid algatusi, nagu AUTOSAR, mis standardib sõidukite tarkvara integreerimiskulude vähendamiseks. **Kihiline virn kui organisatsiooni plaan** Suurtes autonoomiaprojektides (nt Waymo, Tesla) toimib tarkvarapakk ka organisatsioonilise struktuurina. Meeskonnad on joondatud kihtidega: * Taju meeskond tegeleb sensorite ühendamise ja arvutinägemisega. * Planning & Control meeskond arendab käitumisloogikat ja trajektooride genereerimist. * Süsteemide meeskond haldab vahevara ja andmete levitamist. * Infrastruktuuri meeskond hooldab OS-i järge, simulatsioone ja DevOpsi torujuhtmeid. Seega toimib tarkvarapinn nii tehnilise arhitektuuri kui ka koordineerimise ja vastutuse organisatsioonilise kaardina [73]. **Reaalmaailma näide: ROS 2 kui kihiline virn** Roboti operatsioonisüsteem 2 (ROS 2) näitab, kuidas modulaarseid tarkvaravirnu rakendatakse: * Rakenduskiht: navigeerimine, kaardistamine, tajusõlmed. * Vahevara kiht: DDS andmevahetuseks, QoS konfiguratsioon. * OS-i kiht: Linux või RTOS koos POSIX API-dega. * Riistvara abstraktsioon: draiverid kaameratele, IMU-dele, LiDAR-idele. * Ehitamise ja juurutamise kiht: CMake, Colcon, Docker reprodutseeritavuse tagamiseks. Sellest kihilisest mudelist on saanud paljude akadeemiliste ringkondade ja tööstuse autonoomsete süsteemide alus — mobiilsetest robotitest autonoomsete sõidukiteni [74]). **Hästi määratletud tarkvaravirna eelised** ^ Eelis ^ Kirjeldus ^ | Selgus ja struktuur | Lihtsustab süsteemi mõistmist ja kasutuselevõttu. | | Paralleelarendus | Võimaldab mitmel meeskonnal samaaegselt töötada. | | Vahetatavus | Toetab komponentide asendamist ilma täieliku ümberkujundamiseta. | | Skaleeritavus | Võimaldab edaspidist laienemist minimaalse ümbertöötamisega. | | Hooldatavus | Hõlbustab silumist, versiooniuuendusi ja sertifitseerimist. | | Tõhusus | Vähendab kulusid, koondamis- ja integratsiooniriski. | Sisuliselt pole tarkvarapakk pelgalt tehniline artefakt – see on strateegiline võimaldaja, mis ühtlustab inseneriprotsesse, organisatsioonilist struktuuri ja autonoomsete platvormide pikaajalist jätkusuutlikkust. Autonoomia tarkvarapinu ning arendus- ja hooldusprobleeme käsitletakse järgmistes peatükkides. * [[en:safeav:softsys:autonomysoftstack]] * [[en:safeav:softsys:developmentchalenges]]