Turinys:
- Prekės
- 1 veiksmas: nustatykite viską
- 2 žingsnis: supraskite, kaip veikia valdiklis
- 3 veiksmas: sukurkite ROS-MATLAB sąsają
- 4 veiksmas: gaukite IP adresą
- 5 veiksmas: sukurkite valdiklio GUI
- 6 veiksmas: GUI redaguojamų mygtukų programavimas
- 7 žingsnis: GUI mygtukų programavimas
- 8 veiksmas: tinklo konfigūracijos nustatymas ROS kompiuteryje („Linux“)
- 9 veiksmas: paleiskite valdiklį
Video: „Matlab“pagrįstas ROS robotų valdiklis: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
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ą
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
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-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ą
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
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 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
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“)
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į
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:
N64 įkvėptas robotų valdiklis („Arduino + NRF24L01“): 4 žingsniai
N64 įkvėptas robotų valdiklis („Arduino + NRF24L01“): Nuo pirmojo robotų projekto naudoju žaidimų valdiklius komandoms ir funkcijoms vykdyti. Tai tikrai yra mano žaidėjų dienų įtaka. Aš jau dariau projektus su PS2, „Xbox 360“valdikliais … bet atėjo laikas, kai turėjau tam tikrų sąsajos problemų
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis - „Arduino PS2“žaidimų valdiklis - Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino“žaidimų pultą: 7 žingsniai
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis | „Arduino PS2“žaidimų valdiklis | Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino Gamepad“: Sveiki, vaikinai, žaisti žaidimus visada smagu, tačiau žaisti su savo „pasidaryk pats“žaidimo valdikliu yra smagiau. Taigi, mes padarysime žaidimų valdiklį naudodami „arduino pro micro“šioje instrukcijoje
IOT pagrįstas drėkinimo siurblio DOL starterio valdiklis: 6 žingsniai
IOT pagrįstas laistymo siurblių DOL starterio valdiklis: Sveiki draugai! Ši instrukcija yra apie tai, kaip nuotoliniu būdu stebėti ir valdyti drėkinimo siurblio komplektą internetu. Istorija: Mano ūkyje maitinimas iš vietinio tinklo gaunamas tik apie 6 valandas per dieną. Laikas nereguliarus, galima įsigyti
„ROS MoveIt“robotinė ranka 2 dalis: roboto valdiklis: 6 žingsniai
Ankstesnėje straipsnio dalyje mes sukūrėme URDF ir XACRO failus savo robotinei rankai ir paleidome RVIZ, kad galėtume valdyti mūsų roboto ranką. robotizuota ranka imituojamoje aplinkoje. Šį kartą tai padarysime su realybe
YABC - dar vienas „Blynk“valdiklis - „IoT“debesų temperatūros ir drėgmės valdiklis, ESP8266: 4 žingsniai
YABC - Dar vienas „Blynk“valdiklis - „IoT“debesų temperatūros ir drėgmės valdiklis, ESP8266: Sveiki, kūrėjai, neseniai pradėjau auginti grybus namuose, austrių grybus, bet jau turiu 3 kartus šių valdiklių namuose, kad galėčiau kontroliuoti savo namų alaus fermentacijos temperatūrą, žmona dabar taip pat daro šį „Kombucha“dalyką ir yra šilumos termostatas