Activarea sistemelor de operare pentru roboți

Driverul ROS1 pentru controlerul de motor ADI Trinamic

by gabi

Driverele ROS (Robot Operating System) au fost dezvoltate pe baza produselor de la Analog Devices, astfel încât acestea să poată fi utilizate cu ușurință în cadrul unui ecosistem ROS. Articolul oferă o prezentare generală a modului de utilizare și integrare a acestor drivere în aplicațiile, produsele și sistemele lor (de exemplu, roboți autonomi, hărți cu zone de siguranță și sisteme de colectare a datelor) precum și posibilitatea de a evalua imediat noile tehnologii și de a evita problemele de interoperabilitate cu produse terțe.

Dintre toate produsele care vor fi discutate aici, accentul va fi pus pe driverul ROS lansat recent pentru controlerele de motor ADI Trinamic™, acestea fiind module complete la nivel de placă, pentru controlul embedded al mișcării, bazate pe expertiza ADI Trinamic în domeniul controlului mișcării și pe competențele ADI în ceea ce privește tehnologia proceselor analogice și proiectarea sistemelor de alimentare.1

Ce este ROS?

ROS este un mediu software pentru robotică (n.red.: un “middleware”, care funcționează ca intermediar între hardware-ul robotic și software-ul care controlează robotul), acesta conținând un set de biblioteci software și instrumente puternice pentru dezvoltatori, pornind de la drivere până la algoritmi de ultimă generație, pe baza cărora pot fi dezvoltate sisteme sau aplicații robotice. Este un sistem multidomeniu (de exemplu, destinat produselor de consum, industriale, auto etc.), suportă diverse platforme, precum Linux, Windows, MacOS și unele platforme embedded, este 100% “open source” oferind și opțiuni comerciale. Suportul pentru ROS este abundent datorită resurselor dedicate din partea comunității globale, asigurând utilizatorilor o cale mai ușoară pentru proiectele și aplicațiile lor.

Cum funcționează tehnologia?

ROS a fost lansat în 2007 și a devenit una dintre cele mai populare platforme de prototipare pentru dezvoltarea robotică în domenii precum mașini autonome, roboți industriali, vehicule aeriene și multe altele. Aceasta a evoluat continuu și are acum două versiuni: ROS1 și ROS2.

Sistemele ROS1 și ROS2 trebuie să fie izolate, însă interfața ROS permite comunicația și schimbul de date între ele. Mai multe informații sunt disponibile la pagina ros2/ros1_bridge.

Factori ROS1 ROS2
Protocol de comunicație XMLRPC + TCPROS DDS
Arhitectură ROS master + distribuită Complet descentralizată
Build system (n.red.: set de instrumente și procese automatizate utilizate pentru a transforma codul sursă al unui proiect într-o aplicație sau un program executabil) Catkin (bazat pe cmake) colcon/ament
(bazat pe cmake)
Build output

(n.red.: Rezultatul final)

ros_ws/devel ros_ws/install
Parametri Server global de parametri
Reconfigurare dinamică
Parametri per nod
Lansare XML Python + alternative XML, YAML)
Comenzi roslaunch, rosrun, rostopic
etc.
ros2 launch, ros2 run,
ros2 topic etc.
Platforme În special ubuntu Linux, MacOS, Windows

Tabelul 1: Diferențe majore între ROS1 și ROS22

Platformele acceptate de ROS

ROS Noetic este versiunea finală a ROS1 care va fi suportată până în mai 2025, în timp ce ROS2 are distribuții de dezvoltare care rulează continuu de la introducerea sa în iunie 2020.

Pentru o listă completă, accesați aceste linkuri pentru platformele acceptate de ROS1 și platformele acceptate de ROS2.

ROS – Concepte de bază

Figura 1: Un flux de date de bază ROS (Sursă imagine: ADI)

Unele dintre conceptele de bază ale ROS, așa cum se arată în figura 1, sunt pachetele, nodurile, topic-urile, serviciile și mesajele.

Notă: Conceptele de bază ale ROS discutate în paragrafele următoare sunt similare atât pentru ROS1, cât și pentru ROS2.

Package (Pachet)

Pachetul ROS este principalul sistem de organizare a programelor sau nodurilor ROS. Este vorba despre cel mai mic element ce poate fi construit/distribuit (build/release) în ROS. Atunci când creați un pachet ROS, este important să configurați un spațiu de lucru ROS dedicat. Acest spațiu de lucru se numește spațiul de lucru catkin, în care catkin este sistemul “Build” oficial al ROS.

Nodes (Noduri)

Nodurile ROS sunt programele executabile realizate în ROS. Acestea sunt procese care îndeplinesc o sarcină specifică. Nodurile ROS pot comunica între ele prin utilizarea bibliotecilor client ROS, cum ar fi rospy, o bibliotecă client Python și roscpp, o bibliotecă client C++. Nodurile pot fi “topic subscriber” sau/și “topic publisher”. De asemenea, nodurile pot furniza sau utiliza un serviciu.3

