Slackを始めてみた

会話ロボットを作っていて、対話AIを組み込んだりしていた結果、botに興味が湧いたので、Slackというアプリに寄り道してみることにしました。

Slackでできること

SNS

・グループ管理

・公開APIによる外部サービス連携

とくに3つめの外部連携が最大の特徴で、世界中の個人、法人がtwittergoogle analyticsなどとSlackをつないでチャットボットの形で対話型で各サービスを操作てきるプラグインを公開しています。

例えば自分のブログにgoogle analyticsを設定して、定期的に統計レポートをSlackに発言するといった使い方もできます。

 

会社のメンバーだけのグループを作って、仕事に関するキーワードを定期的にTwitterで検索して結果をslackに自動発言するbotをメンバーとして登録するなんてこともできます。

特に操作性がコンソールコマンドをたたくようにbotと対話できるところが世界中のプログラマーの皆さんに人気のようです。

本当にすごい規模と速度てプラグインがどんどん開発され公開されているのでプラットフォームとしての地位を確立しつつあるようです。

とりあえず一人でいくつかbot運用を試してみてからコミュニティへの適用を試してみようと思います。

 

ラズパイ日記 ラズたろうくん1号

探索くん1号が完成したので新たなプロジェクト、会話ロボット、ラズたろうくん1号の開発を開始しました。

まずはラズたろうくん1号のゴールです。

 

リビングに設置して子供の声に反応して発音する(対話する)

 

認識の精度や、対話が成り立っているかはまずは問わないことにしました。

先ずインターフェースを確立し、プロトタイピングで品質を上げていきたいと思います。

ざっくり必要な機能

・録音

音声認識

・対話

音声合成

 

追加装備

・USBマイク

Bluetoothスピーカー

 

簡易な対話ロボは思いのほか早く完成しました。

まずマイクセットアップします。ラズパイのオーディオインターフェースALSAという管理システムが組み込まれているので、そいつの設定でマイクの優先度を1番にあげます。

マイクテスト。wavファイルができて自分の声が聞こえて成功。

 

次に出力スピーカーです。最初はHDMIでテレビに繋いでいるのでそこから音が出ればいいやと考えていたのですが、HDMIは音声再生時に最初の数秒が出力されないことが判明。音楽かけ流すならまだしも、数秒の音声データを何度もやり取りする会話システムにとっては致命的でした。

よってBluetoothスピーカーに変更。Bluetooth機器についてはPulseAudioというソフトウェアを入れるのが主流なようで早速インストールBluetoothのペアリング設定して、無事wavが途絶えることなく聞こえました。

次は本体Pythonプログラム。

色々なライブラリが公開されていますが、僕が選んだのは

音声認識DOCOMO音声認識API

対話AI:DOCOMO対話API

音声合成:AquesTalk

です。

プログラム実行 → 録音秒数を打ち込む → 話しかける → 音声認識APIでテキスト変換 → 対話AIで応答テキスト取得 → 音声合成で応答テキストを音声wavに変換 → スピーカーから発声

という流れです。

あっさり成功しました。ラズたろうくんがしゃべった!感動です。

こんなシステムが全部オープンソースでかんたんに構築できるようになったとは、すごい時代になったものですね。

 

京商とドローンとジェットエンジン

ニュースで田宮模型京商を経て、ロボット制作会社を立ち上げた方の記事を見て、田宮模型京商について企業研究してみました。

田宮模型については別記事にて書きます。

 

京商、聞き慣れない会社名でしたがググったら一気に記憶が蘇ってきました。

幼い頃に触ったラジコン、そういえばそんな会社名がついていたっけ。

何十年もラジコンを作り続けた京商

ここ十年ぐらいはエンジンカーでも多くの事業をこなしています。基本的には人気のラジコンを1/2とかにスケールアップしてエンジンカーにするという発想がすき者感があっていいですね。

そして2016年からはガラッとテイストを変えて新機軸、競技用高速ドローンを発売しています。そうです。ラジコン屋さんにとっては今のIOTトレンドは満を持しての本領発揮分野だと思います。

