Sunteți pe pagina 1din 10

UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

PROIECT DE AN LA DISCIPLINA
Programarea Roboților

Autori: Student Danila Mihai Bogdan


Student Doloiu Mihnea Dimitrie
Student Stoica Alexandu Mihail
Programul de studii: Robotică
Grupa 4LF801

Coordonatori: Prof. S. L. dr. Ing. Bogdan Corina

2024

1
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

FACULTATEA DE INGINERIE MECANICĂ

PROIECT DE AN LA DISCIPLINA
Programarea Roboților

Autori: Student Danila Mihai Bogdan


Student Doloiu Mihnea Dimitrie
Student Stoica Alexandu Mihail

Grupa 4LF801

Coordonatori ştiinţifici: Prof. S. L. dr. Ing. Bogdan Corina

2024

2
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

Cuprins

1 Tema proiectului......................................................................................................................4
2 Configurarea mediului virtual..................................................................................................4
2.1 Instalarea imaginii de ROS...............................................................................................4
2.2 Instalarea pachetelor.........................................................................................................4
2.3 Modelul robotului mobil...................................................................................................5
3 Scanarea harti...........................................................................................................................5
3.1 Algoritmul de GMapping..................................................................................................5
3.2 Scanarea harti in ROS.......................................................................................................6
4 Navigarea robotului.................................................................................................................7
4.1 Navigarea in ROS.............................................................................................................7
4.1.1 Nodul move_base......................................................................................................8
4.1.2 Nodul AMCL.............................................................................................................8
4.1.3 Pachetul map_server..................................................................................................8
4.1.4 Pachetul dwa_local_planner......................................................................................8
4.2 Simularea in ROS..............................................................................................................9
5 Referinte..................................................................................................................................9

3
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

1 Tema proiectului gmapping


Tema proiectului consta in dezvoltarea
unui robot mobil pentru localizare și cartografiere $ git clone
simultană (SLAM). Acesta are ca obiective sa poata https://github.com/ros-perception/slam_g
sa exploreze un mediu necunoscut prin construirea mapping.git
unei harti a mediului respectiv si sa se localizeze in OR
acel spatiu. S-a folosit Gazebo pentru a crea mediul
de simulare, senzorul folosit este LIDAR pentru $ sudo apt-get install ros-
detectarea obiectelor si scanarea mediului, iar ca kinetic-slam-gmapping
robot s-a folosit ReallyUsefulRobot creat de James
Bruton. base_local_planner

$ sudo apt-get install ros-


2 Configurarea mediului kinetic-base-local-planner
virtual
move_base
2.1 Instalarea imaginii de ROS
$ sudo apt-get install ros-
Imaginea de ROS folosita a fost data de kinetic-move-base
domnul Prof. univ. dr. ing. Macesanu Gigel,
aceasta avand versiunea de ubuntu 16.04, si
dwa_local_planner
distribuita de ROS_Kinetic. Masina virtuala
folosita a fost Vmware Workstation Pro.
$ sudo apt-get install ros-
2.2 Instalarea pachetelor kinetic-dwa-local-planner

Lista urmatoare prezinta toate pachetele care amcl


trebuie instalate, si modalitatile de instalare (unele
pachete s-ar putea sa fie deja instalate):
$ sudo apt-get install ros-
kinetic-amcl
gazebo
rviz
$ sudo apt-get install ros-
kinetic-ros-gz $ sudo apt-get install ros-
kinetic-amcl
teleop_twist_keyboard

$ sudo apt-get install ros-


kinetic-teleop-twist-keyboard

4
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

Dupa ce sau instalat toate pachetele, se vor


rula urmatoarele comenzi

$ cd catkin_ws

$ catkin_make

2.3 Modelul robotului mobil

Pentru a clona repo-ul cu robotul mobil


folosit, s-a rulat urmatoarele comenzi:

$ cd catkin_ws/src

$ git clone
1 Robotul in Gazebo
Figure

https://github.com/XRobots/ReallyUsefulR

obot

Pentru a deschide robotul in gazebo, se ruleaza


urmatoarea comanda

$ roslaunch

rur_detailed_description gazebo.launch

3 Scanarea harti
3.1 Algoritmul de GMapping

GMapping este un algoritm de scanare si


