Turinys:

„Matlab“pagrįstas ROS robotų valdiklis: 9 žingsniai
„Matlab“pagrįstas ROS robotų valdiklis: 9 žingsniai

Video: „Matlab“pagrįstas ROS robotų valdiklis: 9 žingsniai

Video: „Matlab“pagrįstas ROS robotų valdiklis: 9 žingsniai
Video: Causes of Children's Fears 2024, Lapkritis
Anonim
Image
Image
„Matlab“pagrįstas ROS robotų valdiklis
„Matlab“pagrįstas ROS robotų valdiklis

Nuo vaikystės visada svajojau būti geležinis žmogus ir vis dar tai darau. „Geležinis žmogus“yra vienas iš tų personažų, kuris yra realiai įmanomas ir, paprasčiau tariant, trokštu kada nors tapti „Geležiniu“, net jei žmonės iš manęs juokiasi ar sako, kad tai neįmanoma, nes „tai neįmanoma, kol kas nors to nepadaro“(Arnoldas Schwarzeneggeris).

ROS yra nauja sistema, naudojama kuriant sudėtingas robotikos sistemas. Tai yra: automatizuota surinkimo sistema, nuotolinis darbas, protezavimo ginklai ir sunkiosios pramonės sektoriaus mašinos.

Mokslininkai ir inžinieriai naudoja ROS, kad sukurtų prototipus, o skirtingi pardavėjai ją naudoja kurdami savo produktus. Jis turi sudėtingą architektūrą, dėl kurios sunku valdyti luošą žmogų. MATLAB naudojimas sąsajos ryšiui su ROS sukurti yra naujas metodas, galintis padėti tyrėjams, inžinieriams ir pardavėjams kurti tvirtesnius sprendimus.

Taigi ši instrukcija yra apie tai, kaip padaryti „Matlab“pagrįstą ROS robotinį valdiklį, tai bus viena iš nedaugelio pamokų apie tai ir tarp kelių ROS instrukcijų. Šio projekto tikslas yra sukurti valdiklį, galintį valdyti bet kurį prie jūsų tinklo prijungtą ROS robotą. Taigi pradėkime!

vaizdo redagavimo kreditai: Ammar Akher, adresu [email protected]

Prekės

Projektui reikalingi šie komponentai:

(1) ROS kompiuteris/robotas

(2) Maršrutizatorius

(3) Kompiuteris su MATLAB (versija: 2014 m. Arba naujesnė)

1 veiksmas: nustatykite viską

Kaip viską nustatyti
Kaip viską nustatyti

Norėdami tai padaryti, naudoju „Ubuntu 16.04“savo „Linux“kompiuteriui ir „ros-kinetic“, todėl, kad būtų išvengta painiavos, rekomenduoju naudoti „ros kinetic“ir „ubuntu 16.04“, nes jis geriausiai palaiko „ros-kinetic“. Daugiau informacijos apie tai, kaip įdiegti „ros kinetic“, rasite apsilankę https://wiki.ros.org/kinetic/Installation/Ubuntu. Norėdami įsigyti MATLAB, įsigykite licenciją arba atsisiųskite takelio versiją iš čia.

2 žingsnis: supraskite, kaip veikia valdiklis

Supratimas, kaip veikia valdiklis
Supratimas, kaip veikia valdiklis

Kompiuteris paleidžia robotinį valdiklį MATLAB. Valdiklis priima „Ros PC/Robot“IP adresą ir prievadą.

„Ros“tema naudojama bendrauti tarp valdiklio ir „Ros PC/Robot“, kuris taip pat laikomas valdiklio įvestimi. Modemas reikalingas LAN (vietiniam tinklui) sukurti ir būtent tai priskiria IP adresus visiems prie jo tinklo prijungtiems įrenginiams. Todėl „Ros PC/Robot“ir kompiuteris, kuriame veikia valdiklis, turi būti prijungti prie to paties tinklo (ty modemo tinklo). Taigi dabar, kai žinote „kaip tai veikia“, pereikime prie „kaip jis pastatytas“…

3 veiksmas: sukurkite ROS-MATLAB sąsają

ROS-MATLAB sąsajos kūrimas
ROS-MATLAB sąsajos kūrimas
ROS-MATLAB sąsajos kūrimas
ROS-MATLAB sąsajos kūrimas
ROS-MATLAB sąsajos kūrimas
ROS-MATLAB sąsajos kūrimas

„ROS-MATLABInterface“yra naudinga sąsaja mokslininkams ir studentams, kurie prototipuoja savo robotų algoritmus MATLAB ir išbando juos su ROS suderinamais robotais. Šią sąsają gali sukurti „Matlab“robotikos sistemos įrankių rinkinys, ir mes galime sukurti savo algoritmo prototipą ir jį išbandyti ROS palaikantis robotas arba robotų simuliatoriuose, tokiuose kaip „Gazebo“ir „V-REP“.

