25 Jun 2017, 13:47

LEGO Mindstorms で GyroBoy を組み立てた

LEGO MindStorms EV3 を買ったので、まずは GyroBoy を組み立ててみた。

動かしてみる

早速、動かしてみたい!

倒立振子をするロポットの作り方は以下のチュートリアルに乗っている。 - Tutorial: Building BALANC3R - Robotsquare

バランスをとりながら倒立するロポットは 2 種類あるみたい。 - BALANCE3R - GyroBoy

チュートリアルでは BALANC3R の説明をしているけれども、 BALANCE3R をつくれるのは、LEGO MindStorms Home Edition なので、 私は、GyroBoy を作ることにした(わたしのは Education Edition)

組み立て方は以下のリンクから PDF がダウンロードできる。

出来上がったのは以下のロボット。かっこいい!組み立ての要領が悪く 5 時間かかった。

img

Python で倒立振子する

ev3dev-lang-python には、Balancer が提供さている。さすが。

開発の経緯 - Implement BALANC3R · Issue #130 · rhempel/ev3dev-lang-python

参考になったコード - segway/segway.py at master · laurensvalk/segway

ev3dev-lang-python にまーじされたコード - https://github.com/rhempel/ev3dev-lang-python/blob/d0625b5b1e1fdcdd69b7fa390695613a81191736/demo/BALANC3R

#!/usr/bin/env python3

import logging
from ev3dev.GyroBalancer import GyroBalancer


class BALANC3R(GyroBalancer):
    def __init__(self):
        GyroBalancer.__init__(self,
                              gainGyroAngle=1156,
                              gainGyroRate=146,
                              gainMotorAngle=7,
                              gainMotorAngularSpeed=9,
                              gainMotorAngleErrorAccumulated=3)


if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s %(levelname)5s: %(message)s')
    log = logging.getLogger(__name__)

    log.info("Starting BALANC3R")
    robot = BALANC3R()
    robot.main()
log.info("Exiting BALANC3R")

これを実施すると、RemoteControl が定義されていないということで、エラーする

LEGO MindStorms は リモコンで制御するためのセンサーがあるのだけれども、 教育版にはリモコンセンサはついていない。なので、以下のソースをいじって REMOTE CONTROL にかかわる部分を全部削除した!

さあこれでどうだろう・・・立ち上がった!うれしい。

https://www.youtube.com/embed/7Sb4aqrfy3Y?ecver=1