主にホビーという限られた市場規模だったラジコン産業がドローンをはじめとするロボットブームによって一大市場に様変わりします。パラダイムシフトというやつです。

是非新興のスタートアップに負けない付加価値を発揮して欲しいですね。

そんな話を職場で話していたところ、面白いドローンの話になりました。

なんとジェットエンジン搭載で時速600kmを超えるドローンがあると

 

http://picworld.e-monster.jp/2016/10/29/凄い!ジェットエンジンを搭載したドローン登場/

 

いやー、斜め上を行くぶっとんだ発想です。気になってこの会社を調べてみました。するとこれまた非常に面白い。スタンダードムーブ社、別記事にてまとめます。

 

 

 

 

 

ラズパイ日記 外部からのWebIOPi

探索くん1号のプログラムに、カメラ台サーボモーターコントロールシステムを合体させます。

python

html

javascript

stylesheet

それぞれに統合を行います。

結果ブラウザには探索くんコントローラとストリーミング撮影画面とともにカメラ台サーボを操作するスライダーを出すことに成功。ところがスライダー操作してもカメラ台サーボがうまく動きません。

 

この方のブログでPython ソースコードをみて、はたと気が付きました。

http://deviceplus.jp/hobby/raspberrypi_entry_032/

 

で、デコレータだ!

WebIOPiからコールバック関数でつなぐマクロのデコレータ宣言

@webiopi.macro

はマクロ関数一つ一つにつけなければいけない。

というわけでスライダーからサーボを動かすマクロにもデコレータしてあげました。

そしせついに、レスポンス等チューニングにはまだ改善の余地があるものの、

可動カメラ付き自走式サーバー

「探索くん1号」

完成です!


f:id:tasogarex:20170217081503j:image


f:id:tasogarex:20170217081516j:image

うーんすごい配線量だ。

ユニバーサル基板や外装、配置を工夫して美しいロボットへトランスォームさせたいですね。

探索くん2号の野望を抱きつつ、探索くん1号プロジェクトはひとまず完了。

次は会話型ロボットに着手しようと思います。

 

 

 

ラズパイ日記 ロボットクリエイターとデザイナー

ラズベリーパイでロボットを作り始めてから自分の中である変化が置きました。

実は僕は絵と字が大の苦手で、生まれてこの方、美術からは距離を置いてきましたのですが、ここにきて猛烈にデザイン(造形)なる領域への興味が湧いてきたのです。

 

以前、EVOLTA、ロビ、RoBoHoNで有名なロボットクリエイターの高橋智隆さんの講演をたまたま聴く機会があったのですが、高橋さんは自らををロボットの開発者というよりはロボットデザイナーに近いとおっしゃっていました。

パーツの材質や整合性や色合い、人間味と親近感を覚えるロボットとしての外観を徹底的にお一人で追求していると。

当時は失礼ながら変わった方だなーと思ってきいていましたが、今になってすごく気持ちがわかる気がします。

ロボットに苦労して想定していた機能を実装し終わってみると、なんだか無機物に魂を込めたら動き出したような気になります。

しかし見た目の方は配線だらけでパーツや基盤も剥き出し。


f:id:tasogarex:20170215211910j:image

これはこれで良さはあるのですが、デバイス配置や外装を最適化してもっとスタリッシュにしたい欲が湧いてきます。

で、色々考えるわけです。

配線をユニバーサル基板に貼り付けたらこれだけ小さくなるとか、ラズパイを縦にしてみるかとか。キャタピラにカバーをつけたら。デバイスを内包させて、人形ロボットにする場合、カメラ部分はジオン系モビルスーツが参考になりそうとか。

そんなことを考えながら、ロビやRoBoHoNを見てみると、なんて美しいデザインなんだろうと驚愕します。


f:id:tasogarex:20170215222354j:image

まずこのコンパクトさ!かつスリムな胴体なのに10軸以上のサーボモーターを搭載してるなんて。とんでもなく緻密なデザインです。

 

かのMHマイスター、レディオス・ソープさんも、おっしゃっています。

「可動ラインが見えない。物凄い耐久性の証だ」

究極のデザインには機能美も宿るのです。

 

それはさておき、いざ頭に描いたデザインを実現するためには、外装をつくらなければなりません。

