2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

カテゴリー

ブログパーツ

無料ブログはココログ

« 2012年8月 | トップページ | 2012年10月 »

2012年9月

2012年9月30日 (日)

ロボット開発プラットフォームについて

移動ロボットのためのソフトウェアパッケージとしては、前回紹介したKARTOしか見つかっていません。もちろん他にもあるにはあるのでしょうが、どうも引っかからないですね。

一方、ロボットプラットフォームとかロボットOSとかいうカテゴリに属するものは結構あるようです。これらはロボットに必要なソフトウェアをモジュール群として定義して、その実行や停止、モジュール、ロボットシミュレータ、実ロボットなどの間でのデータの受け渡しを制御します。

調べた範囲では、現在下記のものが入手可能です。

Microsoft Robotics Developer Studio
ROS
LabVIEW
OpenRTM-aist

LabVIEWだけちょっと仲間はずれの感はありますが、そのほかはいずれも有名どころでしょう。LabVIEWはあまりロボットという感じはしませんが、LEGO Mindstormsのパソコン環境のベースだったり、一時ROBO ONEのカンファレンスで取り上げられたりと、結構自律ロボットにも使われているようです。

現時点ではあまり細かく調べたわけではないのですが、いずれのプラットフォームに対しても言えそうなことは、「対応する実ロボットを使って、比較的大仕掛けなロボットを製作するには向いていそう」という感じがします。

Microsoft Robotics Developer Studio(RDS)なんかはLEGOにも対応していて、学生さんの入門用にもよさそうですが、実力を発揮するのは、移動+作業+対話などどいった複数のロボット的機能を組み合わせて利用する場合のように思います。
たとえばOpenRTM-aistではOpen-HRIという対話ロボット構築のためのモジュール群があり、容易に自作のロボットに対話機能を持たせることができるようです。

とにかく、どれを選択するとしても自作ロボットとのインターフェィスモジュールは自力で作らなければなりません。あるいは、「対応ロボット」、つまりインターフェィスモジュールが提供されている市販ロボットを使うかですね。

さて、僕はどれを選ぶべきでしょう? シェーキーの次の企画は、「ちょっと変わったホームロボット」で技術基盤(大げさですが)はシェーキーやカメロで開発したリモートブレインのノウハウです。
実際のところ、ブレインになるコンピュータのOSが選択の主要因になるように思います。これがWindowsなら本家RDS、Linux系ならROSかOpenRTM(ガラパゴス化するかもしれませんが)といったところが順当だと思います。このままいくとWindows7になりそうですから、もしプラットフォームを使うならRDSがよさそうです。Kinectもすんなり使えるようですし。また、対応実ロボットにRoombaの一世代前のモデルがあるので、現行の500シリーズも使えるのではという読みもあります。これなら比較的安価にしっかりした実ロボットも手に入ります。
うーん、でも実際のところRDSってどの程度使われているんでしょうか? ROSはかなり検索に引っかかるんですが・・

いずれにせよ、もうちょっと調べる必要がありそうですね。

2012年9月23日 (日)

移動ロボットの出来合いソフトウェアを検討する(その2)

まず、移動ロボットの老舗、SRIの製品です。KARTO(カート)というソフトで、こんな立派なパッケージに入ってます。

Kartoboxsdk

まあ、実際にパッケージに入っているかどうかは疑問ですが、法人向けに販売しているソフトです。ホームページには詳細な情報があります。マッピングや自己位置推定、経路計画などのライブラリを集めたSDKとして提供され、基本的な移動ロボットのアレコレが一気に手に入るという寸法です。

肝心の性能ですが、このページにデモがあります。最初のKARTOの有無によるマッピングのデモを見る限りスバラシイですね。結果だけを転載するとこんな感じです。

Mapping

同じ建物を、左がKARTOなし右がありでマッピングした結果です。右は廊下の構造がきちんと出ています。全ての場合でこんなにうまくいくのかどうかはともかく、つかみは十分ですね。

