Tartalomjegyzék:
- Kellékek
- 1. lépés: Minden beállítása
- 2. lépés: A vezérlő működésének megértése
- 3. lépés: ROS-MATLAB interfész létrehozása
- 4. lépés: Az IP -cím beszerzése
- 5. lépés: Hozzon létre egy grafikus felhasználói felületet a vezérlő számára
- 6. lépés: A GUI szerkeszthető gombok programozása
- 7. lépés: A GUI nyomógombok programozása
- 8. lépés: A hálózati konfiguráció beállítása ROS PC -n (Linux)
- 9. lépés: Futtassa a vezérlőt
Videó: Matlab alapú ROS robotvezérlő: 9 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Gyerekkorom óta mindig arról álmodtam, hogy Vasember leszek, és még mindig az vagyok. Az Iron Man egyike azoknak a karaktereknek, akik reálisan lehetségesek, és egyszerűen megfogalmazva arra törekszem, hogy egyszer vasember lehessek, még akkor is, ha az emberek nevetnek rajtam, vagy azt mondják, hogy lehetetlen, mert "csak addig lehetetlen, amíg valaki meg nem teszi" -Arnold Schwarzenegger.
Az ROS egy feltörekvő keretrendszer, amelyet összetett robotikai rendszerek fejlesztésére használnak. Alkalmazásai a következők: Automatizált összeszerelő rendszer, távmunka, protetikus fegyverek és nehézgépek az ipari szektorban.
A kutatók és a mérnökök a ROS -t használják a prototípusok kifejlesztéséhez, míg a különböző gyártók termékeik létrehozásához használják. Összetett architektúrája megnehezíti a béna ember irányítását. A MATLAB használata az interfész kapcsolat létrehozásához az ROS -szal egy új megközelítés, amely segíthet a kutatóknak, mérnököknek és szállítóknak a robusztusabb megoldások kifejlesztésében.
Tehát ez az útmutató arról szól, hogyan lehet Matlab-alapú ROS robotvezérlőt készíteni, ez lesz az egyik nagyon kevés oktatóanyag ezzel kapcsolatban, és a kevés ROS utasítás között. Ennek a projektnek a célja egy olyan vezérlő tervezése, amely a hálózatához csatlakoztatott bármely ROS-robotot képes vezérelni. Kezdjük hát!
videószerkesztő: Ammar Akher, az [email protected] címen
Kellékek
A projekthez a következő összetevőkre van szükség:
(1) ROS PC/robot
(2) Router
(3) PC MATLAB (verzió: 2014 vagy újabb)
1. lépés: Minden beállítása
Ennél a tanulságosnál az Ubuntu 16.04-et használom a linuxos számítógépemhez és a ros-kinetic-hez, így a félreértések elkerülése érdekében javaslom a ros kinetic és az ubuntu 16.04 használatát, mivel ez támogatja a legjobban a ros-kinetikát. A ros kinetic telepítésével kapcsolatos további információkért látogasson el a https://wiki.ros.org/kinetic/Installation/Ubuntu oldalra. A MATLAB esetében vagy vásároljon licencet, vagy töltse le a nyomvonal verzióját innen.
2. lépés: A vezérlő működésének megértése
Egy számítógép futtatja a MATLAB robotvezérlőjét. A vezérlő felveszi a ros pc/robot IP -címét és portját.
A ros-topic a kommunikációra szolgál a vezérlő és a ros pc/robot között, amelyet a vezérlő is inputként vesz fel. A modem egy LAN (helyi hálózat) létrehozásához szükséges, és az IP -címeket rendeli hozzá a hálózatához csatlakoztatott összes eszközhöz. Ezért a ros pc/robotnak és a vezérlőt futtató számítógépnek ugyanarra a hálózatra (azaz a modem hálózatára) kell csatlakoznia. Tehát most, hogy tudod, "hogyan működik", menjünk a "hogyan épül fel"…
3. lépés: ROS-MATLAB interfész létrehozása
A ROS-MATLABInterface hasznos felület a kutatók és a diákok számára, hogy prototípusba hozzák robot algoritmusaikat a MATLAB-ban, és teszteljék ROS-kompatibilis robotokon. Ezt a felületet a matlab robotika eszköztára hozhatja létre, és prototipálhatjuk az algoritmusunkat, és tesztelhetjük egy ROS-kompatibilis robot vagy olyan robotszimulátorokban, mint a Gazebo és a V-REP.
A robotika rendszer eszköztárának MATLAB-ra történő telepítéséhez egyszerűen lépjen az eszköztár Bővítmény opciójához, és keresse meg a robot eszköztárat a kiegészítő felfedezőben. A robot eszköztár segítségével közzétehetünk vagy feliratkozhatunk egy témára, például egy ROS csomópontra, és ROS mesterré tehetjük. A MATLAB-ROS interfész rendelkezik a legtöbb ROS funkcióval, amelyekre szüksége lehet a projektjeihez.
4. lépés: Az IP -cím beszerzése
Ahhoz, hogy a vezérlő működjön, feltétlenül ismernie kell a ROS robot/pc és a MATLAB vezérlőt futtató számítógép IP -címét.
A számítógép IP -jének beszerzése:
Windows rendszeren:
Nyissa meg a parancssort, írja be az ipconfig parancsot, és jegyezze fel az IPv4 -címet
Linux esetén:
Gépelje be az ifconfig parancsot, és jegyezze fel az inet címet. Most, hogy megvan az ip -címe, ideje elkészíteni a GUI -t…
5. lépés: Hozzon létre egy grafikus felhasználói felületet a vezérlő számára
A GUI létrehozásához nyissa meg a MATLAB alkalmazást, és írja be a guide parancsot a parancsablakban. Ez megnyitja az útmutató alkalmazást, amellyel létrehozjuk a GUI -t. A GUI tervezéséhez a MATLAB alkalmazástervezőjét is használhatja.
Összesen 9 gombot fogunk létrehozni (az ábrán látható módon):
6 nyomógomb: előre, hátra, balra, jobbra, Csatlakozás a robothoz, Leválasztás
3 Szerkeszthető gombok: Ros pc ip, port és a téma neve.
A szerkeszthető gombok azok a gombok, amelyek a ROS PC ip-jét, annak portját és a Téma nevét használják bemenetként. A Téma neve az, amin a MATLAB vezérlő és a ROS robot/pc kommunikál. A szerkeszthető gomb karakterláncának szerkesztéséhez kattintson a jobb gombbal a gombra >> menjen az Inspector properties >> String elemre, és szerkessze a gomb szövegét.
Miután elkészült a GUI, programozhatja a gombokat. Itt kezdődik az igazi mulatság…
6. lépés: A GUI szerkeszthető gombok programozása
A GUI.fig fájlként kerül mentésre, de a kód/visszahívási funkciók.m formátumban vannak mentve. A.m fájl tartalmazza az összes gomb kódját. Ha visszahívási funkciókat szeretne hozzáadni a gombokhoz, kattintson a jobb gombbal a gombra> > Visszahívások megtekintése >> visszahívás. Ez megnyitja a GUI.m fájlját, ahol az adott gomb meg van határozva.
Az első visszahívás, amelyet kódolni fogunk, a ROS IP szerkeszthető gombja. A edit1_Callback függvénybe írja be a következő kódot:
function edit1_Callback (hObject, eventdata, fogantyúk)
globális ros_master_ip
ros_master_ip = get (hObject, 'String')
Itt a függvény az edit1_Callback, amely az első szerkeszthető gombra vonatkozik. Ha ebbe a szerkeszthető gombba beírunk egy IP-címet a ROS hálózatból, akkor az az IP-címet karakterláncként tárolja a ros_master_ip nevű globális változóban.
Ezután közvetlenül az _OpeningFcn (hObject, eventdata, fogantyúk, varargin) alatt határozza meg a következőket (lásd az ábrát):
globális ros_master_ip
globális ros_master_port
globális teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
Csak globálisan kódolta a ros-pc ip (ros_master_ip), port (ros_master_port) és a Teleop Topic nevét. Ez azt jelenti, hogy ha üresen hagyja a szerkeszthető gombokat, akkor ezeket az előre meghatározott értékeket fogja használni a csatlakozáskor.
A következő visszahívás, amelyet kódolni fogunk, a Port szerkeszthető gombja.
Az edit2_Callback függvénybe írja be a következő kódot:
function edit2_Callback (hObject, eventdata, fogantyúk)
globális ros_master_port
ros_master_port = get (hObject, 'String')
Itt a függvény edit2_Callback -ként van definiálva, ami a második szerkeszthető gombra vonatkozik. Amikor belépünk a ros pc/robot portjára a ROS hálózatból ebben a szerkeszthető gombban, akkor a port karakterláncként tárolja a ros_master_port nevű globális változót.
Hasonlóképpen a következő visszahívás, amelyet kódolni fogunk, a Téma neve szerkeszthető gomb.
A edit3_Callback függvénybe írja be a következő kódot:
function edit3_Callback (hObject, eventdata, fogantyúk)
globális teleop_topic_name
teleop_topic_name = get (hObject, 'String')
A ros_master_porthoz hasonlóan ez is egy globális változó karakterláncaként kerül tárolásra.
Ezután megvizsgáljuk a nyomógombok visszahívási funkcióit…
7. lépés: A GUI nyomógombok programozása
A korábban létrehozott nyomógombokkal fogjuk mozgatni, csatlakoztatni és leválasztani a robotot a vezérlőről. A nyomógombos visszahívások a következők:
például. funkció pushbutton6_Callback (hObject, eventdata, fogantyúk)
Megjegyzés: attól függően, hogy milyen sorrendben hozta létre a nyomógombokat, azok számozása ennek megfelelően történik. Ezért a.m fájlom pushbutton6 funkciója az Előre, míg a.m fájljában a Visszafelé való lehet, ezért ezt tartsa szem előtt. Ahhoz, hogy megtudja, melyik funkciója van a nyomógombjának, egyszerűen kattintson a jobb egérgombbal a >> Visszahívások megtekintése >> visszahívások elemre, és megnyílik a nyomógomb funkciója, de ehhez az oktathatóhoz feltételezem, hogy ugyanaz, mint az enyém.
A Connect to robot gombhoz:
A pushbutton6_Callback (hObject, eventdata, fogantyúk) funkció alatt:
funkció pushbutton6_Callback (hObject, eventdata, fogantyúk) global ros_master_ip
globális ros_master_port
globális teleop_topic_name
globális robot
globális 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 = rosmessage (robot);
Ez a visszahívás beállítja a ROS_MASTER_URI változót a ros_master_ip és a port összefűzésével. Ezután a rosinit parancs inicializálja a kapcsolatot. A csatlakozás után létrehozza a geometry_msgs/Twist kiadót, amelyet a parancs sebességének elküldésére használnak. A téma neve a szerkesztőmezőben megadott név. Ha a csatlakozás sikeres, működtethetjük az Előre, Vissza, Balra, Jobbra nyomógombokat.
Mielőtt visszahívásokat adnánk az előre, hátra nyomógombokhoz, inicializálnunk kell a lineáris és a szögsebesség sebességét.
Ezért az alábbiakban az _OpeningFcn (hObject, eventdata, fogantyúk, varargin) határozza meg a következőket (lásd az ábrát):
global left_spinVelocity globális right_spinVelocity
globális előrehaladásVelocity
globális visszafeléVelocity
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
backwardVelocity = -3;
Megjegyzés: minden sebesség rad/s -ban van megadva
Most, hogy a globális változók definiáltak, programozzuk a mozgás nyomógombokat.
Az Előre nyomógombhoz:
funkció pushbutton4_Callback (hObject, eventdata, fogantyúk) globális velmsg
globális robot
globális teleop_topic_name
globális előrehaladásVelocity
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
küld (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Hasonlóan a Vissza gombhoz:
funkció pushbutton5_Callback (hObject, eventdata, fogantyúk)
globális velmsg
globális robot
globális visszafeléVelocity
globális teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = visszafeléVelocity;
küld (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Hasonlóan a bal oldali nyomógombhoz: funkció pushbutton3_Callback (hObject, eventdata, fogantyúk)
globális velmsgglobal robot globális left_spinVelocity
globális teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
küld (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Hasonlóan a jobb oldali nyomógombhoz:
globális velmsgglobal robot
globális right_spinVelocity
globális teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
küld (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Az összes visszahívási funkció hozzáadása és a fájlok mentése után tesztelhetjük a vezérlőnket.
8. lépés: A hálózati konfiguráció beállítása ROS PC -n (Linux)
A vezérlőt egy ros pc -n (Linux) teszteljük, ami megköveteli a hálózati konfiguráció beállítását. Ha a vezérlőt linuxos számítógépen is futtatja, akkor ott is be kell állítania a hálózati konfigurációt.
Hálózati konfiguráció:
Nyissa meg a terminál ablakát, és írja be a gedit.bashrc parancsot
A fájl megnyitása után adja hozzá a következőket:
#Robotgép konfigurálása
export ROS_MASTER_URI = https:// localhost: 11311
#ROS fő csomópont IP címe
export ROS_HOSTNAME =
export ROS_IP =
echo "ROS_HOSTNAME:" $ ROS_HOSTNAME
echo "ROS_IP:" $ ROS_IP
echo "ROS_MASTER_URI:" $ ROS_MASTER_URI
Ezt a lépést minden alkalommal követnie kell a dinamikus IP -hozzárendelés miatt.
9. lépés: Futtassa a vezérlőt
Kipróbáljuk a vezérlőnket egy Turtle boton a Gazebo -ban.
A Gazebo telepítéséhez látogasson el a https://gazebosim.org/tutorials?tut=install_ubuntu&cat=install oldalra.
A Turtle bot telepítéséhez látogasson el a https://yainnoware.blogspot.com/2018/09/install-turtlebot-on-ros-kinetic-ubuntu.html webhelyre.
Nyissa meg azt a mappát, ahová a.fig és.m fájlokat mentette a MATLAB -on, majd nyomja meg a Futtatás gombot (a képen látható módon). Ez megnyitja a vezérlőt a számítógépen. A connect megnyomása előtt győződjön meg arról, hogy a teknősbot -szimulátor működik.
A TurtleBot szimuláció tesztelése:
Nyissa meg a terminált a Ros számítógépen, és írja be: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Ez megnyitja a Turtlebot szimulációját az adott számítógépen. A TurtleBot témakör neve/cmd_vel_mux/input/teleop, amelyet már megadtunk az alkalmazásban. Írja be a ros pc Ip -címét, portját és a téma nevét a szerkeszthető gombokban, majd nyomja meg a. Connect to Robot gombot. A teknősbotnak mozognia kell, ha megnyomja az Előre, Vissza stb.
A lineáris és szögsebesség megtekintéséhez:
Nyisson meg egy új terminált, és írja be a következő parancsot: $ rostopic echo/cmd_vel_mux/input/teleop
És ott van a saját Matlab-alapú ROS robotvezérlője. Ha tetszett az utasításom, kérjük, szavazzon róla az Első Szerzői Versenyen, és ossza meg minél több emberrel. Köszönöm.
Ajánlott:
Alexa alapú hangvezérelt rakétaindító: 9 lépés (képekkel)
Alexa alapú hangvezérelt rakétaindító: A téli szezon közeledtével; eljön az évnek az a szakasza, amikor a fények ünnepét ünneplik. Igen, Diwaliról beszélünk, amely egy igazi indiai fesztivál, amelyet világszerte ünnepelnek. Idén Diwali már véget ért, és láthat embereket
N64 ihlette robotvezérlő (Arduino + NRF24L01): 4 lépés
N64 ihlette robotvezérlő (Arduino + NRF24L01): Az első robotprojektem óta játékvezérlőket használok parancsok és funkciók végrehajtására. Ez minden bizonnyal a játékos napjaim hatása. Már csináltam projekteket PS2, Xbox 360 vezérlőkkel … de eljött az idő, amikor néhány interfész problémám volt
Arduino alapú érintésmentes infravörös hőmérő - IR alapú hőmérő Arduino használatával: 4 lépés
Arduino alapú érintésmentes infravörös hőmérő | IR alapú hőmérő Arduino használatával: Sziasztok, ebben az útmutatóban, érintésmentes hőmérőt készítünk arduino segítségével. Mivel néha a folyadék/szilárd anyag hőmérséklete túl magas vagy alacsony, majd nehéz kapcsolatba lépni vele és elolvasni ilyenkor a hőmérséklet
Időjárás alapú zenegenerátor (ESP8266 alapú Midi generátor): 4 lépés (képekkel)
Időjárás alapú zenegenerátor (ESP8266 alapú Midi generátor): Szia, ma elmagyarázom, hogyan készíts saját kis időjárás alapú zenegenerátort. Ez egy ESP8266 -on alapul, ami olyan, mint egy Arduino, és reagál a hőmérsékletre, az esőre és fényintenzitás. Ne várd el, hogy teljes dalokat vagy akkordprogramokat készítsen
ROS MoveIt robotkar 2. rész: Robotvezérlő: 6 lépés
ROS MoveIt Robot Arm 2. rész: Robotvezérlő: https://github.com/AIWintermuteAI/ros-moveit-arm.gitA cikk előző részében URDF és XACRO fájlokat hoztunk létre robotkarunkhoz, és elindítottuk az RVIZ-t robotkar szimulált környezetben. Ezúttal a reával