memorare a hartilor gridate (algoritm de SLAM),
folosind informatia de la senzori de proximitate
cu laser, si odometrie .Metoda foloseste un filtru
de particule, unde fiecare particula cara o “harta”
individuala a mediului scanat. Creearea harti se
face incrementral, folosind “scan-matching”
pentru a determina miscarea robotului, si apoi
actualizeaza harta, repetend acesti pasi pana cand
Figure 2 Clonarea repo-ului robotului mediul a fost scanat complet.

5
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

3.2 Scanarea harti in ROS

Se var ula urmatoarele doua comenzi pentru a


deschide robotul in gazebo si rviz.

$ roslaunch

rur_detailed_description gazebo.launch

$ roslaunch

rur_detailed_description display.launch

Mediul folosit pentru scanare, este modelul


“house_001” care a venit cu robotul nostru. Acesta va
fi plasat in Gazebo prin optiunea de insert, si
selectarea modelului “house_001”

Figure 3.2 Mediul de navigare


Pentru a putea misca robotul, folosim
comanda

$ rosrun teleop_twist_keyboard

teleop_twist_keyboard.py
Pentru a misca robotul fata spate,
se vor folosi tastele “i” si “,”, iar pentru
rotirea in sensul ceasornic si trigonometric,
se vor folosi tastele “j” si “l”.

Figure 3.1 Meniul de inserare

6
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

4 Navigarea robotului
Miscand robotul manual, se va scana 4.1 Navigarea in ROS
intreaga ariei a mapei, ca in exemplul de mai jos.
In acest subcapitol se va explica procesul prin
care robotul poate sa navigheze in
ROS, folosind harta scanata, de la capitolul anterior.
Se vor explica cum functioneaza pachetele folosite, si
cum acestea interactioneaza intre ele.

4.1.1 Nodul move_base

Figure 4 Miscarea de la operator a robotului Pachetul move_base permite


deplasarea robotului la o pozitie dorita.

Figure 5 Scanarea harti


Dupa ce harta a fost scanata complet, se var
ula urmatoarea comanda, pentru a salva harta.

$ rosrun map_server map_saver -

f labirint
Nodul ofera o interfata ROS pentru
Dupa cum se observa, numele fisierului este configurarea, rularea si interactiunea cu stack-ul de
labirint, acesta putand fi schimbat. Mapa salvata va Figure 6 Rutina de deblocare a robotului
arata in felul urmator : navigare al unui robot.

Robotul isi genereaza doua mape de cost,


una locala si alta globala. Ceea globala i-a in calcul
harta “a priori”, in cazul nostru este harta scanata, iar
cea locala i-a in calcul orice schimbare care poate sa
apara in mediu, cum ar fi aparitia unui obstacol in
calea robotului, astfel incat robotul sa-si actualizeze
drumul spre tinta.

Nodul move_base poate sa realizeze o rutina


de recuperare in cazul in care robotul a ramas blocat.
In figura de mai jos se arata o diagrama a ordinii
actiunilor de recuperare.

“Conservative reset” implica eliminarea


obstacolelor din costmap in afara unei anumite
Figure 7 Harta scanata
7

Figure 8 Stack-ul de navigare


UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

regiunii specifice. Robotul va realiza apoi o rotatie in caracteristici cum ar fi: proximitatea fata de
jurul propiei axe, pentru asi recalcula drumul. Daca obstacole, proximitatea fata de tinta, proximitate fata
robotul tot ramane blocat, acesta va realiza o actiune de path-ul global si viteza, unde traiectoriile care duc
de “Aggressive reset”, care la randul ei implica toate la coliziuni sunt eliminate.
obstacolele din afara unei regiuni rectangulare, in Se va alege traiectoria cu cel mai mare scor, si va
care robotul se poate roti in jurul propiei axe. Daca si trimite viteza asociata cu aceasta. Algoritmul se va
acest pas nu a deblocat robotul, atunci acesta va repeta pana cand se va atinge tinta.
aborta procesul de deplasare catre tinta, si va preciza
ca drumul spre tinta este imposibil de parcurs.

4.1.2 Nodul AMCL

AMCL este un algoritm probabilistic care


foloseste un filtru particule
pentru a estima pozitia 2D bazat pe datele primite
de la senzori. Nodul amcl preia scan-uri laser, harti
laser, si mesaje de transformare, si calculeaza
pozitia estimata a robotului.

