Up GoPiGo の回転によるカメラ映像の変化 作成: 2021-05-21
更新: 2021-05-21


    カメラを GoPiGo に装着。
    カメラの向きを,GoPiGo の真っ直ぐ前方に固定。

    カメラ映像の画面サイズを,640 × 480 とする。
    カメラ映像を,<カメラの1m前方の平面>の画像で考える。

    GoPiGo を時間tだけ左回転するとき,画像の中心座標 (0, 0) にあった像は,座標 (x, 0) になる。
    この対応 : t ↔x を,ここで調べる。


    作業
    1. カメラ映像は,MJPG-streamer を用いる
        システム使用手順
      1. PC から Raspberry Pi に ssh 接続
      2. Apache を起動
          $ sudo systemctl start apache2
      3. MJPG-streamer を,デーモンで起動 (画像サイズ 640 × 480):
          ~ $ ./mjpg.sh 640 480 1 50 &
      4. カメラ映像のストリーミングのページに,PC のブラウザで http 接続


    2. つぎのプログラムで GoPiGo の回転を操作する:
        $ vi rotation.py
        #!/usr/bin/env python import gopigo3 gpg = gopigo3.GoPiGo3() gpg.set_servo(gpg.SERVO_1, 1500) from easygopigo3 import EasyGoPiGo3 egpg = EasyGoPiGo3() from time import sleep egpg.set_speed(10) def rotation( t ): egpg.left() sleep(t) egpg.stop() while True: t = input( '回転時間 (q で終了):') if t == 'q': break else: rotation( float(t) ) gpg.reset_all() egpg.reset_all()

        $ chmod +x rotation.py
        $ ./rotation.py


    3. ストリーミング停止
      1. MJPG-streamer を停止:
          $ sudo pkill mjpg
      2. Apache を停止:
          $ sudo systemctl stop apache2


    結果
      対応 t ↔ x は,おおよそつぎのようになった:
        t x
        0 0
        3 --50
        4.5 -100
        6 -150
        9 -200
        12 -300