socialgekon.com
  • Tärkein
  • Innovaatio
  • Vinkkejä Ja Työkaluja
  • Työkalut Ja Oppaat
  • Ux-Suunnittelu
Taustaa

Johdatus robottikäyttöjärjestelmään: uusin robotiikan sovelluskehys

Robottikäyttöjärjestelmä (ROS) ei todellakaan ole käyttöjärjestelmä, vaan kehys ja joukko työkaluja, jotka tarjoavat käyttöjärjestelmän toiminnallisuuden heterogeenisessä tietokoneryhmässä. Sen hyödyllisyys ei rajoitu robotteihin, mutta suurin osa toimitetuista työkaluista keskittyy työskentelyyn oheislaitteiden kanssa.

ROS Se on jaettu yli 2000 pakettiin, jokaisella paketilla on erikoistuneita toimintoja. Kehykseen kytkettyjen työkalujen määrä on luultavasti sen suurin voima.

Miksi minun pitäisi käyttää SO-robottia?

ROS tarjoaa toimintoja laitteiston abstraktioon, laiteohjaimiin, prosessien väliseen viestintään useilla koneilla, testaus- ja visualisointityökaluille ja paljon muuta.



Johdanto robottikäyttöjärjestelmään: uusin robotiikan sovelluskehys

ROS: n keskeinen piirre on tapa, jolla ohjelmisto toimii ja kommunikoi, jolloin voit suunnitella monimutkaisia ​​ohjelmistoja tietämättä kuinka tietty laitteisto toimii. ROS tarjoaa tavan liittää prosessien (solmujen) runkoverkko. Solmut voivat toimia useilla laitteilla ja muodostaa yhteyden siihen keskittimeen eri tavoin.

Tärkeimmät keinot verkon luomiseksi ovat tarvittavien palvelujen tarjoaminen tai mainostajan tai tilaajan yhteyksien määritteleminen muihin solmuihin. Molemmat menetelmät kommunikoivat tietyntyyppisten viestien kautta. Jotkut tyypit tarjoavat ydinpaketit, mutta viestityypit voidaan määrittää yksittäisillä paketeilla.

Kehittäjät voivat koota monimutkaisen järjestelmän yhdistämällä olemassa olevat ratkaisut pieniin ongelmiin. Järjestelmän toteutustapa antaa meille mahdollisuuden:

  • Vaihda komponentit samanlaisilla rajapinnoilla lennossa, jolloin järjestelmä ei tarvitse pysähtyä erilaisten muutosten vuoksi.

  • Moninkertaistaa useiden komponenttien ulostulon toisen komponentin tuloon, jolloin eri ongelmat voidaan ratkaista rinnakkain.

  • Yhdistä eri ohjelmointikielillä valmistetut komponentit yksinkertaisesti liittämällä asianmukaiset liittimet viestijärjestelmään, mikä helpottaa ohjelmistokehitystä yhdistämällä olemassa olevat moduulit useilta kehittäjiltä.

  • Luo solmuja laiteverkossa huolimatta siitä, missä koodi suorittaa, ja ota käyttöön prosessin (IPC) ja etäkäytön kutsun (RPC) väliset tietoliikennejärjestelmät.

  • Muodosta yhteys suoraan etälaitteiden on-demand-virtoihin kirjoittamatta ylimääräistä koodia käyttämällä kahta edellistä pistettä.

Aiomme osoittaa, kuinka hyödyllinen se on iteratiivisesti yksinkertaisen ratkaisun kehittäminen. Muihin lähestymistapoihin verrattuna on useita keskeisiä etuja. ROS: lla on alustojen välinen tuki ja se mahdollistaa yhteydet useiden laitteiden prosessien välillä peer-yhteyksien kautta, joita hoidetaan kulissien takana. Suunnittelu sallii minkä tahansa kielen tuen määritettäessä C ++ -viestintäluokkia tai kehitettäessä luokkia manuaalisesti kielirajapinnalle.

ROS: n tekee sen oma yhteisö. Useiden vuosien jälkeen se johti suureen määrään uudelleenkäytettäviä paketteja, jotka on helppo integroida järjestelmäarkkitehtuurin ansiosta.