Norėdami įdiegti robotikos sistemos įrankių rinkinį savo MATLAB, tiesiog eikite į įrankių juostos priedo parinktį ir ieškokite robotų įrankių rinkinio priedų naršyklėje. Naudodami robotų įrankių rinkinį galime paskelbti temą, pvz., ROS mazgą, arba užsiprenumeruoti ją ir padaryti ją ROS pagrindiniu. MATLAB-ROS sąsaja turi daugumą ROS funkcijų, kurių gali prireikti jūsų projektams.

4 veiksmas: gaukite IP adresą

Gaunamas IP adresas
Gaunamas IP adresas
Gaunamas IP adresas
Gaunamas IP adresas

Kad valdiklis veiktų, būtina žinoti savo ROS roboto/kompiuterio ir kompiuterio, kuriame veikia valdiklis MATLAB, IP adresą.

Norėdami gauti kompiuterio IP:

„Windows“:

Atidarykite komandų eilutę ir įveskite komandą ipconfig ir užsirašykite IPv4 adresą

„Linux“:

Įveskite ifconfig komandą ir užsirašykite įvestą adresą. Dabar, kai turite IP adresą, laikas sukurti GUI …

5 veiksmas: sukurkite valdiklio GUI

Sukurkite valdiklio GUI
Sukurkite valdiklio GUI
Sukurkite valdiklio GUI
Sukurkite valdiklio GUI
Sukurkite valdiklio GUI
Sukurkite valdiklio GUI

Norėdami sukurti GUI, atidarykite MATLAB ir komandų lange įveskite guide. Tai atvers gido programą, kurią mes sukursime savo GUI. Norėdami sukurti savo GUI, taip pat galite naudoti „MATLAB“programų dizainerį.

Iš viso sukursime 9 mygtukus (kaip parodyta pav.):

6 mygtukai: į priekį, atgal, į kairę, į dešinę, prisijungimas prie roboto, atjungimas

3 Redagavimo mygtukai: „Ros pc ip“, prievadas ir temos pavadinimas.

Redaguojami mygtukai yra mygtukai, į kuriuos bus įvedamas ROS kompiuterio IP, jo prievadas ir temos pavadinimas. Temos pavadinimas yra MATLAB valdiklio ir ROS roboto/kompiuterio ryšys. Norėdami redaguoti redaguojamo mygtuko eilutę, dešiniuoju pelės mygtuku spustelėkite mygtuką >> eikite į Inspektoriaus ypatybės >> Eilutė ir redaguokite mygtuko tekstą.

Baigę GUI, galite užprogramuoti mygtukus. Štai čia ir prasideda tikros linksmybės…

6 veiksmas: GUI redaguojamų mygtukų programavimas

GUI redaguojamų mygtukų programavimas
GUI redaguojamų mygtukų programavimas
GUI redaguojamų mygtukų programavimas
GUI redaguojamų mygtukų programavimas
GUI redaguojamų mygtukų programavimas
GUI redaguojamų mygtukų programavimas
GUI redaguojamų mygtukų programavimas
GUI redaguojamų mygtukų programavimas

GUI išsaugoma kaip.fig failas, tačiau kodo/atgalinio ryšio funkcijos išsaugomos.m formatu.. M faile yra visų mygtukų kodas. Norėdami prie savo mygtukų pridėti atgalinio ryšio funkcijas, dešiniuoju pelės mygtuku spustelėkite mygtuką> > Peržiūrėti atgalinius skambučius >> atgalinis skambutis. Tai atvers jūsų GUI.m failą ten, kur yra apibrėžtas tas mygtukas.

Pirmasis atšaukimas, kurį ketiname koduoti, yra ROS IP redagavimo mygtukas. Pagal funkciją edit1_Callback parašykite šį kodą:

funkcija edit1_Callback („hObject“, įvykio duomenys, rankenos)

pasaulinis ros_master_ip

ros_master_ip = get (hObject, 'String')

Čia funkcija apibrėžiama kaip edit1_Callback, reiškianti pirmąjį redaguojamą mygtuką. Kai šiame redaguojamame mygtuke įvesime IP adresą iš ROS tinklo, jis išsaugos IP adresą kaip eilutę visuotiniame kintamajame, vadinamame ros_master_ip.

Tada tiesiai po _OpeningFcn (hObject, eventdata, handles, varargin) apibrėžkite šiuos dalykus (žr. Pav.):

pasaulinis ros_master_ip

pasaulinis ros_master_port

