Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Asenna kaikki
- Vaihe 2: Ohjaimen toiminnan ymmärtäminen
- Vaihe 3: ROS-MATLAB-käyttöliittymän luominen
- Vaihe 4: IP -osoitteen saaminen
- Vaihe 5: Luo ohjaimelle graafinen käyttöliittymä
- Vaihe 6: GUI -muokattavien painikkeiden ohjelmointi
- Vaihe 7: GUI -painikkeiden ohjelmointi
- Vaihe 8: Verkkoasetusten määrittäminen ROS PC: llä (Linux)
- Vaihe 9: Suorita ohjain
Video: Matlab-pohjainen ROS-robottiohjain: 9 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Lapsesta asti olen aina haaveillut Iron Manista ja teen sitä edelleen. Iron Man on yksi niistä hahmoista, joka on realistisesti mahdollista, ja yksinkertaisesti sanottuna haluan tulla Iron Maniksi jonain päivänä, vaikka ihmiset nauravat minulle tai sanovat sen olevan mahdotonta, koska "se on vain mahdotonta, ennen kuin joku tekee sen"-Arnold Schwarzenegger.
ROS on kehittyvä kehys, jota käytetään monimutkaisten robotiikkajärjestelmien kehittämiseen. Sen sovelluksia ovat: Automaattinen kokoonpanojärjestelmä, teleoperaatio, teollisuusproteesit ja raskaat koneet.
Tutkijat ja insinöörit hyödyntävät ROS: ää prototyyppien kehittämiseen, kun taas eri toimittajat käyttävät sitä tuotteidensa luomiseen. MATLABin käyttö rajapintalinkin luomiseen ROS: n kanssa on uusi lähestymistapa, joka voi auttaa tutkijoita, insinöörejä ja myyjiä kehittämään kestävämpiä ratkaisuja.
Joten tämä ohje on Matlab-pohjaisen ROS-robottiohjaimen tekeminen, tämä on yksi harvoista opetusohjelmista tästä ja harvoista ROS-ohjeista. Tämän projektin tavoitteena on suunnitella ohjain, joka voi ohjata mitä tahansa verkkoon kytkettyä ROS-robottia. Aloitetaan siis!
videon editointi: Ammar Akher, [email protected]
Tarvikkeet
Hankkeessa tarvitaan seuraavat komponentit:
(1) ROS PC/robotti
(2) Reititin
(3) PC, jossa on MATLAB (versio: 2014 tai uudempi)
Vaihe 1: Asenna kaikki
Tämän ohjeen vuoksi käytän Ubuntu 16.04: tä linux-tietokoneelleni ja ros-kineettiselle, joten sekaannusten välttämiseksi suosittelen ros kinetic- ja ubuntu 16.04 -versioiden käyttöä, koska se tukee parhaiten ros-kineettistä. Lisätietoja ros kineticin asentamisesta on osoitteessa https://wiki.ros.org/kinetic/Installation/Ubuntu. MATLABille joko ostat lisenssin tai lataat reittiversion täältä.
Vaihe 2: Ohjaimen toiminnan ymmärtäminen
Tietokone käyttää robottiohjainta MATLABissa. Ohjain ottaa ros pc/robotin IP -osoitteen ja portin.
Ros-aihetta käytetään kommunikointiin ohjaimen ja ros pc/robotin välillä, jonka ohjain myös ottaa syötteeksi. Modeemi tarvitaan LAN: n (lähiverkko) luomiseen, ja se määrittää IP -osoitteet kaikille sen verkkoon kytketyille laitteille. Siksi ros pc/robotti ja ohjainta käyttävä tietokone on yhdistettävä samaan verkkoon (eli modeemin verkkoon). Joten nyt kun tiedät "miten se toimii", siirry "miten se on rakennettu" …
Vaihe 3: ROS-MATLAB-käyttöliittymän luominen
ROS-MATLABInterface on hyödyllinen käyttöliittymä tutkijoille ja opiskelijoille robottialgoritmien prototyyppien laatimiseen MATLABissa ja niiden testaamiseen ROS-yhteensopivilla roboteilla. Tämä käyttöliittymä voidaan luoda matlabin robotiikkajärjestelmän työkalupakilla ja voimme prototyypittää algoritmimme ja testata sitä ROS-yhteensopiva robotti tai robottisimulaattoreissa, kuten Gazebo ja V-REP.
Jos haluat asentaa robotiikkajärjestelmän työkalupakin MATLAB-laitteeseesi, siirry työkalurivin Lisäosa-vaihtoehtoon ja etsi lisätyökalusta robottityökalupakki. Robottityökaluryhmän avulla voimme julkaista tai tilata aiheen, kuten ROS -solmun, ja tehdä siitä ROS -päällikön. MATLAB-ROS-käyttöliittymässä on useimmat ROS-toiminnot, joita tarvitset projekteihisi.
Vaihe 4: IP -osoitteen saaminen
Jotta ohjain toimisi, on välttämätöntä, että tiedät ROS -robotin/PC: n ja MATLABin ohjainta käyttävän tietokoneen IP -osoitteen.
Tietokoneesi IP -osoitteen saaminen:
Windows:
Avaa komentokehote ja kirjoita ipconfig -komento ja kirjoita muistiin IPv4 -osoite
Linux:
Kirjoita ifconfig -komento ja kirjoita muistiin osoite. Nyt kun sinulla on IP -osoite, on aika rakentaa graafinen käyttöliittymä…
Vaihe 5: Luo ohjaimelle graafinen käyttöliittymä
Jos haluat luoda graafisen käyttöliittymän, avaa MATLAB ja kirjoita opas komentoikkunaan. Tämä avaa opasohjelman, jonka avulla luomme graafisen käyttöliittymän. Voit myös suunnitella graafisen käyttöliittymän MATLABin sovellussuunnittelijan avulla.
Luomme yhteensä 9 painiketta (kuten kuvassa):
6 painonappia: eteenpäin, taaksepäin, vasemmalle, oikealle, yhdistä robottiin, katkaise yhteys
3 Muokattavat painikkeet: Ros pc ip, portti ja aiheen nimi.
Muokattavat painikkeet ovat painikkeita, jotka käyttävät ROS-tietokoneen ip: tä, sen porttia ja aiheen nimeä. Aiheen nimi on se, jonka kautta MATLAB -ohjain ja ROS -robotti/tietokone kommunikoivat. Jos haluat muokata muokattavan painikkeen merkkijonoa, napsauta painiketta hiiren kakkospainikkeella >> siirry kohtaan Tarkastajan ominaisuudet >> Jono ja muokkaa painikkeen tekstiä.
Kun käyttöliittymä on valmis, voit ohjelmoida painikkeet. Tästä alkaa todellinen hauskuus…
Vaihe 6: GUI -muokattavien painikkeiden ohjelmointi
Graafinen käyttöliittymä tallennetaan.fig-tiedostoksi, mutta koodi-/takaisinsoittotoiminnot tallennetaan.m-muodossa.m-tiedosto sisältää kaikkien painikkeidesi koodin. > Näytä takaisinsoitot >> takaisinsoitto. Tämä avaa graafisen käyttöliittymän.m -tiedoston sinne, missä kyseinen painike on määritetty.
Ensimmäinen takaisinsoitto, jonka aiomme koodata, on muokattava ROS IP -painike. Kirjoita funktion edit1_Callback alle seuraava koodi:
toiminto edit1_Callback (hObject, eventdata, kahvat)
maailmanlaajuinen ros_master_ip
ros_master_ip = get (hObject, 'String')
Tässä toiminto määritellään edit1_Callback, joka viittaa ensimmäiseen muokattavaan painikkeeseen. Kun syötämme IP-osoitteen ROS-verkosta tähän muokattavaan painikkeeseen, se tallentaa IP-osoitteen merkkijonona ros_master_ip-nimisessä globaalimuuttujassa.
Määritä sitten juuri kohdassa _OpeningFcn (hObject, eventdata, kahvat, varargin) seuraavat (katso kuva):
maailmanlaajuinen ros_master_ip
maailmanlaajuinen ros_master_port
maailmanlaajuinen teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
Olet juuri globaalisti koodannut ros-pc ip: n (ros_master_ip), portin (ros_master_port) ja Teleop Topic -nimen. Tämä tarkoittaa sitä, että jos jätät muokattavat painikkeet tyhjäksi, näitä ennalta määritettyjä arvoja käytetään yhdistettäessä.
Seuraava takaisinsoitto, jonka aiomme koodata, on Portin muokattava -painike.
Kirjoita funktion edit2_Callback alle seuraava koodi:
toiminto edit2_Callback (hObject, eventdata, kahvat)
maailmanlaajuinen ros_master_port
ros_master_port = get (hObject, 'String')
Tässä toiminto määritellään edit2_Callback, joka viittaa toiseen muokattavaan painikkeeseen. Kun annamme ros pc/robotin portin tänne ROS -verkosta tähän muokattavaan painikkeeseen, se tallentaa portin merkkijonona ros_master_port -nimisessä globaalimuuttujassa.
Samoin seuraava soittopyyntö, jota aiomme koodata, on aiheen nimen muokkauspainike.
Kirjoita funktion edit3_Callback alle seuraava koodi:
toiminto edit3_Callback (hObject, eventdata, kahvat)
maailmanlaajuinen teleop_topic_name
teleop_topic_name = get (hObject, 'String')
Samoin kuin ros_master_port, myös tämä tallennetaan merkkijonona globaalissa muuttujassa.
Seuraavaksi tarkastelemme painikkeiden soittotoimintoja…
Vaihe 7: GUI -painikkeiden ohjelmointi
Aiemmin luomiamme painikkeita käytämme robotin siirtämiseen, yhdistämiseen ja irrottamiseen ohjaimesta. Painonapin takaisinkutsut määritellään seuraavasti:
esim. toiminto pushbutton6_Callback (hObject, eventdata, kahvat)
Huomaa: riippuen painikkeiden luomisjärjestyksestä, ne numeroidaan vastaavasti. Siksi funktion painike 6.m -tiedostossani voi olla Forward, kun taas.m -tiedostossasi se voi olla taaksepäin, joten pidä tämä mielessä. Jos haluat tietää, mikä painikkeen tarkka toiminto on, napsauta hiiren kakkospainikkeella >> Näytä soittopyynnöt >> takaisinsoittoja ja se avaa painikkeen toiminnon, mutta tämän ohjeen mukaan oletan, että se on sama kuin minun.
Yhdistä robottiin -painike:
Toiminnon pushbutton6_Callback (hObject, eventdata, kahvat) alla:
toiminto pushbutton6_Callback (hObject, eventdata, kahvat) global ros_master_ip
maailmanlaajuinen ros_master_port
maailmanlaajuinen teleop_topic_name
globaali robotti
maailmanlaajuinen velmsg
ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)
setenv ('ROS_MASTER_URI', ros_master_uri)
rosinit
robotti = rospublisher (teleop_topic_name, 'geometry_msgs/Twist');
velmsg = rosmessage (robotti);
Tämä takaisinsoitto asettaa ROS_MASTER_URI -muuttujan yhdistämällä ros_master_ip ja portin. Sitten rosinit -komento alustaa yhteyden. Yhdistämisen jälkeen se luo julkaisijan geometry_msgs/Twist, jota käytetään komennon nopeus lähettämiseen. Aiheen nimi on nimi, jonka annamme muokkauskentässä. Kun yhteys on onnistunut, voimme käyttää eteen-, taakse-, vasen- ja oikea -painikkeita.
Ennen kuin lisätään takaisinsoittoja eteenpäin, taaksepäin työntäviin painikkeisiin, meidän on alustettava lineaarisen ja kulmanopeuden nopeudet.
Siksi alla _OpeningFcn (hObject, eventdata, kahvat, varargin) määrittele seuraava (katso kuva):
global left_spinVelocity global right_spinVelocity
globaali eteenpäin
maailmanlaajuinen taaksepäin
left_spinVelocity = 2;
right_spinVelocity = -2;
eteenpäinVelocity = 3;
backwardVelocity = -3;
Huomaa: kaikki nopeudet ovat rad/s
Nyt kun globaalimuuttujat on määritelty, ohjelmoidaan liikkeen painikkeet.
Eteenpäin -painike:
toiminto pushbutton4_Callback (hObject, eventdata, kahvat) global velmsg
globaali robotti
maailmanlaajuinen teleop_topic_name
globaali eteenpäin
velmsg. Angular. Z = 0;
velmsg. Linear. X = eteenpäinVelocity;
lähetä (robotti, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Samoin taaksepäin -painikkeelle:
toiminto pushbutton5_Callback (hObject, eventdata, kahvat)
maailmanlaajuinen velmsg
globaali robotti
maailmanlaajuinen taaksepäin
maailmanlaajuinen teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = taaksepäinVelocity;
lähetä (robotti, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Vastaavasti vasen painike: toiminto pushbutton3_Callback (hObject, eventdata, kahvat)
globaali velmsgglobal robotti global left_spinVelocity
maailmanlaajuinen teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
lähetä (robotti, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Samoin oikeanpuoleiselle painikkeelle:
maailmanlaajuinen velmsgglobal -robotti
global right_spinVelocity
maailmanlaajuinen teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
lähetä (robotti, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Kun kaikki takaisinsoittotoiminnot on lisätty ja tiedostot tallennettu, voimme testata ohjainta.
Vaihe 8: Verkkoasetusten määrittäminen ROS PC: llä (Linux)
Testaamme ohjainta ros -tietokoneella (Linux), mikä edellyttää verkkoasetusten määrittämistä. Jos käytät ohjainta myös linux -tietokoneella, sinun on määritettävä verkkoasetukset myös siellä.
Verkon määritykset:
Avaa pääteikkuna ja kirjoita gedit.bashrc
Kun tiedosto on auki, lisää seuraava:
#Robot -koneen kokoonpano
vienti ROS_MASTER_URI = https:// localhost: 11311
#ROS -pääsolmun IP -osoite
vie ROS_HOSTNAME =
viedä ROS_IP =
echo "ROS_HOSTNAME:" $ ROS_HOSTNAME
echo "ROS_IP:" $ ROS_IP
echo "ROS_MASTER_URI:" $ ROS_MASTER_URI
Sinun on suoritettava tämä vaihe joka kerta dynaamisen IP -osoitteen vuoksi.
Vaihe 9: Suorita ohjain
Aiomme testata ohjainta kilpikonnabotilla Gazebossa.
Asenna Gazebo osoitteessa
Asenna Turtle-botti osoitteessa
Avaa kansio, johon tallensit.fig- ja.m -tiedostot MATLABissa ja paina Suorita (kuten kuvassa). Tämä avaa tietokoneen ohjaimen. Varmista ennen yhdistämisen painamista, että kilpikonnabotinsimulaattori toimii.
Testaa TurtleBot -simulaatiota seuraavasti:
Avaa terminaali Ros -tietokoneessa ja kirjoita: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Tämä avaa Turtlebot -simulaation kyseisellä tietokoneella. TurtleBotin aiheen nimi on/cmd_vel_mux/input/teleop, jonka olemme jo antaneet sovelluksessa. Kirjoita ros pc Ip -osoite, portti ja aiheen nimi muokattaviin painikkeisiin ja paina. Kilpikonnabotin pitäisi alkaa liikkua, kun painat eteenpäin, taaksepäin jne.
Voit tarkastella lineaarisia ja kulmanopeuksia seuraavasti:
Avaa uusi pääte ja kirjoita komento: $ rostopic echo/cmd_vel_mux/input/teleop
Ja siellä sinulla on oma Matlab-pohjainen ROS-robottiohjain. Jos pidit ohjeistani, anna sille äänestys ensimmäistä kertaa kirjoittajakilpailusta ja jaa se mahdollisimman monelle. Kiitos.
Suositeltava:
Kuinka asentaa ROS: 6 vaihetta
ROS: n asentaminen: Tässä opetusohjelmassa opit asentamaan ROS: n. Robot Operating System (ROS) on avoimen lähdekoodin robotiikan väliohjelmisto ja käytät sitä Arduinon hallintaan. Jos olet kiinnostunut oppimaan lisää, käy osoitteessa http://wiki.ros.org/ROS/Introduction
ROS Melodic Raspberry Pi 4: ssä [Debian Buster] + RPLIDAR A1M8: 6 vaihetta
ROS Melodic Raspberry Pi 4: ssä [Debian Buster] + RPLIDAR A1M8: Tämä artikkeli kattaa ROS Melodic Morenian asentamisen Raspberry Pi 4: een, jossa on uusin Debian Buster, ja kuinka käyttää RPLIDAR A1M8: ta asennuksessamme. Koska Debian Buster julkaistiin virallisesti vain muutama viikko sitten (tällä hetkellä
Asenna ROS Kinetic, TurtleBot3, Raspicam Raspberry Pi -laitteeseen 4b: 5 vaihetta
Asenna ROS Kinetic, TurtleBot3, Raspicam Raspberry Pi 4b: TurtleBot3 Burgerin mukana tulee Raspberry Pi 3 B/B+, eikä se tue uutta (9/2019 alkaen) Raspberry Pi 4b -versiota. Seuraa alla olevia ohjeita saadaksesi TurtleBot3: n toimimaan Raspberry Pi 4b: llä, mukaan lukien ROS Kineticin rakentaminen Raspberry Pi 4b Raspbian -lähteistä
RGB-D SLAM Kinectin kanssa Raspberry Pi 4: llä [Buster] ROS Melodic: 6 vaihetta
RGB-D SLAM Kinectin kanssa Raspberry Pi 4: llä [Buster] ROS Melodic: Viime vuonna kirjoitin artikkelin ROS Melodicin rakentamisesta ja asentamisesta uuteen (tuolloin) Raspberry Pi: hen, jossa on Debian Buster OS. Artikkeli on saanut paljon huomiota sekä täällä Instructablesissa että muilla alustoilla. Olen erittäin iloinen, että voin auttaa
ROS Melodicin käytön aloittaminen Raspberry Pi 4 -mallissa B: 7 vaihetta
ROS Melodicin käytön aloittaminen Raspberry Pi 4 -mallissa B: Robot Operating System (ROS) on joukko ohjelmistokirjastoja ja työkaluja, joita käytetään robottijärjestelmien ja -sovellusten rakentamiseen. ROS: n nykyinen pitkän aikavälin palveluversio on Melodic Morenia. ROS Melodic on yhteensopiva vain Ubuntu 18.04 Bionic Beaverin kanssa