Pan-Tilt jednotka Megarobot

Pan-Tilt jednotka se skládá vždy ze dvou pohonů AI-701 firmy Megarobotics. Pohon AI-701 tvoří servo, které je řízeno příkazy prostřednictvím sběrnice RS-232. Samotné servo přímo interpretuje příkazy. Mezi PC a pohonem není prostředníkem žádná řídící jednotka.

V případě PT jednotky jsou na jedné sběrnici RS-232 počítače připojeny vždy dva pohony. Příjemce řídícího příkazu je v něm identifikován identifikačním číslem (ID). V tomto případě byly pohony nastaveny tak, aby pohon pro otačení v azimutu (vodorovně) měl ID == 0 a pohon pro elevaci (svisle) měl ID == 1. Neprovádějte změny ID – můžete tak snadno způsobit nefunkčnost zařízení. Ze stejných důvodů je také zakázáno měnit komunikační rychlost sériového rozhraní (Baudrate).

  • Dodavatel (MEGAROBOT.NET) poskytuje manuál k pohonu AI-701.
  • K snadnému testování pohonu lze použít program “AI-MOTOR Tool v1.26”, který je již na pracovišti nainstalován.
  • K programu doporučujeme číst krátky popis “Zacínáme s AI-MOTORem” , který poskytuje dodavatel (MEGAROBOT.NET). Tento poisis se zabývá prvními kroky práce s pohonem ve zmíněném programu.

Ovládání jednotky

Pan-Tilt jednotku lze z MATLAbu ovládat pomocí Serial Port I/O.

  1. Pan-Tilt jednotka se inicializuje následující sekvencí příkazů
    ser = serial('COM1');
    set(ser,'BaudRate',57600);
    fopen(ser);
  2. Ovládat jednotku lze zapisováním příslušných řídících bytů (viz manuál) do souboru ser pomocí příkazu fwrite.
  3. Pro ulehčení práce s ovládáním jednotky je možno použít funkci ptmove:
    ptmove(ser, pan_pos, tilt_pos);
    kde pan_pos udává absolutní úhel otočení kolem svislé osy, tilt_pos potom absolutní úhel otočení kolem vodorovné osy. Rozsah hodnot pro pan_pos i tilt_pos je 0 až 254, pokrývající cca 80 úhlových stupnů v daném směru. Pro nastavení jednotky do základní polohy, tedy do polohy, kdy optická osa kamery je kolmá na plochu LCD obrazovky, použijte hodnoty pan_pos==127, tilt_pos==127.
    function ptmove(ser, pan_pos, tilt_pos, speed)
        if nargin<4
            speed = 3;
        end
    
        sermove(ser, speed, 0, pan_pos);
        sermove(ser, speed, 1, tilt_pos);
    end
    
    function sermove(ser, speed, pantilt, pos)
        b1 = uint8(hex2dec('ff'));
        b2 = uint8(bitshift(uint8(speed), 5) + uint8(pantilt));
        b3 = min(max(uint8(pos), uint8(0)), uint8(254));
        b4 = uint8(bitand(bitxor(b2, b3), uint8(hex2dec('7f'))));
        fwrite(ser, [b1 b2 b3 b4]);
    end
  4. Pro skončení práce s jednotkou ji deinicalizujte příkazy
    fclose(ser);
    delete(ser);
help/common/robot_pan_tilt_megarobot.txt · Last modified: 2018/02/03 10:49 (external edit)