数年前の国際ロボット展で、SRIインターナショナルの人に聞いたところ、オドメトリとレーザーレンジファインダを備えたロボットなら応用可能ということでした。ちなみにお値段は「50万円くらい」ということでした。このライブラリを使った商品のライセンス料は別のようですが、仕事で使ってみるにはリーズナブルです。ホビー用としては論外ですけど。

ただし、マッピングとループ検出の部分は無償で使えるようで、オープン版がダウンロードできます。これが使えるだけでも万々歳ですね。オープン版を直接ダウンロードも出来るようですが、商用版の1ヶ月トライアルが出来るので、これをダウンロードしたほうがよいと思います。サンプルコードが多いので参考になります。もちろん、オープン版も入っています。

ダウンロードには勤務先のメールアドレスが必要ですが… これから起業するかもですからプライベートアドレスでも道義上の問題はないでしょう。このアドレスにそのときから一ヶ月間有効なキーファイルの情報が送られてきます。期限をすぎるとビルドできなくなるようですが、ソースコードは開けますから勉強には差し支えありません。実際のところ僕は一度もビルドしませんでした。

マッピング関数のサンプルコードを見た限りでは、オドメトリで算出した現在位置と姿勢、それにレーザーレンジファインダで測定した周囲のレーダーマップを与えると、地図構造体を更新するようになっているようで、使い勝手はよさそうですね。

2012年9月15日 (土)

移動ロボットの出来合いソフトウェアを検討する(その1)

その昔、ラジオコントロール模型はアマチュア無線の免許が無いと出来ない時代がありました。無許可で出せるのは微弱な電波だけで、模型飛行機のように遠距離から操縦しなければならないものは50MHz帯のアマチュアバンドを使っていたためです。その時代、ラジコンの送受信機やサーボモーター(といっても現在のものとはずいぶん異なりますが)は非常に高価な外国製で、やむなく自作していたマニアも多かったそうです。

昭和32年、27MHz帯などの電波がラジコンやトランシーバー用として認可されると、次第にメーカー製のラジコン装置が出回るようになります。免許がなくともラジコンの利用ができるようになったおかげで、それまで指をくわえていた潜在ユーザーがわっとばかりに顕在化し、マーケットが形成されるようになったからです。ラジコンは少しばかりの(それでも子供には高値の花でしたが)お金を出せば誰でも楽しめる遊びになったのです。

こうなるとラジコン装置を手作りするのは時代おくれです。ジャンク箱から部品を拾い集めて、安上がりに装置を手作りしようとしても、メーカー製の立派な装置には性能的に追いつけなく、ラジコン装置の自作派は、やがて姿を消すことになります。

同じようなことが、ソフトウェアでも起っています。僕が初めてプログラムに触れた70年代初頭、マイコンはまだ4004が出始めの頃で簡単には手に入らず、日本のコンピュータホビーストは独自のアーキテクチャのコンピュータをTTLで製作していました。市販のミニコンは数百万もするしそれなりに場所も食うしで当然買えませんからね。ソフトどころかコンピュータそれ自体を一から作らなければいけなかったのです。トラ技に発表されたTTLでの電卓プロジェクト「DENTAC」やミニミニプログラマブルコンピュータ「ATOM-8」なんかもそうですね。

ちなみに、これがそのころ僕が作ったコンピュータ「SARI」です。バラックが動き出したのが1973年、写真は翌74年にI/O機能を追加してケースに組み込んだ「Mk1」モデルです。

Img_0074  Img_0077

中学生のころから24bitアーキテクチャで設計していたものを、「ATOM-8」の影響で8bit化し、さらに制御回路を真似して実現にこぎ着けたものです。中坊の設計ですから基礎知識が無いくせに夢満載、特に制御回路については、行き当たりばったりの非同期シーケンスで設計していたものですから、「ATOM-8」に出会わなければ実現できなかったでしょう。開発した富崎新先生は、僕にとってはジョブス以上の存在です。

