Satura rādītājs:
- Piegādes
- 1. darbība: visu iestatīšana
- 2. darbība. Izpratne par kontroliera darbību
- 3. darbība: ROS-MATLAB saskarnes izveide
- 4. solis: IP adreses iegūšana
- 5. darbība: izveidojiet kontroliera GUI
- 6. solis: GUI rediģējamo pogu programmēšana
- 7. solis: GUI spiedpogu programmēšana
- 8. darbība. Tīkla konfigurācijas iestatīšana ROS datorā (Linux)
- 9. darbība: palaidiet kontrolieri
Video: Matlab balstīts ROS robotu kontrolieris: 9 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Kopš bērnības es vienmēr esmu sapņojusi būt Dzelzs vīrs un joprojām to daru. Dzelzs vīrs ir viens no tiem varoņiem, kurš ir reāli iespējams, un vienkārši es vēlos kādreiz kļūt par Dzelzs vīru, pat ja cilvēki par mani smejas vai saka, ka tas nav iespējams, jo "tas ir neiespējami tikai tad, kad kāds to dara"-Arnolds Švarcenegers.
ROS ir jauna sistēma, ko izmanto sarežģītu robotikas sistēmu izstrādei. Tās pielietojumi ietver: automatizētu montāžas sistēmu, teleoperāciju, protezēšanas ieročus un smagās mašīnas rūpniecības nozarē.
Pētnieki un inženieri izmanto ROS, lai izstrādātu prototipus, bet dažādi pārdevēji to izmanto, lai radītu savus produktus. Tam ir sarežģīta arhitektūra, kas apgrūtina to, ka to pārvalda klibs cilvēks. MATLAB izmantošana saskarnes saites izveidošanai ar ROS ir jauna pieeja, kas var palīdzēt pētniekiem, inženieriem un pārdevējiem izstrādāt stabilākus risinājumus.
Tātad šī pamācība ir par to, kā izveidot uz Matlab balstītu ROS robotu kontrolieri, šī būs viena no nedaudzajām apmācībām par to, kas tur un starp dažiem ROS norādījumiem. Šī projekta mērķis ir izstrādāt kontrolieri, kas var vadīt jebkuru jūsu tīklam pievienotu ROS robotu. Tātad, sāksim!
video rediģēšanas kredīti: Ammar Akher, vietnē [email protected]
Piegādes
Projektam ir nepieciešami šādi komponenti:
(1) ROS dators/robots
(2) Maršrutētājs
(3) Dators ar MATLAB (versija: 2014 vai jaunāka)
1. darbība: visu iestatīšana
Lai to izdarītu, es savam Linux datoram un ros-kinetic izmantoju Ubuntu 16.04, tāpēc, lai izvairītos no neskaidrībām, iesaku izmantot ros kinetic un ubuntu 16.04, jo tam ir vislabākais ros-kinetic atbalsts. Lai iegūtu papildinformāciju par to, kā instalēt ros kinetic, apmeklējiet vietni https://wiki.ros.org/kinetic/Installation/Ubuntu. MATLAB iegādājaties licenci vai lejupielādējiet takas versiju no šejienes.
2. darbība. Izpratne par kontroliera darbību
MATLAB datorā darbojas robotu kontrolieris. Kontrolieris ievada ros pc/robota IP adresi un portu.
Ros tēma tiek izmantota, lai sazinātos starp kontrolieri un ros pc/robotu, ko kontrolieris arī ņem vērā. Modems ir nepieciešams, lai izveidotu LAN (lokālo tīklu), un tas piešķir IP adreses visām ierīcēm, kas pievienotas tā tīklam. Tāpēc ros pc/robotam un datoram, kurā darbojas kontrolieris, jābūt savienotiem vienā tīklā (ti, modema tīklā). Tagad, kad jūs zināt, "kā tas darbojas", ķersimies pie "kā tas ir uzbūvēts" …
3. darbība: ROS-MATLAB saskarnes izveide
ROS-MATLABInterface ir noderīgs interfeiss pētniekiem un studentiem, lai prototipētu savus robotu algoritmus MATLAB un pārbaudītu tos ar ROS saderīgiem robotiem. Šo saskarni var izveidot, izmantojot robotu sistēmas rīkkopu Matlab, un mēs varam prototipēt savu algoritmu un to pārbaudīt robotu ar ROS vai tādos robotu simulatoros kā Gazebo un V-REP.
Lai instalētu robotikas sistēmas rīkkopu savā MATLAB, vienkārši dodieties uz opciju Papildinājums rīkjoslā un meklējiet robotu rīklodziņu papildinājumu pārlūkā. Izmantojot robotu rīklodziņu, mēs varam publicēt vai abonēt tēmu, piemēram, ROS mezglu, un mēs varam to padarīt par ROS galveno. MATLAB-ROS saskarnē ir lielākā daļa ROS funkciju, kas jums varētu būt nepieciešama jūsu projektiem.
4. solis: IP adreses iegūšana
Lai kontrolieris darbotos, ir obligāti jāzina sava ROS robota/datora ip adrese un dators, kurā darbojas kontrolieris MATLAB.
Lai iegūtu datora IP:
Operētājsistēmā Windows:
Atveriet komandu uzvedni un ierakstiet komandu ipconfig un pierakstiet IPv4 adresi
Linux:
Ierakstiet komandu ifconfig un pierakstiet ievadīto adresi. Tagad, kad jums ir IP adrese, ir pienācis laiks izveidot GUI …
5. darbība: izveidojiet kontroliera GUI
Lai izveidotu GUI, atveriet MATLAB un komandu logā ierakstiet guide. Tas atvērs rokasgrāmatas lietotni, kuru mēs izveidosim. Varat arī izmantot MATLAB lietotņu dizaineru, lai izstrādātu savu GUI.
Kopumā mēs izveidosim 9 pogas (kā parādīts attēlā):
6 spiedpogas: uz priekšu, atpakaļ, pa kreisi, pa labi, savienojums ar robotu, atvienošana
3 Rediģējamas pogas: Ros pc ip, ports un tēmas nosaukums.
Rediģējamās pogas ir pogas, kas ievadīs ROS datora ip, tā portu un tēmas nosaukumu. Tēmas nosaukums ir MATLAB kontrolieris un ROS robots/dators. Lai rediģētu rediģējamās pogas virkni, ar peles labo pogu noklikšķiniet uz pogas >> dodieties uz Inspektora rekvizīti >> Virkne un rediģējiet pogas tekstu.
Kad jūsu GUI ir pabeigts, varat ieprogrammēt pogas. Šeit sākas īstā jautrība …
6. solis: GUI rediģējamo pogu programmēšana
GUI tiek saglabāts kā.fig fails, bet kodu/atzvanīšanas funkcijas tiek saglabātas.m formātā.. M failā ir visu jūsu pogu kods. Lai savām pogām pievienotu atzvanīšanas funkcijas, ar peles labo pogu noklikšķiniet uz pogas> > Skatīt atzvanīšanu >> atzvanīšana. Tas atvērs jūsu GUI.m failu vietā, kur šī poga ir definēta.
Pirmā atzvanīšana, ko mēs kodēsim, ir poga ROS IP rediģēšanai. Sadaļā edit1_Callback ierakstiet šādu kodu:
funkcija edit1_Callback (hObject, eventdata, rokturi)
globālais ros_master_ip
ros_master_ip = get (hObject, 'String')
Šeit funkcija ir definēta kā edit1_Callback, kas attiecas uz pirmo rediģējamo pogu. Kad šajā rediģējamajā poga ievadīsim IP adresi no ROS tīkla, tā IP adresi saglabās kā virkni globālā mainīgajā, ko sauc par ros_master_ip.
Tad tieši zem _OpeningFcn (hObject, eventdata, rokturi, varargin) definējiet sekojošo (skat. Attēlu):
globālais ros_master_ip
globālais ros_master_port
globālais teleop_tēmas nosaukums
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
Jūs vienkārši globāli kodējāt ros-pc ip (ros_master_ip), portu (ros_master_port) un Teleop Topic nosaukumu. Tas nozīmē, ka, atstājot tukšas rediģējamās pogas, šīs iepriekš noteiktās vērtības tiks izmantotas, kad izveidosit savienojumu.
Nākamais atzvanīšanas kods ir pogai Port rediģējams.
Sadaļā edit2_Callback ierakstiet šādu kodu:
funkcija edit2_Callback (hObject, eventdata, rokturi)
globālais ros_master_port
ros_master_port = get (hObject, 'String')
Šeit funkcija ir definēta kā edit2_Callback, kas attiecas uz otro rediģējamo pogu. Kad mēs ievadīsim ros pc/robota portu šeit no ROS tīkla ar šo rediģējamo pogu, tas saglabās ostu kā virkni globālā mainīgajā, ko sauc par ros_master_port.
Līdzīgi nākamais atzvanīšanas kods ir poga Tēmas nosaukuma rediģēšana.
Sadaļā edit3_Callback ierakstiet šādu kodu:
funkcija edit3_Callback (hObject, eventdata, rokturi)
globālais teleop_tēmas nosaukums
teleop_topic_name = iegūt (hObject, 'String')
Līdzīgi kā ros_master_port, arī šis tiek saglabāts kā virkne globālā mainīgajā.
Tālāk mēs apskatīsim spiedpogu atzvanīšanas funkcijas …
7. solis: GUI spiedpogu programmēšana
Iepriekš izveidotās spiedpogas mēs izmantosim, lai pārvietotu, savienotu un atvienotu robotu no kontroliera. Spiedpogas atzvanīšana tiek definēta šādi:
piem. funkcija pushbutton6_Callback (hObject, eventdata, rokturi)
Piezīme: atkarībā no secības, kādā izveidojāt spiedpogas, tās tiks attiecīgi numurētas. Tāpēc funkcija pushbutton6 manā.m failā varētu būt paredzēta pārsūtīšanai, turpretī jūsu.m failā tā varētu būt paredzēta atpakaļ, tāpēc paturiet to prātā. Lai uzzinātu, kura tieši ir jūsu spiedpogas funkcija, vienkārši ar peles labo pogu noklikšķiniet uz >> Skatīt atzvanus >> atzvanus, un tā atvērs jūsu spiedpogas funkciju, taču šim pamācībai es pieņemu, ka tā ir tāda pati kā manējā.
Pogai Savienot ar robotu:
Zem funkcijas pushbutton6_Callback (hObject, eventdata, rokturi):
funkcija pushbutton6_Callback (hObject, eventdata, rokturi) global ros_master_ip
globālais ros_master_port
globālais teleop_tēmas nosaukums
globāls robots
globālais velmsg
ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)
setenv ('ROS_MASTER_URI', ros_master_uri)
rosinit
robots = rospublisher (teleop_topic_name, 'geometry_msgs/Twist');
velmsg = rosmessage (robots);
Šī atzvanīšana iestatīs mainīgo ROS_MASTER_URI, savienojot ros_master_ip un portu. Pēc tam komanda rosinit inicializēs savienojumu. Pēc savienojuma izveides tiks izveidots ģeometrijas_msgs/Twist izdevējs, kas tiks izmantots komandas ātruma nosūtīšanai. Tēmas nosaukums ir nosaukums, ko mēs norādām rediģēšanas lodziņā. Kad savienojums būs veiksmīgs, varēsim izmantot spiedpogu uz priekšu, atpakaļ, pa kreisi, pa labi.
Pirms atzvanu pievienošanas uz priekšu, atpakaļ, spiedpogai, mums jāinicializē lineārā un leņķiskā ātruma ātrums.
Tāpēc zemāk _OpeningFcn (hObject, eventdata, rokturi, varargin) definējiet sekojošo (skat. Attēlu):
global left_spinVelocity global right_spinVelocity
globālā uz priekšuVelocity
globālā atpalicība
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
backwardVelocity = -3;
Piezīme: visi ātrumi ir rad/s
Tagad, kad globālie mainīgie ir definēti, ieprogrammēsim kustības spiedpogas.
Pogai Uz priekšu:
funkcija pushbutton4_Callback (hObject, eventdata, rokturi) globālais velmsg
globāls robots
globālais teleop_tēmas nosaukums
globālā uz priekšuVelocity
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
sūtīt (robots, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Līdzīgi spiedpogai Atpakaļ:
funkcija pushbutton5_Callback (hObject, eventdata, rokturi)
globālais velmsg
globāls robots
globālā atpalicība
globālais teleop_tēmas nosaukums
velmsg. Angular. Z = 0;
velmsg. Linear. X = atpalicībaVelocity;
sūtīt (robots, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Līdzīgi spiedpogai pa kreisi: funkcija pushbutton3_Callback (hObject, eventdata, rokturi)
globālais velmsgglobal robots globālais left_spinVelocity
globālais teleop_tēmas nosaukums
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
sūtīt (robots, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Līdzīgi labajai spiedpogai:
globāls velmsgglobal robots
global right_spinVelocity
globālais teleop_tēmas nosaukums
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
sūtīt (robots, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Kad visas atzvanīšanas funkcijas ir pievienotas un faili saglabāti, mēs varam pārbaudīt savu kontrolieri.
8. darbība. Tīkla konfigurācijas iestatīšana ROS datorā (Linux)
Mēs pārbaudīsim kontrolieri ros pc (Linux), un tam būs jāiestata tīkla konfigurācija. Ja kontrolieri izmantojat arī Linux datorā, jums arī tur būs jāiestata tīkla konfigurācija.
Tīkla konfigurācija:
Atveriet termināļa logu un ierakstiet gedit.bashrc
Kad fails ir atvērts, pievienojiet šādu informāciju:
#Robota mašīnas konfigurācija
eksportēt ROS_MASTER_URI = https:// localhost: 11311
#ROS galvenā mezgla IP adrese
eksportēt ROS_HOSTNAME =
eksportēt ROS_IP =
echo "ROS_HOSTNAME:" $ ROS_HOSTNAME
echo "ROS_IP:" $ ROS_IP
echo "ROS_MASTER_URI:" $ ROS_MASTER_URI
Šis solis jums jāveic katru reizi dinamiskas IP piešķiršanas dēļ.
9. darbība: palaidiet kontrolieri
Mēs pārbaudīsim savu kontrolieri uz bruņurupuču robota lapenē.
Lai instalētu Gazebo, lūdzu, skatiet vietni
Lai instalētu bruņurupuču robotu, lūdzu, skatiet vietni
Atveriet mapi, kurā saglabājāt.fig un.m failus MATLAB, un nospiediet Palaist (kā parādīts attēlā). Tas atvērs datora kontrolieri. Pirms piespiežat savienojumu, pārliecinieties, vai bruņurupuču robotu simulators darbojas.
Lai pārbaudītu savu TurtleBot simulāciju:
Atveriet termināli Ros datorā un ierakstiet: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Tas atvērs Turtlebot simulāciju šajā datorā. TurtleBot tēmas nosaukums ir/cmd_vel_mux/input/teleop, ko jau esam norādījuši lietojumprogrammā. Rediģējamajās pogās ierakstiet ros pc Ip adresi, portu un tēmas nosaukumu un nospiediet pogu. Savienojuma izveide ar robotu. Jūsu bruņurupuča robotam vajadzētu sākt kustēties, nospiežot uz priekšu, atpakaļ utt.
Lai skatītu lineāro un leņķisko ātrumu:
Atveriet jaunu termināli un ierakstiet komandu: $ rostopic echo/cmd_vel_mux/input/teleop
Un tur jums ir jūsu pašu Matlab balstīts ROS robotu kontrolieris. Ja jums patika mana pamācība, lūdzu, balsojiet par to pirmo reizi autoru konkursā un dalieties tajā pēc iespējas vairāk cilvēku. Paldies.
Ieteicams:
[Valkājama pele] Uz Bluetooth balstīts valkājams peles kontrolieris operētājsistēmai Windows 10 un Linux: 5 soļi
[Valkājama pele] Uz Bluetooth balstīts valkājams peles kontrolieris operētājsistēmai Windows 10 un Linux: es izveidoju peles vadāmierīci, kuras pamatā ir Bluetooth un kuru var izmantot, lai kontrolētu peles rādītāju un veiktu ar datoru saistītas darbības, neaizskarot nevienu virsmu. Elektronisko shēmu, kas iestrādāta cimdā, var izmantot, lai izsekotu
DIY spēļu kontrolieris uz Arduino bāzes - Arduino PS2 spēļu kontrolieris - Spēlējot Tekken ar DIY Arduino Gamepad: 7 soļi
DIY spēļu kontrolieris uz Arduino bāzes | Arduino PS2 spēļu kontrolieris | Spēlēt Tekken ar DIY Arduino Gamepad: Sveiki, puiši, spēlēt spēles vienmēr ir jautri, bet spēlēt ar savu DIY pielāgoto spēļu kontrolieri ir jautrāk. Tāpēc šajā instrukcijā mēs izveidosim spēles kontrolieri, izmantojot arduino pro micro
Arduino balstīts bezkontakta infrasarkanais termometrs - Uz IR balstīts termometrs, izmantojot Arduino: 4 soļi
Arduino balstīts bezkontakta infrasarkanais termometrs | Uz IR balstīts termometrs, izmantojot Arduino: Sveiki puiši, šajā instrukcijā mēs izgatavosim bezkontakta termometru, izmantojot arduino. Tā kā dažreiz šķidruma/cietās vielas temperatūra ir pārāk augsta vai zema, un tad ir grūti ar to sazināties un izlasīt temperatūra tādā situācijā
IOT balstīts DOL startera kontrolieris apūdeņošanas sūkņu komplektam: 6 soļi
IOT balstīts DOL startera kontrolieris apūdeņošanas sūkņu komplektam: Sveiki draugi! Šī pamācība ir par to, kā attālināti uzraudzīt un kontrolēt apūdeņošanas sūkņu komplektu internetā. Stāsts: Savā saimniecībā es saņemu strāvas padevi no vietējā tīkla tikai apmēram 6 stundas dienā. Laiki nav regulāri, pieejamība
ROS MoveIt robotu roka 2. daļa: robotu kontrolieris: 6 soļi
ROS MoveIt Robotic Arm 2. daļa: Robotu kontrolieris: https://github.com/AIWintermuteAI/ros-moveit-arm.git Iepriekšējā raksta daļā mēs esam izveidojuši URDF un XACRO failus savai robotizētajai rokai un palaiduši RVIZ, lai kontrolētu mūsu robotu roka simulētā vidē. Šoreiz mēs to darīsim ar reālu