Përmbajtje:
- Furnizimet
- Hapi 1: Përgatitja e gjithçkaje
- Hapi 2: Kuptimi se si funksionon kontrolluesi
- Hapi 3: Krijimi i një ndërfaqe ROS-MATLAB
- Hapi 4: Marrja e adresës IP
- Hapi 5: Krijoni një GUI për Kontrolluesin
- Hapi 6: Programimi i butonave të redaktueshëm të GUI
- Hapi 7: Programimi i butonave shtytës të GUI
- Hapi 8: Vendosja e Konfigurimit të Rrjetit në PC ROS (Linux)
- Hapi 9: Drejtoni Kontrolluesin
Video: Kontrolluesi Robotik ROS me bazë Matlab: 9 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:17
Që kur kam qenë fëmijë, kam ëndërruar gjithmonë të jem Iron Man dhe ende e bëj këtë. Iron Man është një nga ata personazhe që është realisht i mundshëm dhe thjesht them që aspiroj të bëhem Iron Man një ditë edhe nëse njerëzit qeshin me mua ose thonë se është e pamundur sepse "është e pamundur vetëm derisa dikush ta bëjë këtë" -Arnold Schwarzenegger.
ROS është një kornizë në zhvillim që përdoret për zhvillimin e sistemeve komplekse robotike. Aplikacionet e tij përfshijnë: Sistemin e Automatizuar të Asamblesë, Teleoperacionin, Armët Protetike dhe Makineritë e Rënda të sektorit industrial.
Hulumtuesit dhe inxhinierët përdorin ROS për zhvillimin e prototipeve, ndërsa shitës të ndryshëm e përdorin atë për krijimin e produkteve të tyre. Ka një arkitekturë komplekse që e bën të vështirë të menaxhohet nga një njeri i çalë. Përdorimi i MATLAB për krijimin e lidhjes së ndërfaqes me ROS është një qasje e re që mund të ndihmojë studiuesit, inxhinierët dhe shitësit në zhvillimin e zgjidhjeve më të fuqishme.
Pra, ky udhëzues ka të bëjë me mënyrën e krijimit të një Kontrolluesi Robotik ROS të bazuar në Matlab, ky do të jetë një nga mësimet shumë të pakta për këtë atje dhe ndër të paktat udhëzues ROS. Qëllimi i këtij projekti është të krijojë një kontrollues që mund të kontrollojë çdo robot ROS të lidhur me rrjetin tuaj. Pra, le të fillojmë!
kredite për redaktimin e videos: Ammar Akher, në [email protected]
Furnizimet
Komponentët e mëposhtëm kërkohen për projektin:
(1) ROS PC/Robot
(2) Ruteri
(3) PC me MATLAB (versioni: 2014 ose më lart)
Hapi 1: Përgatitja e gjithçkaje
Për këtë të udhëzueshëm, unë jam duke përdorur Ubuntu 16.04 për kompjuterin tim linux dhe ros-kinetik, kështu që për të shmangur konfuzionin unë rekomandoj të përdorni ros kinetic dhe ubuntu 16.04 pasi ka mbështetjen më të mirë për ros-kinetikën. Për më shumë informacion se si të instaloni ros kinetic shkoni në https://wiki.ros.org/kinetic/Installation/Ubuntu. Për MATLAB ose blini një licencë ose shkarkoni një version gjurmë nga këtu.
Hapi 2: Kuptimi se si funksionon kontrolluesi
Një kompjuter drejton kontrolluesin robotik në MATLAB. Kontrolluesi merr adresën IP dhe portën e ros pc/robotit.
Një temë ros përdoret për të komunikuar midis kontrolluesit dhe ros pc/robotit, e cila gjithashtu merret si hyrje nga kontrolluesi. Modemi kërkohet të krijojë një LAN (rrjet lokal) dhe është ajo që cakton adresat IP për të gjitha pajisjet e lidhura me rrjetin e tij. Prandaj, ros pc/roboti dhe kompjuteri që drejtojnë kontrolluesin duhet të jenë të dy të lidhur me të njëjtin rrjet (dmth. Rrjetin e modemit). Pra, tani që e dini "si funksionon", le të shkojmë te "si është ndërtuar" …
Hapi 3: Krijimi i një ndërfaqe ROS-MATLAB
ROS-MATLABInterface është një ndërfaqe e dobishme për studiuesit dhe studentët për prototipimin e algoritmeve të robotëve të tyre në MATLAB dhe testimin e tyre në robotë të pajtueshëm me ROS. Kjo ndërfaqe mund të krijohet nga kutia e veglave të sistemit robotikë në matlab dhe ne mund të prototipojmë algoritmin tonë dhe ta testojmë atë një robot i aktivizuar me ROS ose në simulues robotësh siç janë Gazebo dhe V-REP.
Për të instaluar kutinë e veglave të sistemit robotik në MATLAB tuaj, thjesht shkoni te opsioni Shtesë në shiritin e veglave dhe kërkoni për kutinë e veglave robotike në eksploruesin shtesë. Duke përdorur kutinë e veglave robotike ne mund të publikojmë ose të regjistrohemi në një temë, të tillë si një nyje ROS, dhe ne mund ta bëjmë atë një master ROS. Ndërfaqja MATLAB-ROS ka shumicën e funksionaliteteve ROS që mund të kërkoni për projektet tuaja.
Hapi 4: Marrja e adresës IP
Që kontrolluesi të funksionojë është e domosdoshme të dini adresën IP të robotit/kompjuterit tuaj ROS dhe kompjuterin që drejton kontrolluesin në MATLAB.
Për të marrë IP -në e kompjuterit tuaj:
Në Windows:
Hapni komandën e shpejtë dhe shkruani komandën ipconfig dhe shënoni adresën IPv4
Për Linux:
Shkruani komandën ifconfig dhe shënoni adresën inet. Tani që keni adresën IP, është koha për të ndërtuar GUI …
Hapi 5: Krijoni një GUI për Kontrolluesin
Për të krijuar GUI, hapni MATLAB dhe shkruani udhëzuesin në dritaren e komandës. Kjo do të hapë aplikacionin udhëzues edhe pse ne do të krijojmë GUI -në tonë. Ju gjithashtu mund të përdorni projektuesin e aplikacionit në MATLAB për të hartuar GUI tuaj.
Ne do të krijojmë 9 butona në total (siç tregohet në fig):
6 butona shtypi: Drejt, prapa, majtas, djathtas, Lidhu me robotin, shkëputu
3 Butonat e redaktueshëm: Ros pc ip, porti dhe emri i temës.
Butonat e redaktueshëm janë butonat të cilët do të marrin IP-në e ROS pc-së, portën e saj dhe emrin e Temës si hyrje. Emri i Temës është ajo përmes së cilës komunikojnë kontrolluesi MATLAB dhe roboti/kompjuteri ROS. Për të redaktuar vargun në butonin e redaktueshëm, klikoni me të djathtën mbi butonin >> shkoni te Vetitë e inspektorit >> String dhe modifikoni tekstin e butonit.
Pasi të përfundojë GUI -ja juaj, mund t'i programoni butonat. Këtu fillon argëtimi i vërtetë…
Hapi 6: Programimi i butonave të redaktueshëm të GUI
GUI ruhet si një skedar.fig por funksionet e kodit/thirrjes ruhen në formatin.m. Skedari.m përmban kodin për të gjithë butonat tuaj. Për të shtuar funksionet e kthimit të telefonatave në butonat tuaj, klikoni me të djathtën në butonin> > Shikoni përgjigjet e thirrjeve >> përgjigjen në telefon. Kjo do të hapë skedarin.m për GUI -në tuaj aty ku është përcaktuar ai buton i veçantë.
Thirrja e parë që do të kodojmë është për butonin ROS IP të redaktueshëm. Nën funksionin edit1_Callback shkruani kodin e mëposhtëm:
funksion edit1_Callback (hObject, datadata, doreza)
global ros_master_ip
ros_master_ip = merrni (hObject, 'String')
Këtu funksioni përcaktohet si edit1_Callback, i cili i referohet butonit të parë të redaktueshëm. Kur futim një adresë IP nga rrjeti ROS në këtë buton të redaktueshëm, ajo do të ruajë adresën IP si një varg në një ndryshore globale të quajtur ros_master_ip.
Pastaj vetëm nën _OpeningFcn (hObject, datadata, dorezat, varargin) përcaktoni sa vijon (shiko fig):
global ros_master_ip
ros_master_port global
emri global teleoptik_
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topi_emër = '/cmd_vel_mux/input/teleop';
Ju thjesht keni koduar globalisht ros-pc ip (ros_master_ip), portin (ros_master_port) dhe emrin e Temës Teleop. Ajo që bën kjo është se nëse i lini butonat e redaktueshëm bosh, këto vlera të paracaktuara do të përdoren kur lidheni.
Thirrja tjetër që do të kodojmë është për butonin Port editable.
Nën funksionin edit2_Callback shkruani kodin e mëposhtëm:
funksioni edit2_Callback (hObject, datadata, dorezat)
ros_master_port global
ros_master_port = merrni (hObject, 'String')
Këtu funksioni përcaktohet si edit2_Callback, i cili i referohet butonit të dytë të redaktueshëm. Kur futim portin ros pc/robot këtu nga rrjeti ROS në këtë buton të redaktueshëm, ai do ta ruajë portin si një varg në një ndryshore globale të quajtur ros_master_port.
Në mënyrë të ngjashme, thirrja tjetër që do të kodojmë është për butonin Editable name.
Nën funksionin edit3_Callback shkruani kodin e mëposhtëm:
funksioni edit3_Callback (hObject, datadata, dorezat)
emri global teleopik_topik
teleop_topic_name = marr (hObject, 'String')
Ngjashëm me ros_master_port, edhe kjo ruhet si varg në një ndryshore globale.
Tjetra ne do të shikojmë funksionet e thirrjes për butonat e shtypjes…
Hapi 7: Programimi i butonave shtytës të GUI
Butonat e shtypjes që kemi krijuar më parë janë ato që do të përdorim për të lëvizur, lidhur dhe shkëputur robotin nga kontrolluesi. Thirrjet e butonit të shtytjes përcaktohen si më poshtë:
p.sh. funksioni pushbutton6_Callback (hObject, datadata, dorezat)
Shënim: në varësi të rendit në të cilin keni krijuar butonat, ato do të numërohen në përputhje me rrethanat. Prandaj funksioni pushbutton6 në skedarin tim.m mund të jetë për Forward ndërsa në skedarin tuaj.m mund të jetë për Backwards kështu që mbajeni këtë në mendje. Për të ditur se cili është funksioni i saktë për butonin tuaj të shtypjes, thjesht klikoni me të djathtën >> Shikoni përgjigjet e thirrjeve >> thirrjet dhe do të hapë funksionin për butonin tuaj, por për këtë të udhëzueshëm unë supozoj se është i njëjtë me timen.
Për butonin Lidhu me robotin:
Nën funksionin pushbutton6_Callback (hObject, datadata, dorezat):
funksioni pushbutton6_Callback (hObject, eventdata, trajton) global ros_master_ip
ros_master_port global
emri global teleopik_topik
robot global
velmsg globale
ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)
setenv ('ROS_MASTER_URI', ros_master_uri)
rosinit
robot = rospublisher (teleop_topic_name, 'geometry_msgs/Twist');
velmsg = rosmessage (robot);
Kjo thirrje do të vendosë ndryshoren ROS_MASTER_URI duke bashkuar ros_master_ip dhe portën. Pastaj komanda rosinit do të fillojë lidhjen. Pas lidhjes, do të krijojë një botues të geometry_msgs/Twist, i cili do të përdoret për dërgimin e shpejtësisë së komandës. Emri i temës është emri që ne japim në kutinë e redaktimit. Pasi lidhja të jetë e suksesshme, ne do të jemi në gjendje të përdorim butonat përpara, prapa, majtas, djathtas.
Përpara se të shtojmë thirrje në butonat e Forward, Backward, duhet të inicojmë shpejtësinë e shpejtësisë lineare dhe këndore.
Prandaj më poshtë _OpeningFcn (hObject, datadata, dorezat, varargin) përcaktoni sa vijon (shiko fig):
global left_spinVelocity global right_spinVelocity
përpara globale Shpejtësia
global i prapambeturVelocity
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
prapambetje = -3;
Shënim: të gjitha shpejtësitë janë në rad/s
Tani që variablat globale janë përcaktuar, le të programojmë butonat e lëvizjes.
Për butonin Forward:
funksioni pushbutton4_Callback (hObject, eventdata, handles) global velmsg
robot global
emri global teleoptik_
përpara globale Shpejtësia
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
dërgoni (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Në mënyrë të ngjashme për butonin Backward:
funksioni pushbutton5_Callback (hObject, datadata, dorezat)
velmsg globale
robot global
global i prapambeturVelocity
emri global teleopik_topik
velmsg. Angular. Z = 0;
velmsg. Linear. X = shpejtësi e prapambetur;
dërgoni (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Në mënyrë të ngjashme për butonin e majtë: funksioni pushbutton3_Callback (hObject, datadata, dorezat)
robot global velmsgglobal global left_spinVelocity
emri global teleoptik_
velmsg. Angular. Z = maja_spinVelocity;
velmsg. Linear. X = 0;
dërgoni (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Në mënyrë të ngjashme për butonin e djathtë:
robot global velmsgglobal
global right_spinVelocity
emri global teleoptik_
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
dërgoni (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Pasi të jenë shtuar të gjitha funksionet e thirrjes dhe të ruhen skedarët, ne mund të testojmë kontrolluesin tonë.
Hapi 8: Vendosja e Konfigurimit të Rrjetit në PC ROS (Linux)
Ne do të testojmë kontrolluesin në një kompjuter ros (Linux), i cili do të kërkojë konfigurimin e konfigurimit të rrjetit. Nëse jeni duke drejtuar gjithashtu kontrolluesin në një kompjuter Linux, do të duhet të vendosni konfigurimin e rrjetit edhe atje.
Konfigurimi i rrjetit:
Hapni dritaren tuaj të terminalit dhe shkruani gedit.bashrc
Pasi të hapet skedari, shtoni sa vijon:
Konfigurimi i #Robot Machine
eksporto ROS_MASTER_URI = https:// localhost: 11311
Adresa #IP e nyjes kryesore ROS
eksporto ROS_HOSTNAME =
eksport ROS_IP =
jehonë "ROS_HOSTNAME:" $ ROS_HOSTNAME
jehonë "ROS_IP:" $ ROS_IP
jehonë "ROS_MASTER_URI:" $ ROS_MASTER_URI
Ju duhet ta ndiqni këtë hap çdo herë për shkak të caktimit dinamik të IP.
Hapi 9: Drejtoni Kontrolluesin
Ne do të testojmë kontrolluesin tonë në një bot Turtle në Gazebo.
Për të instaluar Gazebo, ju lutemi referojuni
Për të instaluar botin e Turtle, ju lutemi referojuni
Hapni dosjen ku keni ruajtur skedarët tuaj.fig dhe.m në MATLAB dhe shtypni Run (siç tregohet në figurë). Kjo do të hapë kontrolluesin në PC. Para se të shtypni lidhjen, sigurohuni që imituesi juaj i breshkave të botëve po funksionon.
Për të testuar simulimin tuaj TurtleBot:
Hapni Terminalin në kompjuterin Ros dhe shkruani: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Kjo do të hapë një simulim të Turtlebot në atë kompjuter. Emri i temës së TurtleBot është/cmd_vel_mux/input/teleop, të cilin e kemi dhënë tashmë në aplikacion. Shkruani në adresën e kompjuterit ros, emrin e portës dhe temës në butonat e redaktueshëm dhe shtypni.. Lidhu me butonin Robot. Boti juaj i breshkave duhet të fillojë të lëvizë kur shtypni Forward, Backward etj.
Për të parë shpejtësitë lineare dhe këndore:
Hapni një terminal të ri dhe shkruani komandën: $ rostopic echo/cmd_vel_mux/input/teleop
Dhe atje keni, kontrolluesin tuaj robotik ROS me bazë Matlab. Nëse ju pëlqeu udhëzimi im, ju lutemi jepni një votë në Konkursin e Autorit të Herës së Parë dhe ndani atë me sa më shumë njerëz të jetë e mundur. Faleminderit.
Recommended:
Kontrolluesi dhe kontrolluesi i zënies së dhomës MicroBit: 4 hapa
Kontrolluesi dhe kontrolluesi i zënies së dhomës MicroBit: Gjatë një pandemie, një mënyrë për të zvogëluar transmetimin e virusit është të maksimizoni distancën fizike midis njerëzve. Në dhoma ose dyqane, do të ishte e dobishme të dini se sa njerëz janë në hapësirën e mbyllur në çdo kohë. Ky projekt përdor një palë
Kontrolluesi i lojërave të bazuara në Arduino - Kontrolluesi i lojërave Arduino PS2 - Duke luajtur Tekken Me DIY Arduino Gamepad: 7 hapa
Kontrolluesi i lojërave të bazuara në Arduino | Kontrolluesi i lojërave Arduino PS2 | Luajtja e Tekken Me DIY Arduino Gamepad: Përshëndetje djema, të luani lojëra është gjithmonë argëtuese, por të luani me Kontrolluesin tuaj të personalizuar të lojës DIY është më argëtuese. Pra, ne do të bëjmë një Kontrollues të lojës duke përdorur arduino pro micro në këtë udhëzues
Kontrolluesi bazë Arduino MIDI: 5 hapa
Kontrolluesi bazë Arduino MIDI: Hyrje: Unë jam i ri në punën me Arduino, por shpresoj të zgjeroj njohuritë e mia duke mësuar të tjerët dhe duke marrë reagime. Ky është një kontrollues shumë themelor MIDI me 4 butona dhe një potenciometër. Skica e këtij projekti duket kështu: 1. Ndërtoni
Termometër infra të kuqe pa kontakt me bazë Arduino - Termometri me bazë IR duke përdorur Arduino: 4 hapa
Termometër infra të kuqe pa kontakt me bazë Arduino | Termometri i bazuar në IR duke përdorur Arduino: Përshëndetje djema në këtë udhëzues ne do të bëjmë një termometër pa kontakt duke përdorur arduino. Meqenëse ndonjëherë temperatura e lëngut/ngurtës është shumë e lartë ose shumë e ulët dhe pastaj është e vështirë të kontaktosh me të dhe të lexosh temperatura atëherë në atë skenë
Krahu robotik ROS MoveIt Pjesa 2: Kontrolluesi i robotit: 6 hapa
Në krahun robotik ROS MoveIt Pjesa 2: Kontrolluesi i robotëve: https://github.com/AIWintermuteAI/ros-moveit-arm.gitNë pjesën e mëparshme të artikullit ne kemi krijuar skedarë URDF dhe XACRO për krahun tonë robotik dhe kemi nisur RVIZ për të kontrolluar krah robotik në mjedis të simuluar. Këtë herë do ta bëjmë me rea