Vaihtoehtoiset lähestymistavat, kuten MRPT , CARMEN , LCM , Pelaaja , Microsoft RDS ja toiset tarjoavat joitain, mutta eivät kaikkia näitä ominaisuuksia. Suunnitteluvirheet ovat suurimmaksi osaksi kielituen rajoituksia, huono viestintä prosessien välillä tai tuen puute eri laitteille, mikä on kiistatta vaikein ratkaista ongelma.

Mitä aiomme rakentaa?

Koska painopisteemme on kehys eikä algoritmit sellaisenaan, tietyille ongelmille, annettu ongelma on hyvin yksinkertainen. Tavoitteenamme on rakentaa ohjelmisto tietokoneelle, joka on osa prosessia ja jonka avulla voimme etäohjata ja valvoa robottia, joka on yhdistetty meihin Wi-Fi-yhteyden kautta, käyttämällä tietokoneellamme olevaa peliohjainta ja lähetystä robottiin asennetulta kameralta. .

Ensinnäkin yhdistämme yksinkertaisen ohjelman yksinkertaiseen simulaatioon, vain osoittamaan ROS: n perusperiaatteet. Yhdistämme peliohjaimen tietokoneeseen ja yritämme suunnitella hyvän ohjausjärjestelmän, jotta peliohjaimen tulo ohjataan robotin ohjaussignaaleille.

ROS-koodin kirjoittamisen pääkielet ovat C ++ ja Python, C ++ on suositeltava heikomman suorituskyvyn saavuttamiseksi. Selitämme esimerkkimme Python koska koodissa on vähemmän määrittelijöitä eikä erityistä rakennetta tarvitse tehdä.

Asennus ja konfigurointi

ROS-versioihin viitataan nimellä. Tähän mennessä uusin julkaisu on Jade Turtle ja LTS-versio on Indigo-iglu . Versiosta siirtyminen on suositeltavaa, ja taaksepäin yhteensopivuutta ei taata ROS: ssa, joten kaikki esimerkit kirjoitetaan Indigo .

ROS on saatavana useilla * NIX-alustoilla. Virallisesti tuettu versio on Ubuntu. Yhteisö tukee OS X-, Arch Linux-, Debian-, Raspbian- ja Android-versioita.

Näemme Ubuntu 14.04: n asennusprosessin työpöydällä. Kaikkien tuettujen versioiden ja alustojen prosessit ovat saatavilla virallinen nettisivu . Saatavilla on myös virtuaalikoneita, joihin on jo asennettu ROS.

Asennus riippuu alustasta (ja useimmilla käyttöympäristöillä on paketteja), mutta työtilan asetukset ovat samat kaikille alustoille. .

Asennus Ubuntussa

ROS tarjoaa omat arkistonsa. Ensimmäinen askel on lisätä ne.

sudo sh -c 'echo 'deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main' > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 0xB01FA116 sudo apt-get update

Sen jälkeen sinulla on kaikki isännöityt paketit kaikille ROS-versioille käytettävissä Ubuntu-versiollesi. Esimerkiksi Ubuntu 14.04 tukee indigo ja jade.

Peruspakettien asentaminen työpöydälle on yksi kolmesta vaihtoehdosta:

  • sudo apt-get install ros-indigo-ros-base minimaaliseen asennukseen

  • sudo apt-get install ros-indigo-desktop saada ylimääräinen GUI-työkalu

  • sudo apt-get install ros-indigo-desktop-full sinulla on kaikki viralliset ominaisuudet, mukaan lukien erilaiset simulaattorit ja kirjastot navigointiin ja havaitsemiseen.

Paremman työkokemuksen saamiseksi suositellaan koko vaihtoehtoa. Ase-versio on riittävä asennettavaksi laitteisiin, joita käytetään vain solmujen suorittamiseen. Mutta riippumatta siitä, minkä vaihtoehdon valitset, voit asentaa minkä tahansa tarvitsemasi paketin nimeltä package_name suoritettaessa:

sudo apt-get install ros-indigo-

Alaviivat korvataan väliviivoilla lopullisessa nimessä, joten stage_ros se on paketissa muodossa ros-indigo-stage-ros.