これから数年を待たずしてマイコンの時代に。誰が作っても同じ性能ですから、ハードは作るより完成基板を買う時代になり、さらに数年でマイコンでもミニコン同様、BASICやFORTRANを紙テープで買う時代がきます。作るより格段に楽だし、一定の性能も担保しているからです。
やがてOSが標準化され、定番アプリケーションが一般化してくると、ソフトウェアは買って使うものという概念が確立していくのですね。

アプリケーションとしては極めてニッチな知能ロボットの制御ソフトはどうでしょう。

シェーキーのプロジェクトでは、移動しつつ周囲の地図を作成するプログラムを自作しました。(この辺のことはこちらの投稿を参照してください。)これは移動ロボットとしては基本的な機能です。ロボットのおかれた環境の大域的な地図が作成できれば、任意の場所への移動計画を作成することが出来ます。これは、移動するロボットには必要不可欠なソフトだと思います。
ただし、シェーキーで試した地図の作成機能は原理に忠実で単純なもので、本来あるべき外来ノイズ(センサやオドメトリの誤差)に対するロバスト性は担保できていません。つまり、実用には問題ありということです。

実用化するにはさらに相当の努力と時間を投下しなければいけません。ここは市販ソフトがあるなら使いたいところです。少なくとも欧米では軍需ロボットは実用化していますから、このあたりのスピンアウト商品があってもおかしくないですよね。

次回以降、この辺の検討をしていきたいと思います。

2012年9月10日 (月)

Common Lispも導入する

おつぎは Lisp導入です。
参考書はこれ。パッケージはLispBoxです。展開して設定済みのEmacsを起動するだけなのでお手軽です。また、Macでも使えるところも好感がもてますね。

Dscn2309

Lispはずいぶん昔にちょっとかじったことがあるのですが、今回はきちんとしたアプリケーション構築のノウハウを習得します。当面の目標はシェーキーの制御です。

なぜLispなのか、現時点ではそれほどはっきりした理由はありませんが、判断のポイントは次の二つです。

一つ目はLispが現役の人工知能プラットフォームであることです。おなじみ元祖SharkeyもLispで動いていた関係からか、比較的最近までSRIのロボットたちにはLispが使われることが多かったようです。最近は処理系の選択肢も多くなり、Lispでなければという風潮でも無いようですが、研究成果の積み上げを重視する大学の研究室ではしっかり活躍しているようです。

1995年くらいに、ロドニー・ブルックスの昆虫型ロボット、Genghis(ゲンギス)の市販版に触れる機会がありまして、これにLispが使われていたのを覚えています。
これが市販版Ganghis IIです。他の機械に囲まれているのでちょっと見づらいですが。

Rimg0110

MacのCommonLispでロボットのモデルを製作し、Genghis IIにシリアルポートから送り込むようになっています。往時はサブサンプションアーキテクチャもLispで構築されていたのですね。
これが付属のフロッピーです。IS Robotics社となってますが、これがiRobotの前身なんでしょうか?

Dscn2320

閑話休題。ちょっと話が脱線しました。

Lispをやってみようと思った二つ目のポイントは、「楽しい」ということです。対話しながらコンピュータを教育していくという感じなので、「組み立てあげる」感じの普通のプログラミングとはまた違った楽しみがあります。「人工知能」のイメージに近いですね。

また、プログラムの自動生成がしやすいという特徴も人工知能っぽいですね。そもそもノイマンのプログラム内蔵アーキテクチャは、プログラムもデータも同じメモリも持つため、コンピュータが自分のプログラムを作りだすことを可能としています。実際のところ、自分のコードを自分で改変するようなソフトは、保守性が悪いので実用にはなりません。でも、なんか楽しそうではありますね。プライベートなプロジェクトなら、ぜひ挑戦してみたいものです。

