zero2one-codeclubのブックマーク (28)

  • 最終回 音声リモコンでロボットをコントロールしよう(4)

    図23がJuliusクライアントの完成版です。このプログラムが読み込まれると「音声リモコンを起動しました」というメッセージがスピーカーから流れます。そのメッセージを確認したら、声で命令することができます。 # -*- coding: utf-8 -*- import socket import sys import select import os import threading host = "localhost" port = 10500 bufsize = 1024 timer_length = 20.0 standby = False os.system("gpio -g mode 9 out") os.system("gpio -g mode 11 out") os.system("gpio -g mode 8 out") os.system("gpio -g mode 7 o

    最終回 音声リモコンでロボットをコントロールしよう(4)
  • 最終回 音声リモコンでロボットをコントロールしよう(3)

    連載の第5回で作成した「jtalk.sh」は、コマンドとしてターミナルから実行することができました。GPIOピンのON/OFFのコントロールもコマンドから直接実行できるようにしておくと便利です。なぜなら、Juliusが音声で命令を受け取ったら、Pythonプログラムの中からこれらのコマンドを呼び出すことで、モーターの動きをコントロールできるからです。まさにこの目的で使える「WiringPi」というソフトウエアがあるので、これを利用したいと思います。 WiringPiのインストール 次のようにコマンドを実行して、WiringPiをインストールしてください。 $ cd ~ $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi $ cd wiringPi/ $ ./build

    最終回 音声リモコンでロボットをコントロールしよう(3)
  • 最終回 音声リモコンでロボットをコントロールしよう(1)

    いよいよ連載も大詰めです。この最終回では、ロボットの耳を作ります。人間が話す言葉を認識して、命令通りに動くロボットにするのが目標です。最終的には、次の動画のように音声の指示で動くロボットを完成させましょう。 ハードウエアとして耳の役割を果たすのは「マイク」です(図1)。マイクは音を収集し、電気信号に変換してくれる装置(デバイス)です。ロボットの目として、「ロジクール C270m」などマイク付きのWebカメラを使っていれば、そのマイクを耳として使えます。

    最終回 音声リモコンでロボットをコントロールしよう(1)
    zero2one-codeclub
    zero2one-codeclub 2015/09/28
    ラズパイで作ろう! ゼロから学ぶロボット製作教室 - 最終回 音声リモコンでロボットをコントロールしよう(
  • 第5回 ロボットの目をWebカメラで実現(5)

    RasRoboコントローラーからロボットにおしゃべりさせるため、WebIOPiの機能の拡張する手順の続きです。前回は次の四つの手順のうち(1)を実践しました。 (1)拡張機能を実現するスクリプト(プログラム)を作る (2)WebIOPiの設定ファイルに、どのスクリプトを利用するのか指定する (3)WebIOPiを再起動する (4)ブラウザー上に、おしゃべりさせるためのインタフェースを作る 以下、(2)以降の手順を実践していきましょう。 (2)WebIOPiの設定ファイルに、どのスクリプトを利用するのか指定する WebIOPiの設定ファイルは「/etc/webiopi/config」です。このファイルを次のコマンドで開き、「myscript」の部分を見つけたら、図19に示す赤い部分を追加して保存します。これで、(1)で作成した拡張スクリプトファイルをWebIOPiの起動時に読み込んでくれます

    第5回 ロボットの目をWebカメラで実現(5)
  • 第5回 ロボットの目をWebカメラで実現(4)

    Open JTalkにデフォルトでインストールされているのは男性の声ですが、音声データを追加すれば女性の声に変えることもできます。「MMDAgent」が提供する「メイちゃん」の音声データを使わせてもらいましょう(図15)。 下記のコマンドを実行してください(MMDAgentが提供する「Example」はVer.1.44が最新ですがここではこれは使えません)。 $ wget http://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.3.1/MMDAgent_Example-1.3.1.zip $ unzip MMDAgent_Example-1.3.1.zip $ sudo cp -R MMDAgent_Example-1.3.1/Voice/* /usr/share/hts-voic

    第5回 ロボットの目をWebカメラで実現(4)
  • 第5回 ロボットの目をWebカメラで実現(3)

    ロボットにおしゃべりさせるために必要なハードウエアはスピーカーです。スピーカーには「アクティブスピーカー」と「パッシブスピーカー」の2種類があるので注意してください(図10)。 アクティブスピーカーはアンプという増幅器が付いているので、単体で音を大きくできます。一方のパッシブスピーカーは外部のアンプに付けて使うことを前提にしているので、アンプなしでは大きな音を出せません。下手すると小さい音すら出ないでしょう。 アクティブスピーカーではアンプを動かすための電源を、USBケーブルや電池などから供給しています。ですから、電池付きのスピーカーであればアクティブスピーカーです。 ここでは、Amazonで購入した「アンプリファイドプラグインスピーカー VRS203BKブラック 2184ai」(2015年8月6日時点で1691円)を使います(図11)。延長ケーブルも忘れずに購入しておいてください(図12

    第5回 ロボットの目をWebカメラで実現(3)
  • 第5回 ロボットの目をWebカメラで実現(2)

    続いて、Webカメラから送られてくる映像を図6のようにRasRoboコントローラーへ埋め込んでみましょう。とても簡単に実現できます。 RasRoboコントローラーのHTMLファイルは「rasrobo.html」ですが、これは「/usr/share/webiopi/htdocs」というディレクトリー(フォルダー)の下に置いてあります。下記のコマンドでnanoを起動して編集してください。 <body> <p>ボタンを押すとRasRoboが動くよ!</p> <button id="left_forward" type="button" onClick="left_forward()">左前</button> <button id="forward" type="button" onClick="forward()">前進</button> <button id="right_forward" t

    第5回 ロボットの目をWebカメラで実現(2)
  • 第5回 ロボットの目をWebカメラで実現(1)

    Webカメラは「Logicool HD Webcam C270m」を使います(図2)。連載の最後で「耳」を作るとき、このWebカメラに付いているマイクを使えるので一石二鳥です。ほかのWebカメラでもラズベリーパイで利用できるものは多数ありますが、購入前に、それが当に使えるかどうかをほかの書籍やインターネットで確認することをお勧めします。 ラズベリーパイ専用のカメラモジュール(図3)はコンパクトでよいのですが、少しばかり値段が高い(3500円~4000円)ため、ここでは利用しません。 Webカメラの画像をブラウザーで見られるようにしよう Webカメラから送られてくる映像をブラウザー経由で見られるようにしましょう。「ImageMagick」と「MJPG-streamer」というソフトウエアを使います。 ラズベリーパイで直接LXTerminalを起動するか、PCのターミナルからラズベリーパイに

    第5回 ロボットの目をWebカメラで実現(1)
  • 第4回 ブラウザーでロボット駆動!(5)

    つまり図50のようなブラウザー上のコントロール画面を使ってロボットをコントロールできれば理想的です。 ブラウザー上に情報を表示するには、HTMLの書き方のルールに従う必要があります。ルールそのものは決して難しいものではありません。ここでは、ロボットのコントローラーを作るために必要最低限のルールだけを説明します。 HTML初体験! HTMLは文書の中身(内容)だけではなく、文書の構造(骨格)や表示方法(見せ方)も記述できる言語です。ここでいう文書の構造とは、「この部分が見出しで、この部分は段落」といったような、文書の構造を明確に示す情報のことです。HTMLでは、この情報を「タグ」と呼ばれる目印を使って記述します。 「<ooo>タグ」は「<ooo>」という形式で始まり「</ooo>」で終わるのが基です(図51)。また、<ooo>を開きタグ、</ooo>を閉じタグと呼びます(この二つがペアなと

    第4回 ブラウザーでロボット駆動!(5)
  • 第4回 ブラウザーでロボット駆動!(3)

    ロボットの足であるモーターの動きをコントロールするのは、ロボットの頭脳であるラズベリーパイです。当然のことながら、足(モーター)と頭脳(ラズベリーパイ)をつなぐには物理的な配線が必要になります。もうお気付きだと思いますが、Lチカ(第2回参照)で学んだように、GPIOを通せば頭脳(ラズベリーパイ)と外部の世界をつなげます。 しかしながら、ロボットの足として使うモーターの制御方法はLチカの場合とはちょっと違います。Lチカでは単純なスイッチのON/OFFでしたが、モーターは右に回したり、左に回したり、止めたりできなければなりません。モーターを回すための電源も供給する必要があります。 ラズベリーパイとモーターの間に入って、このようなモーター制御を簡単に実現してくれるのが「モータードライバーIC」です(図29)。

    第4回 ブラウザーでロボット駆動!(3)
  • 第4回 ブラウザーでロボット駆動!(2)

    ギヤボックスに続いて、「ユニバーサルプレート」の袋を開いたらプラスチック部品を切り出す作業をまず行います(図13)。 この作業には、ニッパーを使うと便利です(図14)。ニッパーは、針金や導線を切断するのにも役立つ道具ですので、工作道具として道具箱に一つ入れておくことをお勧めします(100円ショップでも購入できます)。

    第4回 ブラウザーでロボット駆動!(2)
  • 第4回 ブラウザーでロボット駆動!(1)

    *1 キャタピラーは米Caterpillar社のブランドですが、キットの説明文を基に、連載は走行ベルトのことをキャタピラーと呼びます。 ロボットを初めて作る人にとって、ロボットの身体の工作はビッグチャレンジです。ですから、この部分をできるだけ簡単に作れるように、タミヤから発売されている「楽しい工作シリーズ」の4点を使います。 (1)「TRACK & WHEEL SET」(No.100) キャタピラー、車輪、車軸のセット(図2)。 (2)「ユニバーサルプレート」(No.157) 車体を車軸や車輪に固定するための底板と固定部品(図3)。 (3)「ダブルギヤボックス」(No.168) 二つの車輪を独立して動かせるダブルギヤボックス。モーター2個付き(図4)。 (4)「ユニバーサル金具4セット」(No.164)

    第4回 ブラウザーでロボット駆動!(1)
  • 第3回 ロボットが独立行動できる環境を作る(5)

    ここまでの作業を通して気付いたと思いますが、ScratchのようなGUIアプリケーションを使わないのであれば、すべての作業を「LXTerminal」で行うことができます。これは、一般的に「ターミナル」と呼ばれているもので、コンピュータに直接働きかける窓口です。コンピュータに詳しくない人は「あの黒いウィンドウって何?」とまるで触れてはいけないもののように恐れてしまいますが、これを使いこなすことでコンピュータを楽にかつ自由に操ることができるようになるのです。 ターミナルが一つあるだけでほぼすべての作業ができるのですから、これをノートPCなどから使えれば便利です。それを可能にしてくれるのが「ssh」接続です(セキュアシェル、SSH)。使い方はとても簡単です。 Macからのssh接続 Macからsshを使ってラズベリーパイのターミナルに接続する方法を以下に説明します。まず、Finderで「アプリケ

    第3回 ロボットが独立行動できる環境を作る(5)
  • 第3回 ロボットが独立行動できる環境を作る(4)

    ここまでの作業でロボットを独立させる基礎はできました。ロボットが動き出したら、マウス、キーボード、モニターを外し、後はブラウザーで操作すればロボットを自由に動かすことができます。 しかし…。ロボットを動かし始めるときには、キーボードとマウス、モニターが必要なので、常に持ち歩く必要があります(図31)。この三つが不要になれば、ロボットは完全に独立し、いつでもどこにでも気軽に持ち歩けるようになるのでとても便利です。 しかし、モニターがなければ画面が見えませんし、キーボードやマウスを取り外してしまったら、ラズベリーパイを操作できなくなってしまいます。 何か良い方法はないものでしょうか? このような状況で役立つのが、VNC(Virtual Network Computing)と呼ばれる技術です。この技術を使うと、離れた場所にあるコンピュータのデスクトップ画面を手元のPCから操作できるようになります

    第3回 ロボットが独立行動できる環境を作る(4)
  • 第3回 ロボットが独立行動できる環境を作る(3)

    インストールして動き出したWebIOPiをもっと使いやすくしましょう。パスワードを外したり、分かりやすい名前でアクセスできるようにしたりします。 その1: WebIOPiを自動起動する・しない WebIOPiを起動(start)した後、ラズベリーパイの電源を一度切ってしまうと、次にラズベリーパイを起動したときにはWebIOPiは停止(stop)しています。その場合、もう一度LXTerminalを起動し、コマンド「sudo /etc/init.d/webiopi start」を打ち込んでWebIOPiを起動しなければなりません。常にWebIOPiを利用したいのであれば、ラズベリーパイを起動するたびに、この操作をするのは面倒です。 ラズベリーパイの起動時に「WebIOPiを自動起動する」ようにするには、LXTerminalを開いて次のコマンドを実行します(図22)。

    第3回 ロボットが独立行動できる環境を作る(3)
  • 第3回 ロボットが独立行動できる環境を作る(2)

    次に、ブラウザーを使ってGPIOをコントロールできるようにしましょう。GPIOをコントロールできるということは、GPIOとつながるLEDやモーターをコントロールできるということです。つまり、ロボットをコントロールできるようになります。 ここでは「WebIOPi」というソフトウエアを使います。これを使うと、ブラウザーから送られてくる指示を「WebIOPi」が受け取り、その指示通りにGPIOをコントロールしてくれます(図14)。 「WebIOPi」はオープンソースで開発されており、Pythonで書かれています(オープンソースとは、プログラムの中身も公開されており、ライセンスに従っていれば自由に利用したり配布したりできるソフトウエアのことです)。 STEP1:「WebIOPi」をインストールする 早速、「WebIOPi」をインストールしましょう。ここでは、執筆時点(2015年6月20日)で最新バ

    第3回 ロボットが独立行動できる環境を作る(2)
  • 第3回 ロボットが独立行動できる環境を作る(1)

    ラズベリーパイが電源ケーブルを通して家庭用のコンセントにつながっているとロボットは自由に動けません(図1)。また、キーボードやマウスを使ってロボットをコントロールしなければならない状態では、離れた場所から自由に動かせません。 離れた場所からロボットをコントロールして自由に動かせるようにするには、どうすればよいのでしょう? 外出先で携帯電話やスマートフォンを充電するときなどに利用する「モバイルバッテリー」を使って電源を供給すれば家庭用のコンセントにつなぐ必要はなくなります。また、Wi-FiでつながっているスマートフォンやPCから、ブラウザーを使ってGPIOを操作できればロボットをコントロールできる(LEDやモーターをコントロールできる)ので、キーボードやマウスも不要になるはずです。 この戦略で、ロボットを独立させることにしましょう! Wi-Fiでインターネットに接続しよう ラズベリーパイをイ

    第3回 ロボットが独立行動できる環境を作る(1)
    zero2one-codeclub
    zero2one-codeclub 2015/06/29
    ラズパイで作ろう! ゼロから学ぶロボット製作教室 - 第3回 ロボットが独立行動できる環境を作る
  • 第2回 ScratchでLEDを光らせる(4)

    続いて、LEDを点滅させる「Lチカ」を実現します。Lチカには、そのような動きになるようにコントロールするプログラムが必要です。Scratchを使って、このプログラムを作りましょう。いよいよ、Scratchで「Lチカ」に挑戦です! Scratch GPIOをインストール GPIOピンをコントロールするには、最初からインストールされているScratchではなく、「Scratch GPIO」というソフトウエアが必要になります。基的な使い方は第1回で紹介した通常のScratchと同じです。 Scratch GPIOの最新版のインストール方法はScratch GPIOのオフィシャルサイトにあります。執筆時点(2015年5月15日)の最新版は、このサイトのページ中央辺りにあるように「ScratchGPIO7」でした。より新しいものがある場合は、これから紹介する「コマンド」を、サイトを参考にして読み替

    第2回 ScratchでLEDを光らせる(4)
  • 第2回 ScratchでLEDを光らせる(3)

    LED(発光ダイオード) LEDは光を発する電子部品です(図12)。豆電球や白熱電球も光を発しますが、これらが電気を使って発生した熱によって発光するのに対し、LEDは電気エネルギーを直接光に変えているので、効率が良く、省電力を実現する照明部品としてさまざまな場所で利用されています。 (特徴1:極性)LEDの二つの足は接続する方向が決まっている 豆電球は2の足のどちらを+につないでも-につないでも大丈夫ですが、LEDは必ず足が長い方を電圧が高い方(+側)につながなければ光りません。このように接続する向きが決まっていることを「極性がある」といいます。足が長い方をアノード、短い方をカソードと呼びます(図13)。

    第2回 ScratchでLEDを光らせる(3)
  • 第2回 ScratchでLEDを光らせる(2)

    「Lチカ」とはプログラムでLEDをチカチカと点滅させることなので、これを実現するには、ハードウエアだけでなく、プログラムも作らなければなりません。そこでまず、LEDをずっとピカーと光らせる電子回路を作ることに挑戦してみましょう。「Lチカ」ではなく「Lピカー」です。LEDをずっと光らせるだけであれば、乾電池につないだ豆電球を光らせるのと同じですから、プログラムは不要です。 必要なのは、「電源(ラズベリーパイから供給)」「LED」「抵抗」「導線」の四つのみ。これらの電子部品を図6のように接続すれば「Lピカー回路」の完成です! 回路を組むのに必要な部材は、前回紹介したショップで購入できますが、正直のところ初心者のうちは、個々の部材を選ぶこと自体が大変です。そこで今回の連載で必要な部材一式をスイッチサイエンスにキットとして用意してもらいました。キットはこちらから購入できます。キットには、誤ってLE

    第2回 ScratchでLEDを光らせる(2)