Search
Tato knihovna funkcí zpřístupňuje řízení robotů z Matlabu pomocí jednotného rozhraní. Umožňuje pohyb robotem v kloubových souřadnicích (hardwarové IRC i stupně) a ovládání chapadla. Dále obsahuje podpůrné funkce pro konverze kloubových souřadnic a přímou a inverzní kinematickou úlohu. Knihovna dále nově obsahuje i funkce pro pohyb po splinech.
Aby bylo možné daný robot tímto toolboxem ovládat, musí být k dispozici definiční soubor. Některé definice robotů jsou součástí toolboxu (např. CRS A565 nebo Bosch SR450s); je možné také pracovat s externími definicemi.
V současné době je komunikace s řídící jednotkou realizována pomocí sériového (RS232) rozhraní.
BlueBot toolbox vyžaduje Matlab 7.6 (R2008a) a výše s podporou serial port object (na x64 je třeba vyšší verze).
serial port object
Kromě tohoto návodu jsou všechny funkce toolboxu zdokumentovány, pro jejich podrobný popis je vhodné používat příkaz help.
help
Knihovna je přístupna na adrese:
GitHub - Marocon
Pro použití v učebně E-131 je knihovna umístěna na síťovém disku, pro její použití je třeba ji nejprve umístit do cesty Matlabu:
/bluebot/data/Marocon/src
Pro načtení hodnoty výstupu snímače, pokud je nainstalován, lze použít funkce bbreaddigi(robot, index). Výstup snímače je namapován na sedmý bit počítáno od 0, v MATLABu tedy pod indexem 8.
bbreaddigi(robot, index)
Definice robotů, které jsou v knihovně k dispozici lze vyjmenovat příkazem bbrobots:
bbrobots
>> bbrobots Available robot definitions: CRS93 .. CRS 1993 with gripper CRS97 .. CRS 1997 with gripper T2 .. Single translation table Opten T2 bosch .. Bosch SR450s boschmagnet .. Bosch SR450s equipped with magnetic gripper
Základní ovládání robotu demonstruje funkce bbdemo.
bbdemo
bbdemo( robotname [, comport] )
Ta provede patřičné inicializace a volá demonstrační sekvenci, je-li k dispozici. Na závěr uzavře komunikaci s robotem. Funkce očekává parametr specifikující daného robota (např. bosch) a volitelně lze zadat komunikační port, je-li robot připojen k jinému portu než je definováno v jeho specifikaci.
bosch
V případě, že je komunikace s robotem již otevřena, lze funkci předat přímo řídící strukturu robotu. V tom případě je pouze zavolána demonstrační sekvence a komunikační kanál je ponechán otevřen.
Pozor: demonstrační sekvence pro daný robot předpokládá (více či méně) volný pracovní prostor.
Předpokládáme, že knihovna BlueBot je v Matlabu již přístupná (nastavení path). Před započetím vlastní práce s robotem je třeba otevřít kumunikační kanál (bbopen) a zinicializovat řídící jednotku a robot (bbinit). Pak je možné ovládat pohyb a podobně. Nakonec je vhodné robot uvést do klidové polohy a ukončit komunikaci s řídící jednotkou (bbclose).
bbopen
bbinit
bbclose
robot = bbopen( robotname [, comport] )
Načte specifikaci robotu, otevře komunikační port a nastaví jeho parametry. Funkce vrací řídící proměnnou, kterou používají ostatní funkce knihovny. Použitý port je definován specifikací robotu, může být také nastaven volitelným argumentem. Port musí být pro Matlab volný. V případě potřeby (například po ztrátě řídící proměnné) lze uvolnit všechny porty příkazem bbcomreset.
bbcomreset
robot = bbinit( robot [, force_hh ] )
Inicializuje řídící jednotku a nastaví její parametry potřebné pro řízení konkrétního robotu (PID regulátor, logika řízení os a podobně). Následně provede inicializaci polohy (“hard home”) a nastavení do počáteční polohy (“soft home”).
Inicializaci jednotky lze kdykoli opakovat, v tom případě se ale již robotem nehýbe. Nastavení do počáteční polohy lze opakovat příkazem bbsofthome. Pozor: pokud by došlo k vypnutí (a zapnutí) řídící jednotky, či jiným způsobem ke ztrátě informace o poloze kloubů, je třeba provést celou inicializaci znova. To se zajistí nastavením volitelného argumentu force_hh = true.
bbsofthome
force_hh = true
bbclose( robot )
Proběhla-li inicializace polohy, nastaví robot do počáteční polohy. Nakonec uzavře komunikační kanál.
Při práci s robotem lze používat kloubové souřadnice v jednotkách:
Jsou k dispozici i konverzní funkce (bbdegtoirc, bbirctodeg).
bbdegtoirc
bbirctodeg
Základní pohyb robotu ovládají funkce bbmoveirc a bbmovedeg. Tyto funkce pohybují všemi klouby nastavenou rychlostí, doba pohybu jednotlivých klobů se tedy liší. Pro koordinovaný pohyb slouží funkce bbmoveircs a bbmovedegs. Dotaz na aktualní polohu lze učinit funkcemi bbgetirc, bbgetdeg.
bbmoveirc
bbmovedeg
bbmoveircs
bbmovedegs
bbgetirc
bbgetdeg
Pohybové funkce započnou s pohybem robotu, nečekají však na jeho dokončení. K tomu lze využít dotaz bbisready a čekání bbwaitforready.
bbisready
bbwaitforready
Pokud dojde k chybě řízení, například odpojením motorů stiskem bezpečnostního tlačítka, může ovládací jednotka zůstat v chybovém stavu v nekterých kloubech. Tuto chybu je pak třeba vypnout příkazem bbresetmotors.
bbresetmotors
Je-li robot vybaven chapadlem, lze jej ovládat příkazem bbgrip.
bbgrip
bbgrip( robot, power )
Power se nastavuje v rozsahu -1 až 1, jeho význam je závislý na typu chapadla. Hodnota 0 je speciální, vždy znamená chapadlo v klidové poloze, bez síly, bez napájení (tj. bez případné regulace polohy).
Power
0
Tento typ chapadla používá například přídržný magnet. Hodnota power má smysl v rozsahu 0 až 1 (hodnoty <0 se převedou na 0) a udává hodnotu napětí přivedeného na chapadlo, tedy odpovídá například síle magnetu.
power
Chapadlo používá power v plném rozsahu < -1;1>:
Obrázek - průběh polohy (modře) a síly (červeně) v závislosti na nastavení power. Průběh polohy platí pro chapadlo bez předmětu.
Pozn: průběh síly je orientační, její skutečná velikost je ovlivněna velikostí uchopovaného předmětu.
Přehled funkcí lze získat příkazem help bluebot (je-li v cestě Matlabu).
help bluebot
Startup/shutdown bbopen - Open the robot communication. bbinit - Robot initialization and homing. bbclose - Close the robot communication. bbcomreset - Try to close and free all COM ports in use. Low level robot motion bbsofthome - Soft homing. bbcheckirc - Check bounds of joint coordinates given in IRC units. bbcheckdeg - Check bounds of joint coordinates given in degrees/milimeters. bbgetirc - Query current joint positions in IRC units. bbgetdeg - Query current joint positions in degrees/mm. bbmoveirc - Move joints to position given in IRC units. bbmoveircs - Coordinated robot motion through positions given in IRC units. bbmovedeg - Move the joints to position given in degrees/mm. bbmovedegs - Coordinated robot motion through positions given in degrees/mm. bbgrip - Gripper control. bbsetacceleration - Set acceleration for each axis. bbsetspeed - Set speed for each axis. bbisready - Determine if the robot is ready. bbwaitforready - Wait until the robot is ready. bbwaitforgrip - Wait until the gripper finish move. bbresetmotors - Clear err state of all motors. bbrelease - Stop all motors and release its control. Conversions bbdegtoirc - Conversion of angles in degrees/mm to IRC units. bbirctodeg - Conversion of angles in IRC units to degrees/mm. Kinematics bbdkt - Direct kinematic task. bbikt - Inverse kinematic task. Other bbdemo - Demonstration of robot control by BlueBot toolbox. bbrobots - List available robots implemented in the toolbox.