Seuraava vaihe on aloittaa rosdep. ROS-paketit voivat ilmoittaa, mistä komponenteista ne riippuvat. rosdep voit kääntää nämä paketit turvautumatta liikaa manuaaliseen käsittelyyn. Aloita se soittamalla:

sudo rosdep init rosdep update

ROS: lla on monia ympäristömuuttujia, joita sen työkalut käyttävät. Oletusasennuksessa komentosarja lyödä niiden käynnistämiseksi se sijaitsee /opt/ros/indigo/setup.bash. Muuttujat on aloitettava jokaisessa lyödä , joten paras ratkaisu on lisätä ne kohtaan ~/.bashrc.

echo 'source /opt/ros/indigo/setup.bash' >> ~/.bashrc source ~/.bashrc

Jotkut paketit asentavat ulkoisia riippuvuuksia rosinstall -palvelun kautta, joka on saatavana pakettina ja asennetaan sudo apt-get install python-rosinstall -palvelun kautta.

Tämä on Ubuntu-asennuksen loppu. Seuraavassa on lyhyt esittely työtilan asetuksista.

Asetus

Siitä asti kun Groovy Galapagos , ROS-työtiloja on hallinnoitu catkin. Meidän on määritettävä hakemisto kaikille isännöimillemme paketeille. Hakemistoon luodaan kansio src ja soitamme catkin_init_workspace sisältä. Se luo useita symbolisia linkkejä ROS: n nykyiseen lähdeversioon. Seuraava askel on lisätä tämä työtila myös ympäristömuuttujiin.

Suorita kaikki nämä työtilan asetukset valitsemalla tyhjä hakemisto ja suorittamalla seuraavat komennot:

mkdir src cd src catkin_init_workspace cd .. catkin_make echo 'source $(pwd)/devel/setup.bash' >> ~/.bashrc source ~/.bashrc

Olet nyt luonut työtilan, jossa voit luoda omia ROS-paketteja.

Tutustu työkaluihin

Koodin luominen on valtava harppaus. Ensin tutustutaan joihinkin kulissien takana toimiviin järjestelmiin. Ensimmäinen askel on suorittaa perus-käyttöliittymä ja nähdä, mitä viestejä se tuottaa.

Jos haluat suorittaa mitään ROS: ssa, sinun on käynnistettävä pääprosessi. Se on yhtä helppoa kuin avata uusi pääteikkuna ja kirjoittaa:

roscore

Yhdistetyn laiteverkon kautta roscore se on suoritettava vain kerran laitteella, joka isännöi keskusyksikköä viestinnän lähettämistä varten.

roscore: N päärooli eli kertoa solmuille, joihin muiden solmujen tulisi muodostaa yhteys ja millä tavalla (joko verkkoportin tai jaetun muistin kautta). Tavoitteena on antaa solmujen huolehtia vain siitä, mitä tietoja he haluavat tietää, sen sijaan, mihin solmuun he haluavat muodostaa yhteyden, samalla kun minimoidaan aika tai kaistanleveys, jota he tarvitsevat kaiken viestinnän suorittamiseen.

rqt

Suorittamisen jälkeen roscore voimme käynnistää ROS: n pääkäyttöliittymän: rqt. Se, mitä näemme, on hyvin pettymys - tyhjä ikkuna. rqt Siinä on laaja valikoima laajennuksia, jotka voidaan määrittää millä tahansa visuaalisella kokoonpanolla ja millä tahansa määrällä ennalta määritettyjä näkymiä.

Aloitamme suorittamalla laajennuksen Robottiohjaus , valitsemalla sen Plugins > Robot Tools > Robot Steering. Saamme kaksi liukusäädintä, jotka edustavat lineaarista ja pyörivää liikettä, jonka haluamme robottimme olevan. Laajennuksen yläosassa on tekstiruutu, jossa on /cmd_vel hänessä. Voimme antaa sille toisen nimen. Esittää sen aiheen nimen, johon julkaisu on suunnattu. Päätetyökalut ovat paras paikka nähdä, mitä taustalla tapahtuu.

Päätelaitteet

ROS: lla on useita tehokkaita työkaluja järjestelmän tapahtumien tarkastamiseen. Ensimmäinen työkalu, jonka aiomme esitellä, on rostopic, sen avulla voimme tarkastaa aiheita, joita solmut voivat tilata ja julkaista. Suorita rostopic list Antaa:

/cmd_vel /rosout /rosout_agg

Kaksi viimeistä aihetta ovat aina käynnissä ja liittyvät ydin ROS-järjestelmiin. Aihe /cmd_vel julkaistaan ​​osoitteissamme. Aiheen nimeäminen uudelleen osoitteissa nimetään uudelleen myös tässä. Nyt olemme kiinnostuneita siitä, mitä aiheessa tapahtuu. Suorita rostopic echo /cmd_vel se ei näytä meille mitään (ellet pelaa liukusäätimillä). Prosessi jatkuu, kunnes peruutamme sen. Siirretään nyt pystysuuntaista liukusäädintä nopeudella 20 m / s. Kaikua tarkasteltaessa voimme nähdä seuraavan toistuvan uudestaan ​​ja uudestaan:

linear: x: 0.2 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0

Kuinka usein tämä viesti roskapostia? rostopic hz /cmd_vel se sanoo keskimääräisellä taajuudella 10 Hz. No, kuinka monta tällaista kappaletta voin käyttää hitaalla Wi-Fi-yhteydelläni? rostopic bw /cmd_vel havaitsee keskimäärin 480 B / s.

Kaikki on hyvin, mutta puhumme viestityypeistä. Nämä tiedot ovat hyviä ihmisille, mutta sovellus tarvitsee raakatiedot ja sen on tiedettävä viestityyppi tietojen tulkitsemiseksi. Viestityyppi voidaan tulkita rostopic type /cmd_vel -merkillä sanomalla meille, että se on geometry_msgs/Twist. Kaikki ilman argumentteja kutsutut ROS-päätelaitteet palauttavat tavallisen ohjeviestin.

ROS-wiki on hyvä tapa tehdä verkkohaku tälle merkkijonotulokselle Wiki-selityksessä siitä, mitä se sisältää ja miten se on jäsennelty. Mutta meidän ei tarvitse luottaa häneen. rosmsg on yleinen työkalu viestityypeille. Suorita rosmsg show geometry_msgs/Twist palata:

geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z

Viesti koostuu kahdesta 3D-vektorista, jotka edustavat lineaarista ja kulmanopeutta 3D-avaruudessa.

Jos haluat tietää mihin aiheisiin solmu liittyy, rosnode info Se antaa meille yksityiskohtaisia ​​tietoja solmusta. Työkalut rostopic, rosmsg ja rosnode ovat ensisijaisia ​​työkaluja kiillottamattomien ROS-toimintojen tarkastamiseen. ROS: lla on paljon enemmän käyttöliittymiä ja päätelaitteita, mutta ne eivät kuulu tämän johdannon piiriin.

Tärkeimmät työkalut ROS-solmun suorittamiseen ovat rusrun ja roslaunch. rosrun voit suorittaa solmuja rosrun ja roslaunch se ajaa käynnistystiedostoihin perustuvia solmuja, joiden kanssa tutustumme vähän, koska ne ovat ROS-automaation monimutkaisin osa.

Voimme sulkea kaiken, mitä ajamme, jotta voimme alkaa työskennellä ensimmäisen koodin parissa. Tulevaisuuden kannalta on selvää, että minkä tahansa ROS: ään liittyvän suorittaminen vaatii aktiivisen roscore -esiintymän. Monet kohtaamistasi ongelmista voidaan ratkaista sulkemalla pääteikkuna roscore ja avaa uusi käynnistääksesi sen uudelleen. Tämä päivittää kaikki riippuvuudet, jotka oli ladattava uudelleen, sekä bash ja roscore

Tele-operaatio-peliohjaimen luominen

Ensimmäinen tavoitteemme on jäljitellä Robot Steering -toimintoa luodaan solmu, joka julkaisee tietoja geometry_msgs/Twist a /cmd_vel perustuu peliohjaimen tuloon. Ensimmäinen pysäkkimme on joy -paketti.

Paketti joy

Paketti joy tarjoaa yleisiä ROS-ohjaimia ohjaussauvalle ja peliohjaimille. Se ei sisälly oletusasennukseen, joten se on asennettava:

sudo apt-get install ros-indigo-joy

Asennuksen jälkeen voimme suorittaa rosrun joy joy_node. Tämä yhdistää meidät oletusarvoisesti ohjaussauvaan tai peliohjaimeen. Suorita rostopic list osoittaa meille, että meillä on aihe nimeltä /joy. Kuuntele rostopic echo -palvelun kautta Se näyttää meille seuraavan muotoiset viestit (huomaa, että sinun on oltava vuorovaikutuksessa peliohjaimen tai ohjaussauvan kanssa, jotta viestit voidaan julkaista).

header: seq: 4156 stamp: secs: 1450707466 nsecs: 204517084 frame_id: '' axes: [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0] buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Voit sivuuttaa otsikot toistaiseksi. Sen lisäksi meillä on axes ja buttons, jotka selittävät hienosti, mitä ne edustavat. Siirtämällä kirveet ja paina painikkeita ohjaimessa se johtaa näiden numeroiden muuttumiseen. Käyttämällä työkalujamme voimme selvittää, että viestityyppi on sensor_msgs/Joy ja muoto on:

std_msgs/Header header uint32 seq time stamp string frame_id float32[] axes int32[] buttons

Tele-operaation luominen

Ensimmäinen vaihe koodin kirjoittamisessa on paketin luominen. Kansiossa src suorita työtilasta:

catkin_create_pkg toptal_tutorial rospy joy geometry_msgs sensor_msgs

Tässä ilmoitetaan luomamme paketin nimi, jota seuraavat paketit, joista aiomme riippua. Älä huoli, riippuvuudet voidaan päivittää manuaalisesti myöhemmin.

Nyt meillä on kansio toptal_tutorial. Luo kansion sisälle kansio nimeltä scripts joka sisältää kaikki Python-skriptimme.

Luodaan tiedosto nimeltä teleop.py, ja sen sisällä meillä on:

#!/usr/bin/env python import rospy from sensor_msgs.msg import Joy def joy_callback(data): print data def main(): rospy.init_node('teleop') rospy.Subscriber('joy', Joy, joy_callback) while not rospy.is_shutdown(): pass if __name__ == '__main__': main()

Meidän on myös asetettava chmod +x teleop.py näin komentosarja on suoritettava. Suorita rosrun joy joy_node terminaalissa ja rosrun toptal_tutorial teleop.py toisessa se johtaa päätelaitteen ulostulon teleop.py täyttöön viesteillä Ilo .

Tarkastellaan, mitä koodi tekee.

Ensinnäkin tuomme huijaus , joka isännöi kirjastoa vuorovaikutuksessa ROS-kehyksen kanssa. Jokaisella viestien määrittelevällä paketilla on alipaketti msg viestimääritelmillä. Tuomme Joy käsittelemään syötettä. Upotettuja viestityyppejä (kuten Header viestistä std_msgs.msg Joy) ei tarvitse tuoda, ellemme halua mainita niitä erikseen.

Ensimmäinen askel on alustaa solmu tietyllä nimellä (tässä tapauksessa kutsumme sitä 'teleopiksi'). Sen jälkeen luomme tilaajan, joka tilaa aihetyypin 'joy' sensor_msgs.msg.Joy ja käsittelee jokaisen viestin kutsumalla joy_callback -funktion. Soittopyynnöt vastaanottavat parametrin, sanomatiedot. Tietojäsenten käyttö on helppoa. Jos haluaisimme tulostaa ensimmäisen tilan akseli , jos muistamme viestityypin, soittaisimme print data.axes[0] ja se olisi kelluva. Solmu solmujen päässä, kunnes ROS sammuu.

Seuraava askel olisi hallita tietoja jollakin tavalla. Meidän pitäisi luoda viesti Kierre se muuttuu syötteestä riippuen ja sitten julkaisemme sen aiheessa cmd_vel

#!/usr/bin/env python import rospy from sensor_msgs.msg import Joy from geometry_msgs.msg import Twist # new from functools import partial # new def joy_callback(pub, data): # modified cmd_vel = Twist() # new cmd_vel.linear.x = data.axes[1] # new cmd_vel.angular.z = data.axes[0] # new pub.publish(cmd_vel) # new def main(): rospy.init_node('teleop') pub = rospy.Publisher('cmd_vel', Twist, queue_size=1000) # new rospy.Subscriber('joy', Joy, partial(joy_callback, pub)) # modified while not rospy.is_shutdown(): pass if __name__ == '__main__': main()

