The Robotite operatsioonisüsteem (ROS) ei ole tegelikult opsüsteem, vaid raamistik ja tööriistakomplekt, mis pakuvad heterogeenses arvutis rühmas opsüsteemi funktsionaalsust. Selle kasulikkus ei piirdu robotitega, vaid enamik pakutavaid tööriistu keskendub välisseadmetega töötamisele.
ROS See on jagatud enam kui 2000 paketiks, igal paketil on spetsiaalne funktsionaalsus. Raamistikuga ühendatud tööriistade arv on ilmselt selle suurim jõud.
ROS pakub funktsionaalsust riistvara abstraktsiooniks, seadmete draiverid, protsessidevaheline suhtlus mitmel masinal, tööriistad testimiseks ja visualiseerimiseks ning palju muud.
ROS-i põhijooneks on tarkvara käitamine ja suhtlemine, mis võimaldab teil kujundada keerukat tarkvara teadmata, kuidas teatud riistvara töötab. ROS pakub viisi protsesside (sõlmede) põhivõrgu ühendamiseks. Sõlmed võivad töötada mitmes seadmes ja ühenduda selle jaoturiga mitmel viisil.
Peamised viisid võrgu loomiseks on nõutavate teenuste pakkumine või reklaamijate või abonentide ühenduste määramine teiste sõlmedega. Mõlemad meetodid suhtlevad teatud tüüpi sõnumite kaudu. Mõned tüübid pakuvad põhipaketid, kuid sõnumite tüüpe saab määratleda üksikute pakettide abil.
Arendajad saavad keeruka süsteemi kokku panna, ühendades olemasolevatele lahendustele väikestele probleemidele. Süsteemi rakendamise viis võimaldab meil:
Vahetage komponendid sarnaste liideste vastu käigu pealt, eemaldades vajaduse süsteemi erinevate muudatuste jaoks peatada.
Multipleksige mitme komponendi väljund teise komponendi sisendisse, võimaldades erinevate probleemide paralleelset lahendamist.
Ühendage erinevates programmeerimiskeeltes valmistatud komponendid, rakendades sõnumsüsteemile lihtsalt sobivad pistikud, muutes tarkvaraarenduse lihtsamaks, ühendades erinevate arendajate olemasolevad moodulid.
Looge seadmete võrgus sõlmed, muretsemata koodi täitmise koha pärast, ja juurutage protsessi (IPC) ja kaugprotseduurikõne (RPC) vahelised sidesüsteemid.
Kahe eelmise punkti abil saate otse riistvara tellitavate voogudega ühendada, lisakoodi kirjutamata.
Kavatseme lihtsa lahenduse iteratiivse väljatöötamise abil näidata, kui kasulik see on. Teiste lähenemisviisidega võrreldes on mitu peamist eelist. ROS-il on platvormidevaheline tugi ja see võimaldab ühendusi mitme seadme protsesside vahel kulisside taga hallatavate vastastikuste ühenduste kaudu. Kujundus võimaldab C ++ suhtlusklasside määramisel või keeleliidese jaoks klasside käsitsi väljatöötamisel toetada mis tahes keelt.
ROS-i teeb oma kogukond. Mitu aastat hiljem saadi sellest suur hulk korduvkasutatavaid pakette, mida on tänu süsteemi arhitektuurile lihtne integreerida.
Alternatiivsed lähenemised nagu MRPT , CARMEN , LCM , Mängija , Microsofti RDS ja teised pakuvad mõnda, kuid mitte kõiki neid funktsioone. Enamasti on disainivead keeletoe piirangud, halb suhtlus protsesside vahel või erinevate seadmete toe puudumine, mis on vaieldamatult kõige raskem lahendus.
Kuna meie fookus on raamistik, mitte algoritmid kui sellised, on konkreetsete probleemide jaoks antud probleem väga lihtne. Meie eesmärk on ehitada arvuti jaoks tarkvara, mis on osa protsessist ja võimaldab meil kaugjuhtida ja jälgida robotit, mis on meiega ühendatud Wi-Fi kaudu, kasutades arvutis olevat mängupulti ja robotile paigaldatud kaamera edastust .
kuidas värvid inimest mõjutavad
Kõigepealt ühendame lihtsa programmi lihtsa simulatsiooniga, lihtsalt selleks, et demonstreerida ROS-i põhiprintsiipe. Ühendame mängupuldi arvutiga ja proovime kujundada hea juhtimisskeemi, et juhtpuldi sisend suunataks roboti signaalide juhtimiseks.
ROS-koodi kirjutamise peamised keeled on C ++ ja Python, madalama jõudluse jaoks eelistatakse C ++. Selgitame oma näiteid Python kuna sellel on koodis vähem kvalifikaatorit ja pole vaja konkreetset konstruktsiooni teha.
ROS-i versioonidele viidatakse nime järgi. Praeguseks on viimane väljaanne Jade Kilpkonn ja LTS-i versioon on Indigo iglu . Eelistatav on versioonilt liikumine ja tagurpidi ühilduvus pole ROS-is tagatud, seega kirjutatakse kõik näited Indigo .
ROS on saadaval erinevatel * NIX platvormidel. Ametlikult toetatud versioon on Ubuntu. Kogukond toetab OS X, Arch Linux, Debian, Raspbian ja Android versioone.
Näeme töölaual Ubuntu 14.04 installiprotsessi. Kõigi toetatud versioonide ja platvormide protsessid on saadaval ametlik koduleht . Saadaval on ka virtuaalsed masinad, millele on juba installitud ROS.
Installimine sõltub platvormist (ja enamikul platvormidel on komplekteeritud paketid), kuid tööruumi seaded on kõigi platvormide jaoks samad. .
ROS pakub oma hoidlaid. Esimene samm on nende lisamine.
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
Pärast seda on Ubuntu versiooni jaoks saadaval kõik hostitud paketid kõigi ROS-versioonide jaoks. Näiteks toetab Ubuntu 14.04 indigo
ja jade
.
Põhipakettide installimisel töölauale on üks kolmest võimalusest:
äriotsuste tegemisel uurivad juhid tavaliselt kahte põhitegurit:
sudo apt-get install ros-indigo-ros-base
minimaalseks paigaldamiseks
sudo apt-get install ros-indigo-desktop
täiendava GUI tööriista olemasolu
sudo apt-get install ros-indigo-desktop-full
omama kõiki ametlikke funktsioone, sealhulgas erinevaid simulaatoreid ja teeke navigeerimiseks ja tajumiseks.
Parema töökogemuse saamiseks on soovitatav täielik valik. Ainult sõlmede käitamiseks kasutatavatesse seadmetesse installimiseks piisab ase versioonist. Sõltumata valitud võimalusest võite installida mis tahes vajaliku paketi nimega package_name
täitmisel:
sudo apt-get install ros-indigo-
Alajooned asendatakse lõplikus nimes sidekriipsudega, seega stage_ros
see on pakendis kujul ros-indigo-stage-ros
.
Järgmine samm on alustada rosdep
. ROS-i paketid võivad deklareerida, millistest komponentidest nad sõltuvad. rosdep
võimaldab teil need paketid kompileerida, tuginedes palju käsitsi töötlemisele. Selle alustamiseks helistage:
sudo rosdep init rosdep update
ROS-il on selle tööriistades palju keskkonnamuutujaid. Vaikimisi installimisel skript bash nende käivitamiseks asub see /opt/ros/indigo/setup.bash
. Muutujaid tuleb käivitada igal seansil bash , seega on parim lahendus need lisada ~/.bashrc
.
echo 'source /opt/ros/indigo/setup.bash' >> ~/.bashrc source ~/.bashrc
Mõni pakett installib väliseid sõltuvusi rosinstall
kaudu, mis on saadaval paketina ja mida installitakse sudo apt-get install python-rosinstall
See on Ubuntu installi lõpp. Järgneb lühike sissejuhatus tööruumi seadistamisse.
Kuna Groovy Galapagos , ROS-i tööruume on hallatud catkin
kaudu. Kõigi hostitavate pakettide jaoks peame määratlema kataloogi. Kataloogi sees loome kausta src
ja helistame catkin_init_workspace
seestpoolt. See loob mitu sümboolset linki ROS-i praeguses lähtekoodiga versioonis. Järgmine samm on selle tööruumi lisamine ka keskkonnamuutujate hulka.
Kõigi nende tööruumi sätete täitmiseks valige tühi kataloog ja käivitage järgmised käsud:
mkdir src cd src catkin_init_workspace cd .. catkin_make echo 'source $(pwd)/devel/setup.bash' >> ~/.bashrc source ~/.bashrc
Nüüd olete loonud tööruumi, kus saate luua oma ROS-pakette.
Mis tahes koodi loomine on tohutu hüpe. Kõigepealt tutvume mõne kulisside taga töötava süsteemiga. Meie esimene samm on käivitada põhiline GUI ja vaadata, milliseid sõnumeid see genereerib.
ROS-is mis tahes käivitamiseks peate käivitama põhiprotsessi. See on sama lihtne kui uue terminaliakna avamine ja tippimine:
roscore
Kogu ühendatud seadmevõrgus roscore
see tuleb käivitada ainult üks kord seadmes, mis võõrustab keskset jaoturit side saatmiseks.
roscore
Põhiroll see tähendab öelda sõlmedele, millega muud sõlmed peaksid ühenduse looma ja millisel viisil (kas võrgupordi või jagatud mälu kaudu). Eesmärk on võimaldada sõlmedel muretseda ainult selle pärast, milliseid andmeid nad tahavad teada saada, mitte selle, millise sõlmega nad tahavad ühendust luua, minimeerides kogu suhtlemiseks vajalikku aega või ribalaiust.
Pärast roscore
käivitamist võime käivitada ROS-i peamise GUI-tööriista: rqt
See, mida näeme, on väga pettumust valmistav - tühi aken. rqt
Selles on palju erinevaid pistikprogramme, mida saab konfigureerida igas visuaalses konfiguratsioonis ja mis tahes arvus eelnevalt määratletud vaadetes.
Alustuseks käivitame pistikprogrammi Roboti juhtimine , valides selle Plugins > Robot Tools > Robot Steering
. Saame kaks liugurit, mis tähistavad lineaarset ja pöörlevat liikumist, mis meie robotil on. Pistikprogrammi ülaosas näeme tekstikasti /cmd_vel
temas. Me võime sellele teise nime anda. Esitab selle teema nime, millele väljaanne on suunatud. Terminalitööriistad on parim koht taustal toimuva nägemiseks.
ROS-il on süsteemis toimuva kontrollimiseks mitu võimsat tööriista. Esimene tööriist, mida juurutame, on rostopic
, see võimaldab meil kontrollida teemasid, mida sõlmed saavad tellida ja avaldada. Käivita rostopic list
andma:
/cmd_vel /rosout /rosout_agg
Kaks viimast teemat töötavad alati ja on seotud põhiliste ROS-süsteemidega. Teema /cmd_vel
avaldatakse meie aadresside kaudu. Aadressi teema ümbernimetamine nimetab selle ka siin ümber. Nüüd oleme huvitatud sellest, mis toimub õppeaines. Käivita rostopic echo /cmd_vel
see ei näita meile midagi (kui sa just liuguritega ei mängi). Protsess kestab seni, kuni selle tühistame. Nüüd liigutame vertikaalset liugurit kiirusega 20 m / s. Kajale vaadates näeme järgmist korduvalt:
kuidas teha raspberry pi serverit
linear: x: 0.2 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0
Kui tihti see kiri rämpspostiks läheb? rostopic hz /cmd_vel
see ütleb keskmise kiirusega 10 Hz. Noh, kui palju selliseid laule saan oma aeglases WiFi-ühenduses esitada? rostopic bw /cmd_vel
tuvastab keskmiselt 480 B / s.
See on kõik väga hästi, kuid me räägime sõnumitüüpidest. Need andmed on inimesele kasulikud, kuid rakendus vajab lähteandmeid ja peab andmete tõlgendamiseks teadma sõnumi tüüpi. Sõnumi tüüpi saab tõlgendada rostopic type /cmd_vel
abil, öeldes meile, et see on geometry_msgs/Twist
. Kõik ilma argumentideta kutsutud ROS-i terminalitööriistad tagastavad standardse abisõnumi.
ROS-wiki sobib selle stringitulemuse jaoks veebiotsingu tegemiseks Wiki-seletuses selle kohta, mida see sisaldab ja kuidas see on üles ehitatud. Kuid me ei pea teda usaldama. rosmsg
on sõnumitüüpide üldine tööriist. Käivita rosmsg show geometry_msgs/Twist
tagasi:
geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z
Sõnum koosneb kahest 3D-vektorist, mis tähistavad lineaarset ja nurkkiirust 3D-ruumis.
Kui soovite teada, milliste teemadega sõlm ühendub, rosnode info
See annab meile sõlme kohta üksikasjalikke andmeid. Tööriistad rostopic
, rosmsg
ja rosnode
on peamised tööriistad lihvimata ROS-funktsioonide kontrollimiseks. ROS-il on palju rohkem GUI-sid ja terminalitööriistu, kuid need ei kuulu selle sissejuhatuse reguleerimisalasse.
Peamised tööriistad ROS-sõlme käitamiseks on rusrun
ja roslaunch
. rosrun
saate sõlme käivitada rosrun
ja roslaunch
abil see käivitab käivitusfailide põhjal sõlmpunktid, millega saame vähe tuttavaks, kuna need on ROS-i automatiseerimise kõige keerulisem element.
Saame sulgeda kõik, mis meil jookseb, et hakata oma esimese koodiga tegelema. Tulevikus on ilmne, et mis tahes ROS-iga seotud käitamine nõuab aktiivset eksemplari roscore
. Paljusid probleeme, millega kokku puutute, saab lahendada, kui sulgete terminaliakna roscore
ja avage uus, et see uuesti käivitada. See värskendab kõiki sõltuvusi, mida oli vaja uuesti laadida, nii jaotises bash
ja roscore
Meie esimene eesmärk on matkida Robot Steering
funktsionaalsust sõlme loomine, mis avaldab andmeid geometry_msgs/Twist
-st a /cmd_vel
põhineb mängupuldi sisendil. Meie esimene peatus on joy
pakett.
joy
Pakett joy
pakub üldiseid ROS-draivereid juhtkangi ja mängupuldide jaoks. See ei kuulu vaikepaigaldusse, seega tuleb see installida:
sudo apt-get install ros-indigo-joy
Pärast installimist saame käivitada rosrun joy joy_node
. See ühendab meid vaikimisi juhtnupu või mängupuldiga. Käivita rostopic list
näitab meile, et meil on teema nimega /joy
. Kuulake rostopic echo
kaudu See näitab meile järgmise vorminguga sõnumeid (pange tähele, et sõnumite avaldamiseks peate suhtlema mängupuldi või juhtnupuga).
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]
Praegu saate päiseid ignoreerida. Peale selle on meil axes
ja buttons
, mis selgitavad kenasti, mida nad esindavad. Liigutades kirved ja lükake nupud kontrolleris muudab see nende numbrite muutumise. Oma tööriistu kasutades saame tuvastada, et sõnumi tüüp on sensor_msgs/Joy
ja vorming on:
std_msgs/Header header uint32 seq time stamp string frame_id float32[] axes int32[] buttons
Koodi kirjutamise esimene samm on paketi loomine. Kausta sees src
tööruumist käivitage:
catkin_create_pkg toptal_tutorial rospy joy geometry_msgs sensor_msgs
Siinkohal ütleme loodava paketi nimi, millele järgnevad paketid, millest plaanime sõltuda. Ärge muretsege, sõltuvusi saab hiljem käsitsi värskendada.
Nüüd on meil kaust toptal_tutorial
. Looge kausta sees kaust nimega scripts
mis sisaldab kõiki meie Pythoni skripte.
Loome faili nimega teleop.py
ja selle sees on meil:
#!/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()
Samuti peame määrama chmod +x teleop.py
seega on skript käivitatav. Käivita rosrun joy joy_node
terminalis ja rosrun toptal_tutorial teleop.py
teises tulemuseks on, et terminaliväljund teleop.py
täidetakse sõnumitega Rõõm .
Uurime, mida kood teeb.
Esiteks impordime ülemeelik , mis võõrustab raamatukogu ROS-i raamistikuga suhtlemiseks. Igal paketil, mis defineerib sõnumeid, on alampakett msg
sõnumimääratlustega. Importime Joy
sisendi käsitsemiseks. Manustatud sõnumitüüpe (nt Header
kaustast std_msgs.msg
kirjas Joy
) pole vaja importida, kui me ei soovi neid eraldi mainida.
Meie esimene samm on konkreetse nimega sõlme initsialiseerimine (antud juhul nimetame seda 'teleopiks'). Pärast seda loome tellija, kes tellib teematüübi 'rõõm' sensor_msgs.msg.Joy
ja kes tegeleb iga sõnumiga funktsiooni joy_callback
kutsudes. Tagasihelistamised saavad parameetri, sõnumi andmed. Andmeliikmetele juurdepääs on lihtne. Kui tahtsime printida esimese oleku telg , kui me mäletame sõnumi tüüpi, helistaksime print data.axes[0]
ja see oleks ujuk. Sõlm sõlmede lõpus, kuni ROS kustub.
Meie järgmine samm oleks oma andmete haldamine mingil viisil. Peaksime looma sõnumi Keerake see muutub, sõltuvalt sisendist ja siis avaldame selle teemas 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()
Esmalt lisame sõnumi Twist
ja lisame tuge funktsionaalsetele argumentidele koos seondumisega functools.partial
Loome reklaamija pub
, kes avaldab cmd_vel
sõnumi tüüp Twist
. Seostame selle reklaamija tagasihelistamise juurde ja paneme ta sõnumit postitama Keerake igas sissekandes kaks esimest kiirust kirved . See kood teeb seda, mida temalt oodatakse, ja näeme tulemust rostopic echo /cmd_vel
kaudu.
Meil on endiselt probleem. Teema /joy
saab postitada suuri kiirusi. Kui me jälgime rostopic hz /cmd_vel
ja liigutame analoogpulka ringides, näeme paljusid sõnumeid. Selle tulemuseks on mitte ainult suur hulk sidepidamist, vaid ka protsessid, mis neid sõnumeid vastu võtavad, peavad neid kõiki töötlema; pole vaja nii palju andmeid nii sageli postitada ja tegelikult on parem postitada stabiilse 10Hz kiirusega. Selle saame järgmise koodiga.
#!/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()
Muudame tagasihelistamist, et saada muudetav objekt Twist
ja muutke seda silmuse sees. Funktsioon sleep
kohta rospy.Rate
säilitab stabiilse väljundsageduse.
Lõpliku koodi tulemuseks on teema /cmd_vel
10 Hz käsu kiiruse saamine, matkides seeläbi pistikprogrammi väljundit Roboti juhtimine rqt
Meie esimene eesmärk on luua keskkond, kus saaksime simuleerida stsenaariumi, mille soovime saavutada. Sõlm stageros
pakendi sees stage_ros
See võimaldab meil robotit käivitada 2D-etapis, mille määrab pilt. Selles on kirjeldatud kogu sünteesi pakk stage_ros
maailma arhiivide ja nende genereerimise kohta. See on üsna lihtne, kuid käeulatusest väljas. Õnneks on pakiga kaasas mitu maailmademot. Kõigepealt läheme failide kataloogi käivitamise teel:
roscd stage_ros cd world
Kausta sees on mitu faili. Jookseme ühe.
rosrun stage_ros stageros willow-erratic.world
Loodi erinevaid teemasid. Igaühe tähendus on dokumenteeritud ka koos pakendiga. Oluline on see, et sellel on cmd_vel
.
Näidatud lava sees on sinine kast, mis tähistab teie juhitavat robotit. Kasutades meie koodi või Roboti juhtimine saame seda robotit juhtida. Proovi seda!
Kõigepealt loome kausta launch
või lanzamiento
meie paketis ja selle sees looge fail nimega teleop.launch
. Kausta lõplik struktuur peaks välja nägema selline:
toptal_tutorial/ ├── CMakeLists.txt ├── launch │ └── teleop.launch ├── package.xml ├── scripts │ └── teleop.py └── src
Faili sees teleop.launch
Määratleme mitu sõlme ja nende omavahelisi ühendusi.
robot_
Uus maailm koosneb neljast robotist ja igal nende teemal on eesliide robot_0/cmd_vel
. Seega on robotil number 0 käsukiiruse teema nimega robot_0
. Sellepärast panime oma kontrolli nimeruumi roscore
ja nii kohandame nende nimed uuele vormile. Nii saate mõelda teemade nimedest kui kaustadest failisüsteemis.
Käivitamisfailide käivitamiseks pole vaja roscore
Mõnes mõttes roscore
see on lihtsalt stardifaili erijuhtum, mis ei tee midagi. Kui a roslaunch toptal_tutorial teleop.launch
ainult esimene käivitatud käivitusfail käivitab kerneli, ülejäänud aga ühenduvad sellega. Nüüd täidame käivitamise järgmisega:
/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
Kui kõik on korras, saadakse 4 robotiga simulaator, kus igaüks neist saab juhtida mängupuldi või juhtkangi abil. Selles maailmas on palju rohkem sisu kui eelmises. Igal neljal robotil on järgmine:
meediumiekraani suurused tundliku disaini jaoks
rqt
Asendame väärtusega 0, 1, 2 või 3. Ja sellega jõuamegi oma viimase teema juurde.
rqt
abilVarem me ei süvenenud image_0
kuid see on ideaalne vahend keerukamate andmete visualiseerimiseks. Võite katsetada kõiki teemasid, kuid keskendume teemadele image_1
, depth_0
, depth_1
ja rqt
Jooksmine Plugins > Visualización > Vista Imagen
eemaldame kõik avatud pistikprogrammid. Nüüd avame 4 pildivaaturit (robot_0
) ja paneme need 2x2 võrku. Lõpuks valime iga vaate vasakus ülanurgas ühe neljast stage_ros/world
jaoks loodud teemast.
Mida saame, on madala eraldusvõimega kaamerate sügav taju stereovisioon. Pange tähele, et selle tulemuse oleksime saanud ilma sisendsüsteemita. Kui me lihtsalt käivitame selle (kausta rosrun stage_ros stageros willow-four-erratics-multisensor.world
seest):
/robot_0/cmd_vel
Ja lisame pistikprogrammi Roboti juhtimine teemaga export ROS_MASTER_URI=http://:11311/
Sama tulemus oleks meil olnud, kui juhtnupud oleksid ekraanil.
Paljud riistvara toetavad täielikult ROS-i, sageli tänu kolmandatele osapooltele. Paljudel robotplatvormidel on draiverid, mis genereerivad seda tüüpi teateid, ja ROS-il on sõlmed, mis aktiveerivad veebikaamera ja avaldavad piltide voo.
Kuigi viimane tulemus oli simulatsioon sellest, mida me tahame saavutada; sama saab saavutada järgmiste muudatustega:
rqt
kui alustate Bashis, vaatab kaugarvuti seda hosti ja portigazebo
ja / või mis tahes skript roboti jälgimiseks ja juhtimiseksLõpuks tuleks kaugseadmes eksportida ainult sobiv muutuv keskkond ja kõik muu tehakse ise. ROS-i käivitamine arvutiklastris võtab igas masinas valmis saamiseks vaid ühe sammu.
Oleme näidanud, kuidas iga koodiga, hoolimata sellest, kui väike, võib teil olla keeruline muutujate süsteem, mida saate manipuleerida, kui soovite. Lihtne kirjastaja / abonendi süsteem võimaldab kiiret tarkvaraarendust, mis töötleb andmeid arvutiklastris, jättes samas teile meelerahu, et te ei muretseks teatud elementide aluseks oleva rakenduse pärast.
Kuigi me kasutame lihtsat simulaatorit, on muud keerukamad simulaatorid nagu
|_+_|(mis sisaldub töölaua täisversioonis) võimaldab teil luua 3D-maailmad koos keeruliste füüsiliste anduritega Ja see annab teile kogemuse lõpptulemustest ja tootest enne selle väljatöötamist.
See sissejuhatus oli mõnevõrra põhiline, kuid loodetavasti tunnete end rohkem huvitatud selle mitmekülgse raamistikuga töötamisest.