ともあれ、まずはLispでシェーキーとの通信を試したいと思います。

2012年9月 8日 (土)

Windows7も導入する

前回OpenCVの導入に手こずったことから、Windows環境の近代化のためにAmazonでWindows 7を買ってしまいました。
早速、旧Vistaが入っていた230GBのハードディスクに導入しました。(今思うとVistaってなんだったんでしょう?)
今使っているPCケースは、写真のようにハードディスクを前面から取り替えられるので、通常は今まで通りXPを使い、気が向いたら7のハードディスクと取り替えようという訳ですが… 古いシステムに未練たらたらで潔くないですねえ。7はMacOSのように、OS以外のファイルを残したままアップデートできるので、思い切ってXPの入ってるほうのハードディスクを7にアップデートするという手もありますが、いままで使っていたソフトが動かなくなったりすると面倒ですからね。

Dscn2319

当面、7での開発環境の構築をしつつ、開発作業はXPで行うことになりそうです。

7を導入したかったもう一つの理由はKinectです。OpenCV2の本にも実施例がありますが、デプス情報と画像処理を組み合わせると、いろいろと面白いことが出来そうですね。

2012年9月 6日 (木)

OpenCVをWindows XPとVC++2010で使うには

シェーキーが一段落して、このところハード・ソフトとも工作はお休みです。
これからしばらくは、ロボットがらみのパソコンソフト周りを見ていきたいと思います。

まずはおなじみのOpenCVです。これはたくさんの情報がありますから、僕の説明などは必要ないですね、今回の参考書はこの2冊です。

Dscn2318

下の方がOpenCV1の詳細な解説本で、5年ほど前に購入したもの、上のが同じ著作グループによるOpenCV2対応版です。単なる1の改訂版ではなく、現代的な実施例などが盛り込まれた、全く別の本という感じですから、両方持っていた方がよさそうです。

この本やOpenCV.jpのサンプルコードを試しながら、使い勝手を確認しています。短いコードでいろいろなことが出来るので、なかなか面白いですね。もっと早く着手すればよかったと思います。手遅れですが。

ただ、導入に際しちょっと困ったことがあったので、皆さんの参考のために投稿しておきます。

僕の開発用のマシンはいまだにWindows XPを使っています。今回はこれにOpenCV2.3とVC++2010を導入しました。
写真の本には導入方法が懇切丁寧に記載されているので、作業は実にスムーズでしたが、サンプルコードを試していくうちに、いくつか「初期化に失敗」するものが出てきました。顔認識もその一つ。最初のうちは、まあそういうこともあるわなと思ってそれほど気にしなかったのですが、動かないものはどうにも動かない、さすがにこれは変だということで本格的に調べてみました。

…まあ、いろいろあって… (何時間もかかりましたが…)顔認識サンプルが無事に動くようになりました。

本では、VC++2010を使っている場合、ビルド済みのライブラリへのパスをOpenCV2.3¥build¥x86¥vc10¥binへ通すようになっていますが、どうもこれはOSがWindows7の場合のようで、XPではOpenCV2.3¥build¥x86¥vc9¥binと、VC++2008の場合のパスを設定しないとだめのようです。うちのパソコンだけかなと思って、同じくXPを使っている会社のパソコンで試したところ同じ結果でした。この構成のパソコンではそうしないとだめなようです。
その他は本の解説通りで動いています。

同じシステム構成で顔認識サンプルなどの初期化エラーに悩まされている方、試してみる価値はあると思います。

それから、USBカメラはこんなものを使っています。

Dscn2316

これもだいぶ前にアメリカの通販サイトから購入したものです。ラジコンサーボを使ったパン/チルト雲台付き、USB接続の仮想シリアルポートでパソコンから動かすことが出来ます。


« 2012年8月 | トップページ | 2012年10月 »