Warning
This page is located in archive.

Marocon: BlueBot Robot Control Toolbox pro Matlab - Návod použití

Úvod

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).

Kromě tohoto návodu jsou všechny funkce toolboxu zdokumentovány, pro jejich podrobný popis je vhodné používat příkaz 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.

Jednoduchá demonstrace

Definice robotů, které jsou v knihovně k dispozici lze vyjmenovat příkazem 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( 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.

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.

Typický průběh práce s toolboxem

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).

Inicializace a ukončení

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.

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.

bbclose( robot )

Proběhla-li inicializace polohy, nastaví robot do počáteční polohy. Nakonec uzavře komunikační kanál.

Základní pohyb

Při práci s robotem lze používat kloubové souřadnice v jednotkách:

  • IRC - hardwarové jednotky kloubového senzoru.
  • deg - stupně pro rotační kloub, milimetry pro posuvný kloub.

Jsou k dispozici i konverzní funkce (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.

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.

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.

Chapadlo

Je-li robot vybaven chapadlem, lze jej ovládat příkazem 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).

Chapadlo řízené napětím (robPWMgripper)

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.

Chapadlo montované na robota CRS (robCRSgripper)

Chapadlo CRS

Chapadlo používá power v plném rozsahu < -1;1>:

  • Poloha - v rozsahu < -0.1;0.1> pracuje řízení polohy čelistí s poměrně malou silou (-0.1 - plné otevření, 0.1 - plné uzavření).
  • Stisk - v rozsahu <0.1;1> dochází k stisknutí tak jak uchopený předmět dovolí a je nastavena síla stisku (0.1 - téměř bez síly, 1 - maximální síla).
  • Rozpor - v rozsahu < -1;-0.1> dochází k rozevření tak jak uchopený předmět dovolí a je nastavena síla rozporu (-0.1 - téměř bez síly, -1 - maximální síla).

Průběh polohy a síly

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.

Souhrn funkcí

Přehled funkcí lze získat příkazem help bluebot (je-li v cestě Matlabu).

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.

help/common/bluebot_toolbox.txt · Last modified: 2020/09/15 14:08 by smutny