INHOUDSOPGAWE:
- Voorrade
- Stap 1: Alles opgestel word
- Stap 2: Verstaan hoe die beheerder werk
- Stap 3: Skep 'n ROS-MATLAB-koppelvlak
- Stap 4: Kry die IP -adres
- Stap 5: Skep 'n GUI vir die beheerder
- Stap 6: Programmering van die GUI -bewerkbare knoppies
- Stap 7: Programmering van die GUI -drukknoppies
- Stap 8: Netwerkopstelling opstel op ROS PC (Linux)
- Stap 9: Begin die beheerder
Video: Matlab-gebaseerde ROS Robotic Controller: 9 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Vandat ek 'n kind was, het ek nog altyd daarvan gedroom om Iron Man te wees en doen dit steeds. Iron Man is een van die karakters wat realisties moontlik is, en ek wil eenvoudig eendag Iron Man word, selfs al lag mense vir my of sê dit is onmoontlik, want "dit is net onmoontlik totdat iemand dit doen" -Arnold Schwarzenegger.
ROS is 'n opkomende raamwerk wat gebruik word vir die ontwikkeling van komplekse robotstelsels. Die toepassings sluit in: outomatiese monteerstelsel, teleoperasie, prostetiese wapens en swaar masjinerie in die industriële sektor.
Navorsers en ingenieurs maak gebruik van ROS vir die ontwikkeling van die prototipes, terwyl verskillende verskaffers dit gebruik om hul produkte te skep. Dit het 'n ingewikkelde argitektuur wat dit moeilik maak om deur 'n lam man bestuur te word. Die gebruik van MATLAB vir die skep van die koppelvlakverbinding met ROS is 'n nuwe benadering wat navorsers, ingenieurs en verkopers kan help om meer robuuste oplossings te ontwikkel.
Hierdie instruksie handel dus oor hoe om 'n Matlab-gebaseerde ROS-robotbeheerder te maak; dit gaan een van die min tutoriale hieroor en onder die min ROS-instruksies wees. Die doel van hierdie projek is om 'n kontroleerder te ontwerp wat enige ROS-robot wat aan u netwerk gekoppel is, kan beheer. So laat ons begin!
video-redigeringskrediete: Ammar Akher, by [email protected]
Voorrade
Die volgende komponente word benodig vir die projek:
(1) ROS PC/Robot
(2) Router
(3) PC met MATLAB (weergawe: 2014 of hoër)
Stap 1: Alles opgestel word
Vir hierdie instruksies gebruik ek Ubuntu 16.04 vir my Linux-rekenaar en ros-kinetic, sodat om verwarring te voorkom, raai ek aan om ros kinetic en ubuntu 16.04 te gebruik, aangesien dit die beste ondersteuning vir ros-kinetic het. Vir meer inligting oor die installering van ros kinetic, gaan na https://wiki.ros.org/kinetic/Installation/Ubuntu. Vir MATLAB koop u óf 'n lisensie óf laai 'n trail -weergawe hier af.
Stap 2: Verstaan hoe die beheerder werk
'N Rekenaar bestuur die robotbeheerder op MATLAB. Die beheerder neem die IP -adres en die poort van die ros pc/robot in.
'N Ros-onderwerp word gebruik om te kommunikeer tussen die beheerder en die ros pc/robot, wat ook deur die beheerder as insette geneem word. Die modem is nodig om 'n LAN (plaaslike netwerk) te skep, en dit is wat die IP -adresse toewys aan al die toestelle wat aan sy netwerk gekoppel is. Daarom moet die ros pc/robot en die rekenaar waarop die kontroleerder werk, beide aan dieselfde netwerk gekoppel wees (dit wil sê die netwerk van die modem). Noudat u weet "hoe dit werk", gaan ons na die "hoe dit gebou is" …
Stap 3: Skep 'n ROS-MATLAB-koppelvlak
Die ROS-MATLAB-koppelvlak is 'n nuttige koppelvlak vir navorsers en studente om hul robotalgoritmes in MATLAB te prototipeer en dit op ROS-versoenbare robotte te toets. Hierdie koppelvlak kan geskep word deur die robotiese stelsel gereedskapskas in matlab en ons kan ons algoritme prototipe en dit toets 'n ROS-geaktiveerde robot of in robotsimulators soos Gazebo en V-REP.
Om die robotiese stelsel-gereedskapskas op u MATLAB te installeer, gaan na die byvoegingsopsie op die werkbalk en soek na 'n robot-gereedskapskas in die byvoegingsverkenner. Deur die robotiese gereedskapskas te gebruik, kan ons 'n onderwerp, soos 'n ROS -knoop, publiseer of daarop inteken, en ons kan dit 'n ROS -meester maak. Die MATLAB-ROS-koppelvlak het die meeste ROS-funksies wat u benodig vir u projekte.
Stap 4: Kry die IP -adres
Om die beheerder te laat werk, is dit noodsaaklik dat u die IP -adres van u ROS -robot/rekenaar ken en die rekenaar waarop die beheerder op MATLAB werk.
Om jou rekenaar se ip te kry:
Op Windows:
Maak die opdragprompt oop en tik ipconfig -opdrag en let op die IPv4 -adres
Vir Linux:
Tik ifconfig -opdrag en teken die inet -adres op. Noudat u die ip -adres het, is dit tyd om die GUI te bou …
Stap 5: Skep 'n GUI vir die beheerder
Om die GUI te skep, maak MATLAB oop en tik gids in die opdragvenster. Dit maak die gids -app egter oop, maar ons sal ons GUI skep. U kan ook die app -ontwerper op MATLAB gebruik om u GUI te ontwerp.
Ons maak in totaal 9 knoppies (soos in figuur getoon):
6 drukknoppies: vorentoe, agtertoe, links, regs, koppel aan robot, ontkoppel
3 bewerkbare knoppies: Ros pc ip, poort en onderwerpnaam.
Die knoppies wat bewerkbaar is, is die knoppies wat die IP van ROS PC, die poort en die onderwerpnaam as invoer sal neem. Die onderwerpnaam is waarmee die MATLAB -beheerder en die ROS -robot/rekenaar kommunikeer. Om die string op die bewerkbare knoppie te wysig, klik met die rechtermuisknop op die knoppie >> gaan na Inspekteureienskappe >> String en wysig die teks van die knoppie.
Sodra u GUI voltooi is, kan u die knoppies programmeer. Dit is waar die regte pret begin …
Stap 6: Programmering van die GUI -bewerkbare knoppies
Die GUI word as 'n.fig-lêer gestoor, maar die kode/terugbelfunksies word in.m-formaat gestoor. Die.m-lêer bevat die kode vir al u knoppies. Om terugbelfunksies by u knoppies te voeg, klik met die rechtermuisknop> > Bekyk terugbelle >> terugbel. Dit maak die.m -lêer vir u GUI oop waar die spesifieke knoppie gedefinieer word.
Die eerste terugbel wat ons gaan kodeer, is vir die ROS IP -knoppie. Onder funksie edit1_Callback skryf die volgende kode:
funksie edit1_Callback (hObject, eventdata, handvatsels)
globale ros_master_ip
ros_master_ip = get (hObject, 'String')
Hier word die funksie gedefinieer as edit1_Callback, wat verwys na die eerste bewerkbare knoppie. As ons 'n IP-adres van die ROS-netwerk in hierdie bewerkbare knoppie invoer, stoor dit die IP-adres as 'n string in 'n globale veranderlike genaamd ros_master_ip.
Definieer dan net onder _OpeningFcn (hObject, eventdata, handles, varargin) die volgende (sien fig):
globale ros_master_ip
globale ros_master_port
globale teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
U het die ros-pc ip (ros_master_ip), port (ros_master_port) en die Teleop Topic-naam wêreldwyd net hard gekodeer. Wat dit doen, is dat as u die bewerkbare knoppies leeg laat, hierdie vooraf gedefinieerde waardes gebruik sal word wanneer u verbinding maak.
Die volgende terugbel wat ons gaan kodeer, is vir die Port -bewerkbare knoppie.
Onder funksie edit2_Callback skryf die volgende kode:
funksie edit2_Callback (hObject, eventdata, handvatsels)
globale ros_master_port
ros_master_port = get (hObject, 'String')
Hier word die funksie gedefinieer as edit2_Callback, wat verwys na die tweede bewerkbare knoppie. As ons die ros pc/robot se poort hier vanaf die ROS -netwerk in hierdie bewerkbare knoppie binnegaan, stoor dit die poort as 'n string in 'n globale veranderlike genaamd ros_master_port.
Net so is die volgende terugbel wat ons gaan kodeer vir die knoppie Onderwerpnaam wat bewerk kan word.
Onder funksie edit3_Callback skryf die volgende kode:
funksie edit3_Callback (hObject, eventdata, handvatsels)
globale teleop_topic_name
teleop_topic_name = get (hObject, 'String')
Soortgelyk aan ros_master_port, word ook hierdie as string in 'n globale veranderlike gestoor.
Vervolgens gaan ons kyk na die terugbelfunksies vir die drukknoppies …
Stap 7: Programmering van die GUI -drukknoppies
Die drukknoppies wat ons voorheen geskep het, is die knoppies wat ons sal gebruik om die robot van die beheerder te skuif, aan te sluit en te ontkoppel. Die terugknoppie van die drukknoppie word soos volg gedefinieer:
bv. funksie pushbutton6_Callback (hObject, eventdata, handvatsels)
Opmerking: afhangende van die volgorde waarin u u drukknoppies geskep het, word hulle dienooreenkomstig genommer. Daarom kan funksie pushbutton6 in my.m -lêer vir Forward wees, terwyl dit in u.m -file vir Backwards kan wees, maar hou dit in gedagte. Om te weet wat die presiese funksie van u drukknop is, klik eenvoudig met die rechtermuisknop >> Bekyk terugbelle >> terugbelle, en dit sal die funksie vir u drukknop oopmaak, maar vir hierdie instruksies neem ek aan dat dit dieselfde is as myne.
Vir die Connect to robot -knoppie:
Onder die funksie pushbutton6_Callback (hObject, eventdata, handvatsels):
funksie pushbutton6_Callback (hObject, eventdata, handvatsels) global ros_master_ip
globale ros_master_port
globale teleop_topic_name
globale robot
globale velmsg
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 = roosboodskap (robot);
Hierdie terugbel sal die veranderlike ROS_MASTER_URI stel deur ros_master_ip en die poort aan te sluit. Dan sal die rosinit -opdrag die verbinding inisieer. Na die verbinding sal dit 'n uitgewer van geometry_msgs/Twist skep, wat gebruik sal word om die opdragsnelheid te stuur. Die onderwerpnaam is die naam wat ons in die redigeerkassie gee. Sodra die verbinding suksesvol is, kan ons die drukknoppies vorentoe, agtertoe, links, regs gebruik.
Voordat ons terugbelle by die voorwaartse, agtertoe -drukboute voeg, moet ons die snelhede van lineêre en hoeksnelheid initialiseer.
Daarom definieer hieronder _OpeningFcn (hObject, eventdata, handles, varargin) die volgende (sien fig):
globale left_spinVelocity globale right_spinVelocity
globale vorentoe -snelheid
globale agterwaartse snelheid
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
backwardVelocity = -3;
Let wel: alle snelhede is in rad/s
Noudat die globale veranderlikes gedefinieer is, laat ons die bewegingsknoppies programmeer.
Vir die vorentoe -drukknop:
funksie pushbutton4_Callback (hObject, eventdata, handvatsels) globale velmsg
globale robot
globale teleop_topic_name
globale vorentoe -snelheid
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
stuur (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', waar);
Net so vir die agteruit -drukknop:
funksie pushbutton5_Callback (hObject, eventdata, handvatsels)
globale velmsg
globale robot
globale agterwaartse snelheid
globale teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = backwardVelocity;
stuur (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', waar);
Net so vir die linker drukknop: funksie pushbutton3_Callback (hObject, eventdata, handvatsels)
globale velms globale robot globale left_spinVelocity
globale teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
stuur (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', waar);
Net so vir die regter drukknop:
globale velms globale robot
globale right_spinVelocity
globale teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
stuur (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', waar);
Sodra al die terugbelfunksies bygevoeg is en die lêers gestoor is, kan ons ons beheerder toets.
Stap 8: Netwerkopstelling opstel op ROS PC (Linux)
Ons sal die kontroleerder op 'n ros pc (Linux) toets, wat die netwerkkonfigurasie moet opstel.
Netwerkopstelling:
Maak u terminale venster oop en tik gedit.bashrc
Sodra die lêer oop is, voeg die volgende by:
#Konfigurasie van die robotmasjien
voer ROS_MASTER_URI = https:// localhost: 11311 uit
#IP -adres van ROS -hoofknooppunt
voer ROS_HOSTNAME = uit
uitvoer ROS_IP =
eggo "ROS_HOSTNAME:" $ ROS_HOSTNAME
eggo "ROS_IP:" $ ROS_IP
eggo "ROS_MASTER_URI:" $ ROS_MASTER_URI
As gevolg van dinamiese IP -toewysing, moet u hierdie stap elke keer volg.
Stap 9: Begin die beheerder
Ons gaan ons kontroleerder toets op 'n Turtle bot in Gazebo.
Raadpleeg https://gazebosim.org/tutorials?tut=install_ubuntu&cat=install om Gazebo te installeer
Raadpleeg https://yainnoware.blogspot.com/2018/09/install-turtlebot-on-ros-kinetic-ubuntu.html om Turtle bot te installeer
Open die gids waarin u u.fig- en.m -lêers op MATLAB gestoor het en druk op Run (soos in die prentjie getoon). Dit sal die kontroleerder op die rekenaar oopmaak. Maak seker dat u skilpadbotsimulator werk voordat u op connect druk.
Om u TurtleBot -simulasie te toets:
Open Terminal op Ros PC en tik: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Dit sal 'n simulasie van Turtlebot op die rekenaar oopmaak. Die onderwerpnaam van TurtleBot is/cmd_vel_mux/input/teleop, wat ons reeds in die aansoek verskaf het. Tik die ros pc Ip -adres, poort en onderwerpnaam in die bewerkbare knoppies en druk die. Koppel aan die robotknoppie. Jou skilpadbot moet begin beweeg as jy vorentoe, agtertoe, ens.
Om die lineêre en hoeksnelhede te sien:
Maak 'n nuwe terminale oop en tik die opdrag: $ rostopic echo/cmd_vel_mux/input/teleop
En daar het u, u eie Matlab-gebaseerde ROS Robotic Controller. As u van my instruksies gehou het, moet u 'n stem gee oor die eerste keer -outeurskompetisie en dit met soveel mense as moontlik deel. Dankie.
Aanbeveel:
Hoe om ROS te installeer: 6 stappe
Hoe om ROS te installeer: In hierdie tutoriaal leer u hoe u ROS kan installeer. Robot Operating System (ROS) is 'n open source robotika-middelware, en u sal dit gebruik om u Arduino te beheer. As u belangstel om meer te wete te kom, besoek: http://wiki.ros.org/ROS/Introduction
ROS Melodic op Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 stappe
ROS Melodic op Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: Hierdie artikel behandel die installering van ROS Melodic Morenia op Raspberry Pi 4 met die nuutste Debian Buster en hoe om RPLIDAR A1M8 te gebruik met ons installasie. Sedert Debian Buster slegs 'n paar weke gelede amptelik vrygestel is (op die oomblik
ROS MoveIt Robotic Arm Deel 2: Robotbeheerder: 6 stappe
ROS MoveIt Robotic Arm Part 2: Robot Controller: https://github.com/AIWintermuteAI/ros-moveit-arm.git In die vorige deel van die artikel het ons URDF- en XACRO-lêers vir ons robotarm geskep en RVIZ gelanseer om ons te beheer robotarm in gesimuleerde omgewing. Hierdie keer doen ons dit met die reaksie
MATLAB Robotic Mixologist: 4 stappe (met foto's)
MATLAB Robotic Mixologist: wil u ooit u drankies binne enkele sekondes perfek vir u laat meng? Moenie verder soek nie, die Robotic Mixologist is hier om die tyd wat dit neem om u drankies te roer, weg te neem. Hierdie projek gebruik die RobotGeek Snapper Arm om te funksioneer as u
NES Controller Shuffle (Nintendo Controller MP3, V3.0): 5 stappe (met foto's)
NES Controller Shuffle (Nintendo Controller MP3, V3.0): Ek het ryan97128 heeltemal afgesny op sy ontwerp vir Nintendo Controller MP3, weergawe 2.0 en ek hoor dat hy die idee gekry het van die alwyse Morte_Moya, so ek kan nie krediet daarvoor neem nie almal van hulle genie. Ek wou net die gemak byvoeg en herlaai