17/01/2015
Autonome robotter, der navigerer intelligent gennem komplekse miljøer, er ikke længere science fiction. En af de mest fundamentale teknologier, der muliggør denne autonomi, er kortlægning – processen, hvor en robot opbygger en digital repræsentation af sine omgivelser. I hjertet af moderne robotudvikling finder vi Robot Operating System (ROS), et fleksibelt framework, der stiller en lang række kraftfulde værktøjer til rådighed for netop denne opgave. Denne artikel dykker ned i verdenen af robotkortlægning med ROS, fra de grundlæggende principper til de specifikke pakker og en praktisk guide til at skabe dit første kort.

Hvad er Kortlægning i Robotik?
I robotteknologiens kontekst henviser kortlægning (mapping) til processen med at skabe et kort over et miljø, som robotten kan opfatte. Målet er at generere en 2D- eller 3D-repræsentation, der fanger det rumlige layout, forhindringer og andre relevante træk ved omgivelserne. Dette kort er ikke bare et statisk billede; det er en datastruktur, som robotten bruger aktivt.
Kortlægning er en grundlæggende forudsætning for, at en robot kan navigere og operere autonomt. Ved at bygge et kort kan en robot:
- Forstå sin position: Gennem en proces kaldet lokalisering kan robotten bestemme, hvor den er på kortet.
- Planlægge ruter: Med et kort kan robotten beregne den mest effektive og sikre vej fra punkt A til punkt B.
- Undgå forhindringer: Kortet giver information om vægge, møbler og andre forhindringer, som robotten skal navigere udenom.
- Træffe intelligente beslutninger: Baseret på en forståelse af sine omgivelser kan robotten udføre komplekse opgaver mere effektivt.
Ofte udføres kortlægning og lokalisering samtidigt i en proces kendt som SLAM (Simultaneous Localization and Mapping). Dette er en af de mest udfordrende, men også mest afgørende, opgaver inden for mobil robotik, da robotten skal bygge et kort over et ukendt miljø, mens den samtidig skal holde styr på sin egen position inden for det kort, den er ved at skabe.
Robot Operating System (ROS): Rammeværket for Kortlægning
Før vi dykker ned i specifikke kortlægningsværktøjer, er det vigtigt at forstå platformen, de opererer på: ROS. Navnet "Robot Operating System" er lidt misvisende. ROS er ikke et traditionelt operativsystem som Windows eller Linux. Det er snarere et meta-operativsystem eller et middleware-framework, der kører oven på et eksisterende OS (typisk Ubuntu Linux). ROS' primære formål er at forenkle udviklingen af kompleks robotsoftware.
Dette opnås gennem en modulær tilgang. Et robotsystem i ROS er opdelt i små, uafhængige programmer kaldet Noder (Nodes). Hver node har ansvaret for en specifik opgave, f.eks. at læse data fra en laserscanner, styre motorerne eller udføre kortlægningsalgoritmen. Disse noder kommunikerer med hinanden ved at publicere og abonnere på datastrømme kaldet Topics. Dataene, der sendes over disse topics, er struktureret i formater kaldet Meddelelser (Messages). Denne arkitektur gør det nemt at udskifte, genbruge og distribuere softwarekomponenter, hvilket accelererer udviklingsprocessen markant.
Populære Kortlægningspakker i ROS
ROS-økosystemet tilbyder adskillige pakker designet til SLAM og kortlægning. Valget af pakke afhænger af robottens sensorer, beregningskraft og de specifikke krav til nøjagtighed. Her er nogle af de mest anvendte:
gmapping
gmapping (Grid-based FastSLAM) er en af de mest populære og veletablerede pakker til at generere 2D-belægningsgitterkort (occupancy grid maps). Den bruger en effektiv FastSLAM-algoritme og er ideel til robotter udstyret med en 2D-laserscanner (LIDAR) og odometri-data (information om robottens bevægelse fra hjulene).
Cartographer
Udviklet af Google, er Cartographer en moderne og yderst præcis SLAM-løsning, der kan skabe både 2D- og 3D-kort. Den anvender data fra forskellige sensorer som LIDAR og IMU (Inertial Measurement Unit) til at opnå imponerende nøjagtighed, selv i store og komplekse miljøer. Cartographer er kendt for sin fremragende evne til "loop closure", hvor den genkender steder, den tidligere har besøgt, for at korrigere kortet og reducere fejl over tid.