まずはじめに浮かんだのはプラモデルでしたが最適なサイズや、形状の組み合わせを市販キットから探し求めるのは現実的ではありません。

じゃあ型取りからか。これも1から着手するには果てしないです。

そこで閃きました!

ピコーン!無双三段

ではなく、「3Dプリンター」だ!

そう、世の中を賑わせ早数年経ちますが、まるで僕が造形に目覚めるのを待っていたかのように3Dプリンターが一般人でも実用レベルになってきているではありませんか。

キタコレ!ということ我が探索くんの2号化プロジェクトは3Dプリンターを使ってスタイリッシュなトランスフォームを目指していきたいと思います。

 

 

 

 

 

 

 

 

 

 

 

ラズパイ日記 外部からのWebIOPi

今回は外部LTE接続におけるWebIOPiとmjpeg-streamerの設定チェーンアップです。

 

まずはカメラから

フレームレート:15から5に

解像度:640*480を320*240に

jpeg画質:50のまま変更せず

 

結果かなりコマ落ちは改善されフリーズもしなくなりました。

 

それでも5fpsに対し1秒に1回程度の画像更新なのでまだたくさんコマ落ちしている模様。2fpsぐらいでいいかも

解像度は5.5inchのスマホ画面でぎりぎりかなといった画質なのでこの辺で良さそうです。

 

割りと改善したのでゆるドメしていたカメラとカメラ台を本格設置することにしました。

カメラ台は2軸サーボモーターで左右上下に旋回てきるよう設計、

この結果カメラモジュールが上下逆さまになったので設定に以下を追加します。

垂直反転と水平反転をTrue

ところがこれをやったところ処理が遅くなってしまった。反転のせいか、サーボが2つ追加接続された影響かは不明だがサーボのプログラムはまだインプリ前の事象でした。

 

さてそのサーボプログラムですが、

軽くはまりました。

サーボ操作プログラムをWebiopiのconfigに設定したところWebiopiが起動しなくなったのです。

原因はWiringpiのインポートエラーによるものでした。

原因にたどり着くために苦戦しましたが以下の方のブログで救われました。ありがとうございます。

http://takashin10mura.blogspot.jp/2016/06/wiringpipython.html?m=1

 webiopiにはデバッグモードがあったんてすね。便利。これによってエラーを特定できたわけです。

Wiringpiの再インストールも一癖あり、Unicodeエラーをシュートしないといけませんでしたがなんとかなりました。

無事ブラウザから探索くんのカメラ台を上下左右に操作できました。

次回はいよいよ探索くん1号最終章。

自走プログラムとカメラ台プログラムを合体させます。

 

ラズパイ日記 探索くん1号 外部からのWebIOPi

ようやく外部からインターネット経由で探索くん1号を操作することに成功。

カメラによるストリーミング撮影も同時に起動できている。

前回の予定手順から少し変更してここまでたどり着きました。

 

1. ラズパイのipアドレスDHCPから固定ipに変更する(ルーターにて固定DHCPを設定)

2. ルーターでポート開放する

 8000: WebIOPi

 9000: jmpeg-streamer

3. ルーターにてポートマッピングを設定しルーター宛ポート番号8000/9000のアクセスを上記ラズパイのローカルip8000/9000にマッピング設定

4. 外部からグローバルipにアクセスする

 

振り返ってみると大したことをやっていないのですが苦労しました。原因は大きく3つ。

・作業前の自宅ネットワーク設定が全然把握できていなかった

・ポートマッピングの仕様と設定方法の習得に時間がかかった

DDNSと固定グローバルIPの必要有無が判断できなかった

 

と色々ありましたが動いたので苦労も報われました。

というのも束の間、新たな課題です。

 

外部からのLTE経由だと操作もカメラも反応がかなり遅い。

コントローラ

LANのときは上下左右ボタンは押している間だけ探索くんが動きたのですが、外部からのLTEだと 押したら2秒遅れで動き出ししかも時々止まらなくなる。

カメラ

コマ落ち、遅延、しまいには更新されない

 

というわけで、通信スループットに適した各種設定のチューンアップが必要となりました。