Ensin lisätään viesti Twist ja lisätään funktionaalisten argumenttien tuki sidonnilla functools.partial -palvelun kautta. Luomme mainostajan pub, joka julkaisee cmd_vel viestityyppi Twist. Sitomme kyseisen mainostajan takaisinsoittoon ja pakotamme hänet lähettämään viestin Kierre jokaisessa merkinnässä siten, että nopeudet ovat kaksi ensimmäistä kirveet . Tämä koodi tekee sen, mitä siitä odotetaan, ja voimme nähdä tuloksena olevan lähdön rostopic echo /cmd_vel: n kautta.

Meillä on edelleen ongelma. Aihe /joy voi lähettää suuria nopeuksia. Jos seuraamme rostopic hz /cmd_vel ja liikutamme analogista sauvaa ympyröissä, jolloin voimme nähdä monia viestejä. Tämän seurauksena ei ole vain suuri määrä viestintää, vaan myös näiden viestien vastaanottavien prosessien on käsiteltävä kukin niistä; niin paljon dataa ei tarvitse lähettää niin usein, ja oikeastaan ​​on parempi lähettää tasaisella 10 Hz: n taajuudella. Voimme saada tämän seuraavalla koodilla.

#!/usr/bin/env python import rospy from sensor_msgs.msg import Joy from geometry_msgs.msg import Twist from functools import partial def joy_callback(cmd_vel, data): # modified cmd_vel.linear.x = data.axes[1] cmd_vel.angular.z = data.axes[0] # moved pub.publish(cmd_vel) to main loop def main(): rospy.init_node('teleop') cmd_vel = Twist() # new pub = rospy.Publisher('cmd_vel', Twist, queue_size=1000) rospy.Subscriber('joy', Joy, partial(joy_callback, cmd_vel)) # modified rate = rospy.Rate(10) # new while not rospy.is_shutdown(): pub.publish(cmd_vel) # new rate.sleep() # new if __name__ == '__main__': main()

Muutamme soittopyyntöä vastaanottamaan muutettava objekti Twist ja muokkaa sitä silmukan sisällä. Toiminto sleep / _ + _ | ylläpitää vakaata lähtötaajuutta.

Lopullinen koodi johtaa aiheeseen rospy.Rate 10 Hz: n komentonopeuksien saaminen, mikä jäljittelee laajennuksen lähtöä Robottiohjaus /cmd_vel

Simuloidun järjestelmän käyttäminen

Simuloimalla maailmaa

Ensimmäinen tavoitteemme on luoda ympäristö, jossa voimme simuloida tavoitetta, jonka haluamme saavuttaa. Solmu rqt pakkauksen sisällä stageros Sen avulla voimme suorittaa robotin kuvan määrittelemässä 2D-vaiheessa. Tässä on kuvattu koko synteesi paketti stage_ros maailman arkistoihin ja niiden luomiseen. Tämä on melko suoraviivaista, mutta ulottumattomissa. Onneksi paketissa on useita maailman demoja. Mennään ensin tiedostohakemistoon suorituksen mukaan:

stage_ros

Kansion sisällä on useita tiedostoja. Suoritetaan yksi.

roscd stage_ros cd world

Eri teemoja luotiin. Jokaisen merkitys dokumentoidaan myös pakkauksen mukana. Tärkeää on, että sillä on rosrun stage_ros stageros willow-erratic.world .

Esitetyn vaiheen sisällä on sininen laatikko, joka edustaa robottia, jota ohjaat. Käyttämällä koodia tai Robottiohjaus voimme hallita tätä robottia. Kokeile!

Järjestelmän määrittäminen käynnistystiedostoilla

Ensin luomme kansion cmd_vel tai launch paketin sisällä ja sen sisällä luo tiedosto nimeltä lanzamiento. Kansion lopullisen rakenteen tulisi näyttää tältä:

teleop.launch