Topics (Topic-uri)

Topic-urile ROS sunt canalele de date care sunt generate (sau, în termeni ROS, publicate) de un nod ROS.

În ROS, nodurile “publisher” sunt emițătorii unui topic, în timp ce nodurile “subscriber” sunt cei care ascultă un topic.

În figura 2, nodul generic_motor_control este emițătorul. /cmd_vel este topic-ul pe care velocity_publisher publică informația. Aceasta înseamnă că velocity_publisher furnizează informații privind viteza, bazându-se pe comenzile de control al motorului (sau viteza comandată – command velocity).

Figura 2: Publisher-subscriber. (Sursă imagine: ADI)

În timp ce nodul ros_application este configurat pentru a asculta (lister), velocity_subscriber se abonează la topic-ul /cmd_vel. Cu alte cuvinte, velocity_subscriber accesează sau utilizează informațiile privind viteza care sunt furnizate de velocity_publisher.

Messages (Mesaje)

În timp ce topic-urile sunt canalele de date, mesajele sunt datele în format compatibil ROS aplicabile diferiților senzori.

Exemple de senzori și mesaje aplicabile formatului ROS:

  • Camere Time of flight (ToF): sensor_msgs/Image, sensor_msgs/PointCloud
  • Senzor IMU (unitate de măsurare inerțială): sensor_msgs/Imu
  • Controlul motorului: geometry_msgs/Twist
  • Encodere de rotație: geometry_msgs/TwistStamped, geometry_msgs/TwistWithCovarianceStamped

Topic-urile ROS comunică prin trimiterea de mesaje (topic publisher) sau prin primirea de mesaje (topic subscriber) și trebuie să se încadreze într-un tip de date corespunzător.

De exemplu, în figura 2, informațiile privind viteza (command velocity) de la nodul velocity_publisher doresc să fie accesate/utilizate de nodul velocity_subscriber. Dacă topic-ul publisher, velocity_publisher, utilizează tipul de date geometry_msgs/Twist, topic-ul subscriber, velocity_subscriber, trebuie să aibă și el același tip de date.

Services (Servicii)

Modelul de comunicare publisher-subscriber nu are limitări, dar această flexibilitate nu îl face potrivit interacțiunilor de răspuns care necesită, adesea, un sistem distribuit.4

Serviciile permit nodurilor să comunice prin trimiterea unei cereri și primirea unui răspuns. Modelul de comunicare publisher-subscriber utilizează fișiere .srv în care sunt specificate descrieri ale serviciilor, cum ar fi tipul de mesaj al cererii și al răspunsului.

Figura 3: Exemplu de utilizare a serviciului. (Sursă imagine: ADI)

Serviciul este un model de comunicare sincron și bidirecțional în care există un client și un server. Nodul server este cel care furnizează serviciul, în timp ce nodul client este cel care trimite cererea și așteaptă un răspuns de la nodul server.

De exemplu, în figura 3, server_node furnizează un serviciu, SetVelocity.srv, pentru modificarea vitezei, vel. Serviciul acceptă valoarea vitezei în format float32 și returnează starea în format string; „success” dacă viteza solicitată a fost stabilită sau „FAIL”, în caz contrar.

Client_node trimite o cerere de setare a vitezei la 2,5 mbps. Odată ce server_node primește solicitarea, acesta trimite răspunsul “success”.

Integrarea soluțiilor ADI în ecosistemul ROS

ADI este membru al consorțiului ROS-Industrial – un proiect open-source care extinde capabilitățile software-ului ROS la hardware-ul și aplicațiile industriale relevante.5 Fiind parte a acestei comunități, ADI a avut ca obiectiv inițial crearea de module dedicate, axate pe domeniul industrial.

ADI a dezvoltat drivere ROS pentru diferite module dedicate. Pentru a prezenta driverele dezvoltate și a valorifica funcțiile ROS, ADI a dezvoltat Analog Devices Autonomous Mobot (ADAM), o platformă mobilă autonomă proprie (vezi figura 4).

Figura 4: ADAM. (Sursă imagine: ADI)

ADAM: Analog Devices Autonomous Mobot

ADAM este propulsat de ROS și este activat de diferite dispozitive bazate pe ROS. Platforma arată modul în care driverele ROS ale ADI pot fi integrate în aplicațiile roboților mobili – în special în navigația autonomă.