Hector SLAM
Hector SLAM er en letvægtspakke, der er særligt velegnet til 2D-kortlægning udelukkende baseret på LIDAR-data. En af dens store fordele er, at den ikke kræver odometri-information, hvilket gør den ideel til flyvende robotter (droner) eller systemer, hvor hjul-odometri er upålidelig.
RTAB-Map
RTAB-Map (Real-Time Appearance-Based Mapping) er en alsidig pakke, der understøtter både 2D- og 3D-kortlægning. Den er specielt stærk i langsigtede operationer, da den bruger et hukommelsesstyringssystem til at håndtere meget store miljøer. Den kan bruge visuelle data fra RGB-D-kameraer (som Kinect) eller stereokameraer ud over LIDAR-data.
Sammenligning af Kortlægningspakker
For at give et bedre overblik er her en sammenligningstabel over de nævnte pakker:
| Pakke | Dimension | Nøglefunktioner | Ideel til |
|---|---|---|---|
| gmapping | 2D | Grid-baseret FastSLAM, bruger laser og odomteri | Ressourcebegrænsede robotter, grundlæggende 2D-kortlægning |
| Cartographer | 2D/3D | Høj nøjagtighed, fremragende loop closure, bruger LIDAR/IMU | Komplekse miljøer, hvor nøjagtighed er kritisk |
| Hector SLAM | 2D | Letvægts, realtids-egnet, kræver ikke odometri | Droner eller robotter uden pålidelig odometri |
| RTAB-Map | 2D/3D | Udseendebaseret, loop closure, understøtter RGB-D | Langsigtede operationer, store miljøer, visuel SLAM |
| OctoMap | 3D | Octree-baseret repræsentation, volumetrisk kort | 3D-navigation, droneflyvning, manipulation |
Trin-for-Trin Guide: Oprettelse af et 2D-Kort med Gmapping
Lad os nu se på den praktiske proces med at skabe et 2D-kort ved hjælp af gmapping-pakken i et simuleret miljø. Dette er en fantastisk måde at lære processen på, før man anvender den på en fysisk robot.
Trin 1: Opsætning af ROS-Arbejdsområde
Sørg for, at du har en fungerende ROS-installation (f.eks. Noetic Ninjemys) og har oprettet et catkin-arbejdsområde. Dette er standardproceduren for al ROS-udvikling.
Trin 2: Installation af Nødvendige Pakker
Du skal installere gmapping-pakken samt simulator- og robot-specifikke pakker. For dette eksempel bruger vi TurtleBot-simulatoren. Åbn en terminal og kør:
sudo apt-get install ros-noetic-gmapping ros-noetic-turtlebot3-gazebo
Trin 3: Start af de Nødvendige Noder
Du skal starte flere noder: simulatoren (Gazebo) med robotten i en verden, robot-driverne og selve gmapping-noden. ROS bruger .launch-filer til at starte flere noder på én gang. Start simulatoren:
roslaunch turtlebot3_gazebo turtlebot3_world.launch
I en ny terminal starter du SLAM-noden:
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
Dette kommando vil også starte visualiseringsværktøjet Rviz, hvor du kan se kortet blive bygget i realtid.
Trin 4: Kør Robotten for at Kortlægge Miljøet
For at bygge kortet skal robotten bevæge sig rundt og scanne sine omgivelser. Du kan styre robotten manuelt ved hjælp af et teleoperations-script. Åbn en tredje terminal og kør:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Brug piletasterne til at køre robotten langsomt og metodisk rundt i hele miljøet. Prøv at dække alle områder og undgå pludselige, hurtige bevægelser, da dette kan forvirre SLAM-algoritmen. I Rviz vil du se, hvordan de grå områder (ukendt terræn) bliver sorte (frit rum) eller hvide (forhindringer), efterhånden som robotten udforsker.

Trin 5: Gem det Færdige Kort
Når du er tilfreds med kortets dækning og nøjagtighed, kan du gemme det ved hjælp af map_server-pakken. Åbn en fjerde terminal og kør:
rosrun map_server map_saver -f ~/my_map
Denne kommando gemmer kortet i din hjemmemappe. Den opretter to filer: my_map.pgm (et billedfil af kortet) og my_map.yaml (en metadatafil, der beskriver kortets opløsning, oprindelse osv.). Dette kort kan nu bruges til autonom navigation.
Ofte Stillede Spørgsmål (FAQ)
Er ROS et realtidsoperativsystem (RTOS)?
Det klassiske ROS (ROS 1) er ikke et realtidsoperativsystem. Dets standard kommunikationslag prioriterer fleksibilitet over garanteret rettidighed. Dog er efterfølgeren, ROS 2, bygget oven på DDS (Data Distribution Service), som tilbyder Quality of Service (QoS) indstillinger, der gør det muligt at opnå realtidsydelse, hvilket gør det egnet til mere krævende og tidskritiske applikationer.
Hvilken sensor er bedst til kortlægning?
Valget afhænger af opgaven. Til 2D-kortlægning er en 360-graders LIDAR (laserscanner) ofte det bedste valg på grund af dens nøjagtighed og rækkevidde. Til 3D-kortlægning bruges 3D LIDAR'er eller RGB-D-kameraer (som Intel RealSense eller Microsoft Kinect), der giver dybdeinformation sammen med farvebilleder.
Kan jeg bruge disse kort på en rigtig robot?
Absolut! Processen beskrevet ovenfor er meget lig den, man ville bruge med en fysisk robot. Forskellen er, at i stedet for at starte en simulator (Gazebo), ville du starte de hardware-drivere, der er specifikke for din robots sensorer og motorer. Det genererede kort er fuldt ud anvendeligt til navigation med den fysiske robot.
Konklusion
Kortlægning er en hjørnesten i udviklingen af autonome mobile robotter. Robot Operating System (ROS) har revolutioneret dette felt ved at levere et standardiseret, modulært og utroligt kraftfuldt økosystem af værktøjer. Fra robuste pakker som Gmapping og Cartographer til visualiseringsværktøjer som Rviz, giver ROS udviklere alt, hvad de behøver for at give deres robotter evnen til at opfatte, forstå og navigere i verden. Ved at mestre disse værktøjer kan man tage det afgørende skridt fra en fjernstyret maskine til et intelligent, autonomt system.
Hvis du vil læse andre artikler, der ligner Kortlægning i Robotik med ROS: En Komplet Guide, kan du besøge kategorien Teknologi.