Tiedoston sisällä toptal_tutorial/ ├── CMakeLists.txt ├── launch │ └── teleop.launch ├── package.xml ├── scripts │ └── teleop.py └── src Määritämme useita solmuja ja niiden yhteyksiä.

teleop.launch

Uusi maailma koostuu neljästä robotista, ja jokaisella niiden teemalla on etuliite nimeltä robot_. Siten robotilla numero 0 on komentonopeuden teema nimeltä robot_0/cmd_vel. Siksi asetimme hallinnan nimitilaan, jonka nimi on robot_0 ja niin me mukautamme heidän nimensä uuteen muotoon. Tällä tavalla voit ajatella aiheiden nimiä kansioina tiedostojärjestelmässä.

Käynnistystiedostojen suorittamiseen ei tarvita roscore Tavallaan roscore se on vain erikoistapaus käynnistystiedostosta, joka ei tee mitään. Jos a roscore vain ensimmäinen käynnistetty käynnistystiedosto suorittaa ytimen, kun taas loput muodostavat yhteyden siihen. Nyt toteutamme laukaisun seuraavilla tavoilla:

roslaunch toptal_tutorial teleop.launch

Jos kaikki on kunnossa, tuloksena on simulaattori, jossa on neljä robottia, joissa kaikkia ohjataan peliohjaimella tai ohjaussauvalla. Tässä maailmassa on paljon enemmän sisältöä kuin edellisessä. Jokaisella neljästä robotista on seuraavat:

/robot_/base_pose_ground_truth /robot_/base_scan_0 /robot_/base_scan_1 /robot_/camera_info_0 /robot_/camera_info_1 /robot_/cmd_vel /robot_/depth_0 /robot_/depth_1 /robot_/image_0 /robot_/image_1 /robot_/odom

Korvataan luvuilla 0, 1, 2 tai 3. Ja tämän kanssa tulemme viimeiseen aiheeseen.

Tietojemme tarkasteleminen rqt -sovelluksella

Aiemmin emme ole syventäneet rqt mutta se on täydellinen työkalu monimutkaisemman datan visualisointiin. Voit kokeilla kaikkia teemoja, mutta keskitymme image_0, image_1, depth_0 ja depth_1 teemoihin.

Juoksu rqt poistamme kaikki avoimet laajennukset. Nyt avataan 4 kuvankatselua (Plugins > Visualización > Vista Imagen) ja laitetaan ne 2x2-ruudukkoon. Lopuksi valitsemme jokaisen näkymän vasemmassa yläkulmassa yhden neljästä robot_0: lle määritetystä teemasta.

Saamme syvän havainnon stereonäkymän matalan resoluution kameroilla. Huomaa, että olisimme voineet saada tämän tuloksen ilman syöttöjärjestelmäämme. Jos suoritamme tämän (kansiosta stage_ros/world sisältä):

rosrun stage_ros stageros willow-four-erratics-multisensor.world

Ja lisätään laajennus Robottiohjaus aiheen nimeltä /robot_0/cmd_vel Meillä olisi voinut olla sama tulos, jos ohjaimet olisivat näytöllä.

Tulosten soveltaminen todellisessa järjestelmässä

Monet laitteistot tukevat täysin ROS: ää, usein kolmansien osapuolten ansiosta. Monilla robottiympäristöillä on ohjaimet, jotka tuottavat tämän tyyppisiä viestejä, ja ROS: lla on solmut, jotka aktivoivat verkkokameran ja julkaisevat syötteen kuvista.

Vaikka viimeinen tulos oli simulointi siitä, mitä haluamme saavuttaa; sama voidaan saavuttaa seuraavilla muutoksilla:

  • Asenna ROS robotin ajotietokoneeseen
  • Luo ajotiedoston ajotietokoneelle, joka yhdistää ROS: n alustaan ​​ja kaikkiin korkean tason antureihin, kuten kameroihin, lasersäteisiin ja muihin. Tarvittavat solmut voivat olla jo olemassa tai ne voidaan toteuttaa luomalla julkaisija / tilaaja ROS: lle yhdelle puolelle ja ohjain sarjaliikenteelle toiselle puolelle.
  • Tee käynnistystiedosto käynnissä
  • Lisää etätietokoneeseen export ROS_MASTER_URI=http://:11311/ kun aloitat Bashissa, joten etätietokone tarkastelee kyseistä isäntää ja porttia
  • Alkaa rqt ja / tai mikä tahansa komento robotin seuraamiseksi ja ohjaamiseksi