4.1.3 Pachetul map_server

Ofera unelte pentru manipularea hartilor.


Se foloseste pachetul map server, pentru a incarca
harta scanata, in “navigation stack”, pentru a fi
folosita sa se calculeze global costmap-ul.

Figure 9 Evaluarea traiectorilor


4.2 Simularea in ROS
4.1.4 Pachetul dwa_local_planner
Se var ula urmatoarele doua comenzi pentru a
deschide robotul in gazebo si rviz.
Pachetul dwa_local_planner ofera un
controller care conduce o baza mobile in plan. Acest
controller are rol de a conecta path planner-ul la $ roslaunch
robot. Folosind o harta, planner-ul creaza o traiectorie
cinematica pentru ca robotul sa ajunga de start, la rur_detailed_description gazebo.launch
tinta dorita.
$ roslaunch
Idea din spate a algoritmului DWA
(Dynamic Window Approach) este de a esantiona in rur_detailed_description display.launch
spatiul de control al robotului (dx, dy, dtheta), iar
pentru fiecare esantion realizeaza simularea mersului Se va plasa mediul de la capitolul trecut,
inainte de la pozitia s-a curenta, pentru a prezice ce s- “house_001”, dupa care se var ula urmatoarea
ar intampla daca viteza esantionata ar fi aplicata comanda
pentru un timp (scurt) de timp.

Evalueaza fiecare traiectorie de la simularea


mersului inainte, folosind o metrica care incorporeaza

8
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

$ roslaunch rur_navigation

rur_navigation.launch

In RViz, va aparea mapa scanata de la


capitolul trecut, ca in imaginea de mai jos. Figure 10 Navigarea robotului in mediu folosind harta scanata, si senzorii

5 Referinte
 James Bruton. ReallyUsefulRobot.
Disponibil la:
https://github.com/XRobots/ReallyUsef
ulRobot. Consultat/accesat 20
octombire 2023.
 Pranshu Tople. How to create a Map
using Gmapping in ROS Simulation |
Figure 11 Incarcarea harti in memoria robotului James Bruton’s R.U.R ROS Simulation
Package. Disponibil la:
https://www.youtube.com/watch?
Pentru a naviga pe harta, se va folosi comanda v=lZVa8o1yxz0&list=LL&index=41&t
2D Nav Goal, robotul isi va creea un “path” pentru a =1780s. Consultat/accesat la: 20
naviga la punctul selectat. octombrie 2023.
 Pranshu Tople. Implementing Teleop in
Gazebo using ROS | Setting Robot
Properties in URDF generated from
Fusion 360. Disponibil la:
https://www.youtube.com/watch?

9
UNIVERSITATEA TRANSILVANIA DIN BRAŞOV

Departamentul Autovehicule și Transporturi

v=ufYxkNnEFYw. Consultat/accesat  Ros.org. map_server. Disponibil la:


la: 20 octombroie 2023. http://wiki.ros.org/map_server.
 Giorgio Grisetti, Cyrill Stachniss, Consultat/accesat la: 11 noiembrie
Wolfram Burgard. GMapping. 2023.
Disponibil la: https://openslam-  Ros.org. dwa_local_planner. Disponibil
org.github.io/gmapping.html. la:
Consultat/accesat 11 noiembrie 2023. http://wiki.ros.org/dwa_local_planner.
 Ros.org. gmapping. Disponibil la: Consultat/accesat la: 11 noiembrie
http://wiki.ros.org/gmapping. 2023.
Consultat/accesat 11 noiembrie 2023.  Pranshu Tople. Simulating
 Ros.org. move_base. Disponibil la: Autonomously Navigating Robot using
http://wiki.ros.org/move_base#move_ba ROS | @jamesbruton's R.U.R.
se-1. Consultat/accesat la : 11 Simulation Package. Disponibil la:
noiembrie 2023. https://www.youtube.com/watch?
 Ros.org. amcl. Disponibil la: v=DU31PuQjK-I&t=1169s.
http://wiki.ros.org/amcl. Consultat/accesat la : 25 noiembrie
Consultat/accesat la: 11 noiembrie 2023.
2023.

10

S-ar putea să vă placă și