pasaulinis teleop_topic_name

ros_master_ip = '192.168.1.102';

ros_master_port = '11311';

teleop_topic_name = '/cmd_vel_mux/input/teleop';

Jūs tiesiog visame pasaulyje užkodavote „ros-pc ip“(„ros_master_ip“), „port“(„ros_master_port“) ir „Teleop Topic“pavadinimą. Tai reiškia, kad jei redaguojamus mygtukus paliksite tuščius, šios iš anksto nustatytos vertės bus naudojamos prisijungiant.

Kitas atšaukimas, kurį ketiname koduoti, yra mygtukas „Port redaguojamas“.

Pagal funkciją edit2_Callback parašykite šį kodą:

funkcija edit2_Callback („hObject“, įvykio duomenys, rankenos)

pasaulinis ros_master_port

ros_master_port = get (hObject, 'String')

Čia funkcija apibrėžiama kaip edit2_Callback, kuri reiškia antrąjį redaguojamą mygtuką. Kai įvesime „Ros PC/Robot“prievadą iš ROS tinklo šiuo redaguojamu mygtuku, jis išsaugos prievadą kaip eilutę visuotiniame kintamajame, vadinamame „ros_master_port“.

Panašiai kitas atšaukimas, kurį ketiname koduoti, yra mygtukas Temos pavadinimas redaguojamas.

Pagal funkciją edit3_Callback parašykite šį kodą:

funkcija edit3_Callback (hObject, eventdata, rankenos)

pasaulinis teleop_topic_name

teleop_topic_name = get (hObject, 'String')

Panašiai kaip „ros_master_port“, tai taip pat saugoma kaip eilutė visuotiniame kintamajame.

Toliau apžvelgsime mygtukų atšaukimo funkcijas …

7 žingsnis: GUI mygtukų programavimas

GUI mygtukų programavimas
GUI mygtukų programavimas
GUI mygtukų programavimas
GUI mygtukų programavimas

Anksčiau sukurti mygtukai bus naudojami robotui perkelti, prijungti ir atjungti nuo valdiklio. Spaudžiamųjų mygtukų susigrąžinimas apibrėžiamas taip:

pvz. funkcija pushbutton6_Callback (hObject, eventdata, rankenos)

Pastaba: priklausomai nuo to, kokia tvarka sukūrėte mygtukus, jie bus atitinkamai sunumeruoti. Todėl mano.m failo mygtukas 6 gali būti skirtas persiųsti, o jūsų.m faile jis gali būti skirtas atgal, todėl nepamirškite to. Norėdami sužinoti, kuri tiksli jūsų mygtuko funkcija, tiesiog dešiniuoju pelės mygtuku spustelėkite >> Peržiūrėti atgalinius skambučius >> atgalinius skambučius ir bus atidaryta jūsų mygtuko funkcija, tačiau manau, kad ši instrukcija yra tokia pati kaip mano.

Mygtukas „Prisijungti prie roboto“:

Pagal funkciją pushbutton6_Callback (hObject, eventdata, rankenos):

funkcija pushbutton6_Callback (hObject, eventdata, handles) global ros_master_ip

pasaulinis ros_master_port

pasaulinis teleop_topic_name

pasaulinis robotas

pasaulinis velmsg

ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)

setenv ('ROS_MASTER_URI', ros_master_uri)

rožinis

robotas = platintojas (teleop_topic_name, 'geometry_msgs/Twist');

velmsg = rosmessage (robotas);

Šis atgalinis skambutis nustatys kintamąjį ROS_MASTER_URI, sujungdamas „ros_master_ip“ir prievadą. Tada komanda „rosinit“inicijuos ryšį. Prisijungęs jis sukurs geometry_msgs/Twist leidėją, kuris bus naudojamas komandai greitis siųsti. Temos pavadinimas yra vardas, kurį nurodome redagavimo laukelyje. Kai prisijungimas bus sėkmingas, galėsime valdyti mygtukus Pirmyn, Atgal, Kairėn, Dešinėn.

Prieš pridedant atgalinius skambučius į priekį, atgal, mes turime inicijuoti linijinio ir kampinio greičio greitį.

Todėl žemiau _OpeningFcn (hObject, eventdata, handles, varargin) apibrėžia šiuos dalykus (žr. Pav.):

global left_spinVelocity global right_spinVelocity

pasaulinis priekisVelocity

pasaulinis atsilikimasVelocity

left_spinVelocity = 2;

right_spinVelocity = -2;

forwardVelocity = 3;

atgalinisVelocity = -3;

Pastaba: visi greičiai yra rad/s

Dabar, kai apibrėžiami bendrieji kintamieji, užprogramuokime judesio mygtukus.