Loppujen lopuksi etälaitteelle tulisi viedä vain sopiva muuttujaympäristö ja kaikki muu tapahtuu itse. ROS: n ajaminen tietokoneryhmässä vie vain yhden askeleen valmistautuakseen jokaiseen koneeseen.

johtopäätös

Olemme osoittaneet, kuinka jokaisella koodilla, riippumatta siitä, kuinka pieni, sinulla voi olla monimutkainen muuttujajärjestelmä, jota voit manipuloida haluamallasi tavalla. Yksinkertainen julkaisija- / tilaajajärjestelmä mahdollistaa nopean ohjelmistokehityksen, joka käsittelee tietoja tietokoneryhmässä, mutta jättää sinulle mielenrauhan, jotta et välitä tiettyjen elementtien taustalla olevasta toteutuksesta.

Vaikka käytämme yksinkertaista simulaattoria, muut monimutkaisemmat simulaattorit, kuten gazebo (joka sisältyy työpöydän täysversioon) avulla voit luoda 3D-maailmat monimutkaisilla fyysisillä antureilla Ja se antaa sinulle kokemuksen lopputuloksista ja tuotteesta ennen sen kehittämistä.

Tämä johdanto oli jonkin verran perustiedot, mutta on toivottavaa, että tunnet olevasi kiinnostuneempi työskentelemään tämän monipuolisen kehyksen kanssa.

Kuinka käyttää Instagram-mainoksia valokuvaustilisi kasvattamiseen

Lähettäminen

Kuinka käyttää Instagram-mainoksia valokuvaustilisi kasvattamiseen
TensorFlow'n käytön aloittaminen: koneoppimisopetus

TensorFlow'n käytön aloittaminen: koneoppimisopetus

Teknologia

Suosittu Viestiä
Kuinka olla hämmästyttävä finanssikonsultti
Kuinka olla hämmästyttävä finanssikonsultti
TensorFlow'n käytön aloittaminen: koneoppimisopetus
TensorFlow'n käytön aloittaminen: koneoppimisopetus
Lightroom-opetusohjelma: Kuinka muokata kuin ammattilainen Lightroomissa iPhonelle
Lightroom-opetusohjelma: Kuinka muokata kuin ammattilainen Lightroomissa iPhonelle
Kuinka tehdä vesileima valokuviesi ja miksi sinun pitäisi tehdä tämä
Kuinka tehdä vesileima valokuviesi ja miksi sinun pitäisi tehdä tämä
Yritysverouudistus ja arvostuksen tulevaisuus
Yritysverouudistus ja arvostuksen tulevaisuus
 
3D-tulostus: Pitäisikö suunnittelijoiden ja kehittäjien ottaa huomioon?
3D-tulostus: Pitäisikö suunnittelijoiden ja kehittäjien ottaa huomioon?
Ennakoiva suunnittelu: Kuinka luoda maagisia käyttökokemuksia
Ennakoiva suunnittelu: Kuinka luoda maagisia käyttökokemuksia
Mini-opetusohjelma - Työskentely Figma-painikkeen komponenttien kanssa
Mini-opetusohjelma - Työskentely Figma-painikkeen komponenttien kanssa
ApeeScape käynnistää harjoittelun koulutus- ja EdTech-markkinoiden palvelemiseksi Elite Talent Network -verkollaan
ApeeScape käynnistää harjoittelun koulutus- ja EdTech-markkinoiden palvelemiseksi Elite Talent Network -verkollaan
Hotjar: UX- ja muuntovihjeitä
Hotjar: UX- ja muuntovihjeitä
Luokat
VarastointiiOS-vinkkejäSuunnitteluprosessiKaukosäätimen NousuWeb-KäyttöliittymäOngelmien karttoittaminenSijoittajat Ja RahoitusLähettäminenTietojenkäsittely Ja TietokannatIhmiset Ja Joukkueet

© 2023 | Kaikki Oikeudet Pidätetään

socialgekon.com