Figura 5 prezintă diagrama hardware a platformei ADAM, cu diferite module. Aceasta are conectate, în principal, următoarele dispozitive:

  • ADIS16470 sau senzori IMU bazați pe combinații multiaxiale de giroscoape de precizie, accelerometre, magnetometre și senzori de presiune – utilizați în principal ca reacție senzorială pentru îmbunătățirea estimării poziției/direcției.
  • ADBMS6948 este un dispozitiv de monitorizare a unei baterii cu mai multe celule, capabil să măsoare până la 16 celule de baterie conectate în serie, cu o precizie de măsurare foarte ridicată pe întreaga gamă de temperaturi.
  • EVAL-ADTF3175D-NXZ sau camera CMOS ToF oferă cea mai înaltă rezoluție de pe piață și poate fi completată cu procesare și calcul intensiv, drivere laser, sistem de management al puterii și instrumente de dezvoltare cu firmware/software de referință.
  • Controlerele de motor ADI Trinamic, sunt soluții complete, la nivel de placă, pentru controlul embedded al mișcării, bazate pe expertiza ADI Trinamic în controlul mișcării și pe tehnologia de procesare analogică și competențele ADI în proiectarea sistemelor de alimentare.1

Figura 5: Diagrama hardware de nivel înalt a ADAM. (Sursă imagine: ADI)

Figura 6 prezintă arhitectura ROS de nivel înalt al ADAM care utilizează drivere ROS și noduri multiple de aplicații/algoritmi necesare pentru navigația autonomă. Datele IMU (/imu/data_raw) și feedback-ul controlerului de motor Trinamic ADI (/tmc_info) sunt utilizate ca intrări pentru estimarea poziției, rezultând odometria robotului (/odom). Datele lidar (/scan) reprezintă principala intrare pentru algoritmul de localizare și cartografiere simultană (SLAM) pentru generarea unei hărți; datele ToF (/image_raw) pot fi, de asemenea, utilizate ca intrare pentru alți algoritmi SLAM. Nodul move_base va aștepta apoi orice poziție de obiectiv din partea utilizatorului și va trimite comenzi de viteză (/cmd_vel) către controlerul de motor ADI Trinamic pentru a deplasa robotul.

Driver ROS pentru controlerul de motor ADI Trinamic

Figura 6: Arhitectura ROS de nivel înalt a stivei de navigație a ADAM. (Sursă imagine: ADI)

Controlerele de motor ADI Trinamic (TMC – Trinamic Motor Controller) sunt soluții complete, la nivel de placă, pentru controlul embedded al mișcării, bazate pe expertiza ADI Trinamic în controlul mișcării, precum și pe competențele ADI în domeniul tehnologiei proceselor analogice și al proiectării alimentării.1

Suportând diferite tipuri de motoare, cum ar fi motoare pas cu pas pentru o singură axă sau mai multe axe și motoare de curent continuu fără perii (BLDC), interfețele disponibile includ CAN, EtherCAT®, RS-232, RS-485 și USB, iar protocoalele acceptate variază de la Trinamic Motion Control Language (TMCL™), CANopen® over EtherCAT (CoE), CANopen sau Modbus. 6

Un IDE numit TMCL-IDE este disponibil pentru a-i ajuta pe utilizatori să dezvolte aplicații și să permită reprogramarea ușoară a acestor module. Este utilizat fie TMCL pentru operare de sine stătătoare, fie protocolul standardizat CANopen® și permite utilizatorilor să seteze parametri, să vizualizeze date în timp real și să dezvolte/depaneze aplicații de sine stătătoare.

Deoarece TMC-urile permit o nouă clasă de actuatoare inteligente, iar ROS devine din ce în ce mai răspândit, în special în robotică, a fost dezvoltat un suport suplimentar, precum driverele ROS pentru aceste module, pentru a extinde și mai mult cazurile de utilizare pentru producție și automatizări industriale. Concret, aceste drivere ROS vor trebui să:

  • controleze viteza, poziția sau cuplul motoarelor
  • monitorizeze controlerul de motor și informațiile despre motor

Driverul TMC ROS este similar cu ceea ce oferă TMCL-IDE, cu excepția faptului că permite nodurilor dintr-un sistem cu capabilități ROS să utilizeze cu ușurință aceste TMC-uri fără a mai instala un driver suplimentar. La momentul publicării articolului, acesta este în măsură să suporte doar interfața CAN (în special SocketCAN), deși alte interfețe sunt în curs de dezvoltare și se planifică să fie suportate în curând.

Modulele ADI TMCM (Trinamic Motor Controller Module) acceptate în prezent sunt enumerate aici.

Arhitectura software

Figura 7: O arhitectură software de nivel înalt pentru adi_tmcl. (Sursă imagine: ADI)