Mygtukas Pirmyn:

funkcija pushbutton4_Callback (hObject, eventdata, handles) global velmsg

pasaulinis robotas

pasaulinis teleop_topic_name

pasaulinis priekisVelocity

velmsg. Angular. Z = 0;

velmsg. Linear. X = forwardVelocity;

siųsti (robotas, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', tiesa);

Panašiai ir atgalinio mygtuko atveju:

funkcija pushbutton5_Callback (hObject, eventdata, rankenos)

pasaulinis velmsg

pasaulinis robotas

pasaulinis atsilikimasVelocity

pasaulinis teleop_topic_name

velmsg. Angular. Z = 0;

velmsg. Linear. X = atgalinisVelocity;

siųsti (robotas, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', tiesa);

Panašiai ir kairysis mygtukas: funkcija pushbutton3_Callback (hObject, eventdata, rankenos)

globalus velmsgglobal robotas global left_spinVelocity

pasaulinis teleop_topic_name

velmsg. Angular. Z = left_spinVelocity;

velmsg. Linear. X = 0;

siųsti (robotas, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', tiesa);

Panašiai ir dešiniojo mygtuko atveju:

pasaulinis „velmsgglobal“robotas

global right_spinVelocity

pasaulinis teleop_topic_name

velmsg. Angular. Z = right_spinVelocity;

velmsg. Linear. X = 0;

siųsti (robotas, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', tiesa);

Pridėjus visas atgalinio ryšio funkcijas ir išsaugojus failus, galime išbandyti savo valdiklį.

8 veiksmas: tinklo konfigūracijos nustatymas ROS kompiuteryje („Linux“)

Tinklo konfigūracijos nustatymas ROS kompiuteryje („Linux“)
Tinklo konfigūracijos nustatymas ROS kompiuteryje („Linux“)
Tinklo konfigūracijos nustatymas ROS kompiuteryje („Linux“)
Tinklo konfigūracijos nustatymas ROS kompiuteryje („Linux“)

Mes išbandysime valdiklį „Ros PC“(„Linux“), todėl reikės nustatyti tinklo konfigūraciją. Jei valdiklį taip pat naudojate „Linux“kompiuteryje, taip pat turėsite nustatyti tinklo konfigūraciją.

Tinklo konfigūracija:

Atidarykite terminalo langą ir įveskite gedit.bashrc

Kai failas bus atidarytas, pridėkite:

#Roboto mašinos konfigūracija

eksportuoti ROS_MASTER_URI = https:// localhost: 11311

#ROS pagrindinio mazgo IP adresas

eksportuoti ROS_HOSTNAME =

eksportuoti ROS_IP =

echo "ROS_HOSTNAME:" $ ROS_HOSTNAME

echo "ROS_IP:" $ ROS_IP

echo "ROS_MASTER_URI:" $ ROS_MASTER_URI

Šį veiksmą turite atlikti kiekvieną kartą dėl dinamiško IP priskyrimo.

9 veiksmas: paleiskite valdiklį

Paleiskite valdiklį
Paleiskite valdiklį

Mes išbandysime savo valdiklį „Turtle bot“pavėsinėje.

Norėdami įdiegti „Gazebo“, žr.

Norėdami įdiegti „Turtle bot“, apsilankykite

Atidarykite aplanką, kuriame išsaugojote.fig ir.m failus MATLAB, ir paspauskite Vykdyti (kaip parodyta paveikslėlyje). Tai atvers kompiuterio valdiklį. Prieš paspausdami connect, įsitikinkite, kad jūsų vėžlių robotų simuliatorius veikia.

Norėdami išbandyti „TurtleBot“modeliavimą:

Atidarykite terminalą „Ros“kompiuteryje ir įveskite: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Tai atvers „Turtlebot“modeliavimą tame kompiuteryje. „TurtleBot“temos pavadinimas yra/cmd_vel_mux/input/teleop, kurį jau pateikėme programoje. Redaguojamuose mygtukuose įveskite „ros pc“IP adresą, prievadą ir temos pavadinimą ir paspauskite mygtuką. Prisijunkite prie roboto. Jūsų vėžlio robotas turėtų pradėti judėti, kai paspausite Pirmyn, Atgal ir pan.

Norėdami pamatyti linijinį ir kampinį greitį:

Atidarykite naują terminalą ir įveskite komandą: $ rostopic echo/cmd_vel_mux/input/teleop

Ir jūs turite savo „Matlab“pagrįstą ROS robotinį valdiklį. Jei jums patiko mano pamokoma pamoka, balsuokite apie pirmą kartą paskelbtą autorių konkursą ir pasidalykite ja su kuo daugiau žmonių. Ačiū.

Rekomenduojamas: