Sisällysluettelo:

Matlab-pohjainen ROS-robottiohjain: 9 vaihetta
Matlab-pohjainen ROS-robottiohjain: 9 vaihetta

Video: Matlab-pohjainen ROS-robottiohjain: 9 vaihetta

Video: Matlab-pohjainen ROS-robottiohjain: 9 vaihetta
Video: 500+ American English Homophones with Pronunciation 2024, Marraskuu
Anonim
Image
Image
Matlab-pohjainen ROS-robottiohjain
Matlab-pohjainen ROS-robottiohjain

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

Kaikkien asentaminen
Kaikkien asentaminen

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

Ohjaimen toiminnan ymmärtäminen
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-MATLAB-käyttöliittymän luominen
ROS-MATLAB-käyttöliittymän luominen
ROS-MATLAB-käyttöliittymän luominen
ROS-MATLAB-käyttöliittymän luominen
ROS-MATLAB-käyttöliittymän luominen
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

IP -osoitteen hakeminen
IP -osoitteen hakeminen
IP -osoitteen hakeminen
IP -osoitteen hakeminen

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ä

Luo ohjaimelle graafinen käyttöliittymä
Luo ohjaimelle graafinen käyttöliittymä
Luo ohjaimelle graafinen käyttöliittymä
Luo ohjaimelle graafinen käyttöliittymä
Luo ohjaimelle graafinen käyttöliittymä
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

GUI -muokattavien painikkeiden ohjelmointi
GUI -muokattavien painikkeiden ohjelmointi
GUI -muokattavien painikkeiden ohjelmointi
GUI -muokattavien painikkeiden ohjelmointi
GUI -muokattavien painikkeiden ohjelmointi
GUI -muokattavien painikkeiden ohjelmointi
GUI -muokattavien painikkeiden ohjelmointi
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

GUI -painikkeiden ohjelmointi
GUI -painikkeiden ohjelmointi
GUI -painikkeiden ohjelmointi
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)

Verkkoasetusten määrittäminen ROS PC: llä (Linux)
Verkkoasetusten määrittäminen ROS PC: llä (Linux)
Verkkoasetusten määrittäminen ROS PC: llä (Linux)
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

Suorita ohjain
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: