Obsah:
- Zásoby
- Krok 1: Inštalácia všetkého
- Krok 2: Pochopenie fungovania ovládača
- Krok 3: Vytvorenie rozhrania ROS-MATLAB
- Krok 4: Získanie adresy IP
- Krok 5: Vytvorte GUI pre ovládač
- Krok 6: Programovanie tlačidiel upraviteľných v GUI
- Krok 7: Programovanie tlačidiel GUI
- Krok 8: Nastavenie konfigurácie siete na počítači ROS PC (Linux)
- Krok 9: Spustite ovládač
Video: Robotický ovládač ROS založený na Matlabe: 9 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Odmalička som sníval o tom, že budem Iron Man a stále to robím. Iron Man je jednou z tých postáv, ktoré sú realisticky možné a jednoducho povedané, túžim sa raz stať Iron Manom, aj keď sa mi ľudia smejú alebo hovoria, že je to nemožné, pretože „je to nemožné len dovtedy, kým to niekto neurobí“-Arnold Schwarzenegger.
ROS je nový rámec, ktorý sa používa na vývoj komplexných robotických systémov. Medzi jeho aplikácie patrí: Automatizovaný montážny systém, Teleoperácia, Protetické zbrane a ťažké stroje priemyselného sektora.
Výskumníci a inžinieri využívajú ROS na vývoj prototypov, zatiaľ čo rôzni predajcovia ho používajú na vytváranie svojich produktov. Má zložitú architektúru, vďaka ktorej je ťažké ovládať ho chromým mužom. Použitie MATLABu na vytvorenie prepojenia rozhrania s ROS je nový prístup, ktorý môže výskumníkom, inžinierom a predajcom pomôcť pri vývoji robustnejších riešení.
Tento návod je teda o tom, ako vytvoriť robotický ovládač ROS na báze Matlabu. Bude to jeden z mála návodov, ako na to, a medzi niekoľkými inštrukciami ROS. Cieľom tohto projektu je navrhnúť ovládač, ktorý môže ovládať akéhokoľvek robota ROS pripojeného k vašej sieti. Začnime teda!
Kredity za úpravu videa: Ammar Akher, na adrese [email protected]
Zásoby
Na projekt sú potrebné tieto komponenty:
(1) ROS PC/robot
(2) Smerovač
(3) PC s MATLAB (verzia: 2014 alebo vyššia)
Krok 1: Inštalácia všetkého
Na tento pokyn používam Ubuntu 16.04 pre svoj linuxový počítač a ros-kinetiku, aby som sa vyhýbal zmätkom, odporúčam použiť ros kinetiku a ubuntu 16.04, pretože má najlepšiu podporu pre ros-kinetiku. Ďalšie informácie o inštalácii ros kinetiky nájdete na stránke https://wiki.ros.org/kinetic/Installation/Ubuntu. Pre MATLAB si buď kúpite licenciu, alebo si odtiaľ stiahnete trailovú verziu.
Krok 2: Pochopenie fungovania ovládača
Na počítači je spustený robotický ovládač v systéme MATLAB. Ovládač prevezme IP adresu a port ros pc/robota.
Téma ros sa používa na komunikáciu medzi ovládačom a počítačom/počítačom ros, ktorá je tiež považovaná za vstup ovládača. Modem je potrebný na vytvorenie siete LAN (lokálna sieť) a práve ten priradí adresy IP všetkým zariadeniam pripojeným k jej sieti. Preto musia byť ros pc/robot a počítač, na ktorom je spustený ovládač, pripojené k tej istej sieti (tj. K sieti modemu). Takže teraz, keď viete, „ako to funguje“, poďme na to „ako sa to stavia“…
Krok 3: Vytvorenie rozhrania ROS-MATLAB
Rozhranie ROS-MATLAB je užitočným rozhraním pre výskumníkov a študentov na prototypovanie ich algoritmov robotov v programe MATLAB a ich testovanie na robotoch kompatibilných s ROS. Toto rozhranie je možné vytvoriť pomocou súpravy nástrojov systému robotiky v programe MATLAB a náš algoritmus môžeme prototypovať a otestovať na robot s podporou ROS alebo v simulátoroch robotov, ako sú Gazebo a V-REP.
Ak chcete do svojho systému MATLAB nainštalovať súbor nástrojov systému robotiky, jednoducho prejdite na možnosť Doplnok na paneli s nástrojmi a v prieskumníkovi doplnkov vyhľadajte súbor robotických nástrojov. Pomocou súboru robotických nástrojov môžeme publikovať alebo prihlásiť sa na odber témy, napríklad uzla ROS, a môžeme z neho urobiť majstra ROS. Rozhranie MATLAB-ROS má väčšinu funkcií ROS, ktoré by ste mohli potrebovať pre svoje projekty.
Krok 4: Získanie adresy IP
Aby ovládač fungoval, je nevyhnutné, aby ste poznali IP adresu vášho robota/počítača ROS a počítača, na ktorom je spustený ovládač na serveri MATLAB.
Ak chcete získať adresu IP počítača:
V systéme Windows:
Otvorte príkazový riadok, zadajte príkaz ipconfig a poznamenajte si adresu IPv4
Pre Linux:
Zadajte príkaz ifconfig a poznačte si inet adresu. Teraz, keď máte IP adresu, je čas vytvoriť GUI …
Krok 5: Vytvorte GUI pre ovládač
Ak chcete vytvoriť GUI, otvorte MATLAB a do príkazového okna zadajte príkaz guide. Tým sa otvorí aplikácia sprievodcu, v ktorej budeme vytvárať naše GUI. Na návrh GUI môžete použiť aj návrhára aplikácií v MATLABe.
Vytvoríme celkom 9 tlačidiel (ako je znázornené na obr.):
6 tlačidiel: dopredu, dozadu, doľava, doprava, pripojenie k robotu, odpojenie
3 editovateľné tlačidlá: Ros pc ip, port a názov témy.
Editovateľné tlačidlá sú tlačidlá, ktoré použijú ako vstup IP i ROS počítača, jeho port a názov témy. Názov témy je to, cez čo komunikujú ovládač MATLAB a robot/počítač ROS. Ak chcete upraviť reťazec na editovateľnom tlačidle, kliknite pravým tlačidlom myši na tlačidlo >> prejdite na položku Vlastnosti inšpektora >> Reťazec a upravte text tlačidla.
Akonáhle je vaše GUI dokončené, môžete tlačidlá naprogramovať. Tu začína skutočná zábava …
Krok 6: Programovanie tlačidiel upraviteľných v GUI
GUI je uložené ako súbor.fig, ale funkcie kódu/spätného volania sú uložené vo formáte.m. Súbor.m obsahuje kód pre všetky vaše tlačidlá. Ak chcete k svojim tlačidlám pridať funkcie spätného volania, kliknite pravým tlačidlom myši na tlačidlo> > Zobraziť spätné volania >> spätné volanie. Tým sa otvorí súbor.m pre vaše grafické rozhranie, kde je definované konkrétne tlačidlo.
Prvé spätné volanie, ktoré ideme kódovať, je pre tlačidlo ROS IP, ktoré je možné upravovať. Pod funkciou edit1_Callback napíšte nasledujúci kód:
funkcia edit1_Callback (hObject, eventdata, handle)
globálny ros_master_ip
ros_master_ip = get (hObject, 'String')
Tu je funkcia definovaná ako edit1_Callback, ktorá odkazuje na prvé upraviteľné tlačidlo. Keď do tohto upraviteľného tlačidla zadáme IP adresu zo siete ROS, uloží IP adresu ako reťazec do globálnej premennej nazývanej ros_master_ip.
Potom tesne pod _OpeningFcn (hObject, eventdata, handle, varargin) definujte nasledujúce (pozri obr.):
globálny ros_master_ip
globálny ros_master_port
globálny názov teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
Práve ste globálne naprogramovali napevno ros-pc ip (ros_master_ip), port (ros_master_port) a názov témy Teleop. Čo to robí, je, že ak necháte editovateľné tlačidlá prázdne, tieto preddefinované hodnoty sa použijú pri pripojení.
Nasledujúce spätné volanie, ktoré ideme kódovať, je pre tlačidlo Upraviteľné portom.
Pod funkciou edit2_Callback napíšte nasledujúci kód:
funkcia edit2_Callback (hObject, eventdata, handle)
globálny ros_master_port
ros_master_port = get (hObject, 'String')
Tu je funkcia definovaná ako edit2_Callback, ktorá odkazuje na druhé upraviteľné tlačidlo. Keď sem zadáme port ros pc/robota zo siete ROS v tomto editovateľnom tlačidle, uloží port ako reťazec do globálnej premennej nazývanej ros_master_port.
Podobne ďalšie spätné volanie, ktoré ideme kódovať, je pre tlačidlo na úpravu názvu témy.
Pod funkciou edit3_Callback napíšte nasledujúci kód:
funkcia edit3_Callback (hObject, eventdata, handle)
globálny názov teleop_topic_name
teleop_topic_name = get (hObject, 'String')
Podobne ako ros_master_port, aj toto je uložené ako reťazec v globálnej premennej.
Ďalej sa pozrieme na funkcie spätného volania tlačidiel …
Krok 7: Programovanie tlačidiel GUI
Tlačidlá, ktoré sme vytvorili predtým, budú tie, ktoré použijeme na pohyb, pripojenie a odpojenie robota od ovládača. Spätné volania tlačidiel sú definované nasledovne:
napr. funkcia pushbutton6_Callback (hObject, eventdata, handle)
Poznámka: v závislosti od poradia, v akom ste vytvorili svoje tlačidlá, budú zodpovedajúcim spôsobom očíslované. Preto funkcia pushbutton6 v mojom súbore.m môže byť pre Forward, zatiaľ čo vo vašom súbore.m môže byť pre Backwards, takže to majte na pamäti. Ak chcete vedieť, akú presnú funkciu má vaše tlačidlo, kliknite pravým tlačidlom myši na položku >> Zobraziť spätné volania >> Spätné volania a otvorí sa funkcia pre vaše tlačidlo, ale pre tento pokyn predpokladám, že je rovnaký ako môj.
Pre tlačidlo Pripojiť k robotovi:
Pod funkciou pushbutton6_Callback (hObject, eventdata, handle):
function pushbutton6_Callback (hObject, eventdata, handle) global ros_master_ip
globálny ros_master_port
globálny názov teleop_topic_name
globálny robot
globálna 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);
Toto spätné volanie nastaví premennú ROS_MASTER_URI zreťazením ros_master_ip a portu. Potom príkaz rosinit inicializuje pripojenie. Po pripojení vytvorí vydavateľa geometry_msgs/Twist, ktorý bude slúžiť na odosielanie príkazu velocity. Názov témy je názov, ktorý zadáme do poľa na úpravu. Akonáhle bude pripojenie úspešné, budeme môcť ovládať tlačidlá dopredu, dozadu, doľava, doprava.
Pred pridaním spätných volaní na tlačidlá Vpred, Vzad musíme inicializovať rýchlosti lineárnej a uhlovej rýchlosti.
Preto pod _OpeningFcn (hObject, eventdata, handle, varargin) definujte nasledujúce (pozri obr.):
global left_spinVelocity global right_spinVelocity
globálna forwardová rýchlosť
global backwardVelocity
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
backwardVelocity = -3;
Poznámka: všetky rýchlosti sú v rad/s
Teraz, keď sú definované globálne premenné, naprogramujme pohybové tlačidlá.
Pre tlačidlo Vpred:
funkcia pushbutton4_Callback (hObject, eventdata, handle) globálna velmsg
globálny robot
globálny názov teleop_topic_name
globálna forwardová rýchlosť
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
odoslať (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Podobne pre tlačidlo Späť:
funkcia pushbutton5_Callback (hObject, eventdata, handle)
globálna velmsg
globálny robot
global backwardVelocity
globálny názov teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = backwardVelocity;
odoslať (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Podobne pre ľavé tlačidlo: funkcia pushbutton3_Callback (hObject, data udalosti, úchyty)
global velmsgglobal robot global left_spinVelocity
globálny názov teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
odoslať (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Podobne pre pravé tlačidlo:
globálny veľmsgglobal robot
global right_spinVelocity
globálny názov teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
odoslať (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Akonáhle boli pridané všetky funkcie spätného volania a uložené súbory, môžeme otestovať náš ovládač.
Krok 8: Nastavenie konfigurácie siete na počítači ROS PC (Linux)
Testujeme ovládač na počítači ros pc (Linux), ktoré bude vyžadovať nastavenie konfigurácie siete. Ak ovládač používate aj na počítači so systémom Linux, budete musieť nastaviť konfiguráciu siete aj tam.
Konfigurácia siete:
Otvorte okno terminálu a zadajte príkaz gedit.bashrc
Akonáhle je súbor otvorený, pridajte nasledujúce:
#Konfigurácia robota
export ROS_MASTER_URI = https:// localhost: 11311
#IP adresa hlavného uzla ROS
exportovať ROS_HOSTNAME =
exportovať ROS_IP =
echo "ROS_HOSTNAME:" $ ROS_HOSTNAME
echo "ROS_IP:" $ ROS_IP
echo "ROS_MASTER_URI:" $ ROS_MASTER_URI
Tento krok musíte vykonať vždy kvôli dynamickému priradeniu IP.
Krok 9: Spustite ovládač
Ideme otestovať náš ovládač na korytnačom topánkovi v altánku.
Ak chcete nainštalovať Gazebo, pozrite sa na
Ak chcete nainštalovať Turtle bot, pozrite sa na
Otvorte priečinok, do ktorého ste uložili súbory.fig a.m v MATLABe, a kliknite na položku Spustiť (ako je znázornené na obrázku). Tým sa otvorí ovládač v počítači. Pred stlačením pripojenia sa uistite, že váš simulátor robotov korytnačiek funguje.
Ak chcete otestovať svoju simuláciu TurtleBot:
Otvorte terminál na počítači Ros a zadajte: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Na tomto počítači sa otvorí simulácia Turtlebot. Názov témy programu TurtleBot je/cmd_vel_mux/input/teleop, ktorý sme už poskytli v aplikácii. Do upraviteľných tlačidiel zadajte rosp Ip adresu, port a názov témy a stlačte tlačidlo. Pripojiť k robotu. Váš korytnačí robot by sa mal začať pohybovať, keď stlačíte dopredu, dozadu atď.
Ak chcete zobraziť lineárne a uhlové rýchlosti:
Otvorte nový terminál a zadajte príkaz: $ rostopic echo/cmd_vel_mux/input/teleop
A tu máte svoj vlastný robotický ovládač ROS založený na Matlabe. Ak sa vám páčil môj návod, dajte mu prosím hlas v Prvotnej autorskej súťaži a zdieľajte ho s čo najväčším počtom ľudí. Ďakujem.
Odporúča:
DIY herný ovládač založený na Arduine - Herný ovládač Arduino PS2 - Hra Tekken s gamepadom DIY Arduino: 7 krokov
DIY herný ovládač založený na Arduine | Herný ovládač Arduino PS2 | Hranie Tekkenu s gamepadom pre domácich majstrov Arduino: Dobrý deň, chlapci, hranie hier je vždy zábavné, ale hranie s vlastným ovládačom pre vlastnú potrebu je zábavnejšie. Preto v tomto návode vytvoríme herný ovládač pomocou arduino pro micro
Vylepšenia programovania vlakov v MATLABe: 6 krokov
Vylepšenia programovania vlakov v MATLAB: Cieľ: Cieľom tohto programovaného systému je pozrieť sa na Arduino v malom meradle a vo väčšej miere aplikovať kódovanie, aby sa potenciálne rozšírili určité bezpečnostné funkcie železničných systémov Amtrak. Aby sme to urobili, pridali sme snímač pôdnej vlhkosti
Robotické rameno ROS MoveIt Časť 2: Ovládač robota: 6 krokov
Robotické rameno ROS MoveIt Časť 2: Ovládač robota: https://github.com/AIWintermuteAI/ros-moveit-arm.gitV predchádzajúcej časti článku sme pre naše robotické rameno vytvorili súbory URDF a XACRO a spustili RVIZ na ovládanie nášho robotické rameno v simulovanom prostredí. Tentokrát to urobíme s rea
Nastavte RTL-SDR v MATLABe ako FM prijímač: 4 kroky
Nastavte RTL-SDR v MATLABe ako FM prijímač: RTL-SDR sú v dnešnej dobe veľmi známe pre FM prijímače a ďalšie úlohy súvisiace s FM pre hobby a študentov. Toto je jednoduchý návod, ako začať s SDR na MATLABe. Ďalšiu pomoc nájdete v balíku „Komunikačný systém Toolbox Support Packa
Kapacitný dotyk s Evive (ovládač založený na Arduine): 6 krokov (s obrázkami)
Kapacitný dotyk s Evive (ovládač založený na Arduino): Viete, ako funguje dotyková obrazovka vášho smartfónu? Smartfón má pod sklenenou obrazovkou množstvo dotykových senzorov. V dnešnej dobe je založený na kapacitnej technológii snímania dotyku a dokonca aj jemného dotyku je ľahko rozpoznateľný. Kapacitný dotyk je cítiť