După cum se observă în figura 7, adi_tmcl nu are nevoie de niciun driver suplimentar, deoarece utilizează driverele SocketCAN deja acceptate implicit în majoritatea sistemelor bazate pe Linux. În plus, adi_tmcl are propriul său interpret de protocol TMCL, ceea ce îl face capabil să înțeleagă comenzile de trimitere/recepție conforme cu TMCL solicitate de utilizator. Ca ultim strat, tmcl_ros_node oferă interfața directă la sistemul ROS sub formă de editori (publishers), abonați (subscribers) și servicii. Fiecare dintre acestea oferă anumite caracteristici configurabile cu un grup de parametri detaliați în secțiunile următoare.

Caracteristici

adi_tmcl oferă o serie de caracteristici, inclusiv:

  1. Suport pentru diferite plăci TMC
  2. Configurarea o singură dată a modulelor TMC utilizând TMCL-IDE
  3. Motor de deplasare/oprire
  4. Abilitatea de a obține informații despre TMC/motor
  5. Executarea de comenzi TMC personalizate
  6. Abilitatea de a obține valorile parametrilor tuturor axelor
  7. Abilitatea de a obține toate valorile parametrilor globali
  8. Suport pentru configurarea mai multor plăci TMC
  9. Integrare ușoară în sistemele/aplicațiile ROS

În curând vom publica o continuare a acestui articol, care va analiza detaliile acestor caracteristici însoțite de exemple de utilizare.

Concluzie

Controlerele de motor ADI Trinamic permit o nouă clasă de actuatoare inteligente. Pe măsură ce ROS a devenit din ce în ce mai răspândit, în special în robotică, a fost dezvoltat suport suplimentar pentru aceste module, cum ar fi driverele ROS, pentru a extinde și mai mult cazurile de utilizare pentru producție și automatizări industriale.

În acest articol, am demonstrat cum poate ROS să îmbunătățească dispozitivele pentru a beneficia de:

  • valoare adăugată, cum ar fi extinderea aplicațiilor industriale;
  • interoperabilitate mai ușoară cu produse terțe, posibilă datorită cadrului de comunicații ROS;
  • opțiuni mai largi pentru clienți în vederea utilizării produselor ADI în sistemele lor; și
  • Abilitatea de a evalua rapid noile tehnologii și de a începe să le utilizeze imediat. Pentru mai multe informații, vizitați pagina ADI: Industrial Robotics.

Referințe
1 “ADI Trinamic Hardware for Motor and Motion Control.” Analog Devices, Inc.
2 “ros2/ros2_documentation.” GitHub, Inc.
3 “Understanding ROS Nodes.” ROS.org.
4 “Services.” ROS.org.
5 “ROS-Industrial.” ROS.org.
6 “Industrial Communication Protocols and Interfaces for Motion Control Applications.” Analog Devices, Inc.

Autori:
Krizelle Paulene Apostol, Software Systems Engineer,
Jamila Macagba, Senior Software Systems Engineer, and
Maggie Maralit, Software Systems Design Engineering Manager

Despre autori:
Krizelle Paulene Apostol este inginer de sisteme software și face parte din centrul de dezvoltare din Filipine, lucrând în cadrul grupului “Intelligent Motion and Robotics” de la Analog Devices. Ea s-a alăturat ADI în Cavite, Filipine, în decembrie 2019. A absolvit FAITH Colleges cu o diplomă de licență în inginerie informatică. S-a implicat în diverse proiecte care se axează pe ROS, simulări Gazebo, dezvoltarea firmware-ului, protocoale de comunicație și dezvoltarea algoritmilor.

Jamila “Jam” Aria Macagba este inginer senior de sisteme software și face parte din centrul de dezvoltare din Filipine, lucrând în cadrul grupului “Intelligent Motion and Robotics” de la Analog Devices. Ea s-a alăturat ADI în Cavite, Filipine, în iulie 2018 și a absolvit Universitatea din Filipine Los Baños cu o diplomă de licență în inginerie electrică. Jamila se axează pe dezvoltarea și integrarea driverelor ROS în sistemele ROS.

Maggie Maralit este manager în ingineria proiectării sistemelor software și face parte din centrul de dezvoltare din Filipine, lucrând în cadrul grupului “Industrial Motion and Robotics” de la Analog Devices, Inc. Maggie s-a alăturat ADI în Cavite, Filipine, în aprilie 2019. A absolvit Universitatea din Filipine din Los Baños, Laguna, cu o diplomă de licență în informatică. În prezent, conduce un grup de ingineri în sediul din Filipine care susțin proiecte privind robotica industrială. Maggie a lucrat anterior ca specialist în aplicații la Hewlett-Packard din 2009 până în 2010; inginer software senior la Canon Information Technologies Phils., Inc. din 2010 până în 2013; inginer de dezvoltare firmware la Ionics EMS, Inc. din 2013 până în 2015 și inginer software senior specializat în dezvoltarea de software pentru sisteme embedded la Continental Automotive Singapore din 2015 până în 2019.

Analog Devices

 


Vizitați https://ez.analog.com

 

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

Adaugă un comentariu