2017年6月
        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  

カテゴリー

ブログパーツ

無料ブログはココログ

管理人のページ

技術系よもやま話

2016年12月 3日 (土)

生き物らしく動くロボットを作りたい

僕はもっぱら自分の好奇心の趣くままにロボットの研究をしています。興味の対象はその時々で変わりますし、僕は飽きっぽい方なので、やってることはバラバラです。

でも、漠然とした目標はあり、それは「ロボットと暮らしたい」ということです。
それを実現するためには色々な要素があります。自律性とか知能化もそうですが、もう少し感性的なこともあります。つまり、一緒に暮らしていて苦にならないという性能です。ざっくりしてますが、猫を飼っている経験からすると、「ふるまいが生き物らしく見えるロボット」というのはその解決法の一つかもしれません。たとえばこれはそれに対するアプローチの一つです。

サブサンプションで赤いボールを追いかけるだけのロボットですが、「早い」というだけで、生き物らしく、つまり何らかの知性を感じる動きになっているのではないかと思います。このように振る舞うロボットならば、ルンバのように機械的に(まさに機械ですから)動き回るロボットより、一緒に暮らしやすいのかもしれません。

こういうことを積み上げていけば、いつか一緒に暮らしても苦にならない、そんなロボットが生まれるかもしれませんね。

2015年7月 4日 (土)

ついに出た!日本語のROS入門書

とうとう待望の日本語のROS入門書が出ました。「ROSではじめるロボットプログラミング」です。

Dscn3054

簡潔にまとめられた本文は、僕のようなROSの落ちこぼれには、とても良く理解できます。そのぶん、この本で初めてROSに入門する人には、ちょっと舌足らずかもしれません。僕のブログで一回落ちこぼれておいた方が、理解しやすいのではないかと思います。

内容はシミュレータを使ったもので、実機がなくとも大丈夫。ROSのうまみでもある分散処理や、やってみたいけどちょっと面倒そうなPR2ロボットのシミュレータと、かなり興味ある内容満載です。

Dscn3056

Dscn3057

本当にお勧めできる本です。僕も新たなファイトがわいてきました。またROSを始めましょうか。

2015年5月 5日 (火)

ShakeyのプログラムをCoIDEに持ち込む

管理人のページ:

前回サーボのタイミングがずれていたShakeyの制御プログラムが、ようやくまともに動くようになりました。結果的にsystem_stm32f4xx.cでのPLLの設定を下記に変更しました。

#define PLL_M      25
#define PLL_N      336

もともとのプログラムはTrueSTUDIOで作成したもので、これだとこうなっているようです。TrueSTUDIOから乗り換えてタイマー周りの動作がおかしい場合は、これをチェックしてみるとよさそうです。外付けクリスタルが8MHzなのにPLL_Mの設定値がなんとなく変ですが、これで動くようにしてしまっているので、このままにします。

それから、プロジェクトファイルが消える件ですが、安定版としては最新の1.7.8をインストールしたところ、それ以来起こってません。念のため.coprojeの拡張子がつくファイルのコピーはまめに作ってはいますが、いまのところ出番は無いようです。

【後日追加】残念ながらプロジェクトファイルはやっぱり消えます。コピーを作っておくのが無難です。

2015年4月26日 (日)

STM32F4の開発環境をCoIDEにする

管理人のページ:

久しぶりの投稿です。本業が忙しく、このところすっかりご無沙汰してしまいました。
諸般の事情でシェーキーをまた動かすことになり、ついでにソフトを若干修正しようかということになりました。しかし苦労して構築した開発環境は、XPから7に乗り換えた際、面倒なので再構築していません。情報が古いこともあり、改めて再構築するのはどうも大変です。調べてみるとCoIDEというフリーの開発環境があり、これは比較的簡単にインストールできそうです。これを試してみることにします。

Dscn3029

こちらのサイトに従ってインストールは順調に済みました。versionは1.7.6でした。空のプロジェクトを作ってソースコードを一式持ってくればいいのですが、importで持って来れるのがリンクで、コードの実体が持ち込めないので、注意が必要です。

テストしてみるとどうも浮動小数点の変数をsprntfで配列に落とそうとすると、暴走することがあるようです。色々調べたところスタートアップでスタックの設定がおかしいようでした。下はIDEが生成するスタートアップファイルですが、これの145行が変更箇所です。CooCoxの質問サイトで見つけた情報ですが、今のところこれでよさそうです。

ただ、困ったことにサーボのPWMがだめでした。1500usのところが2500usくらいになってしまっています。シリアル通信などは正常ですが、delay時間などにも影響がでていることから、カウンタ用のクロックの設定がまずいようです。ただ、STM32F4のクロック周りは複雑で、現時点でこの問題は解決できていません。まあ、スタートアップあたりをじっくり調べればなんとかなると思いますが、現状にあわせてしまってもいいかなと思います。

それより困ったことは.coprojの拡張子がつくプロジェクトファイルが消えることがあることです。そうなるとプロジェクトを再構築するしか手がないようです。まあ、ソースファイルが消えたりすることはないので、面倒なだけでなんとかなるのですが。この現象はファイルメニューからExit処理をしないで、クローズボックスでIDEを落としたときに発生しやすいようです。起動前に.coprojファイルのコピーを作っておき、トラブルが発生したときに、差し替えるようにすれば、まあなんとかなるようですが。

2014年12月13日 (土)

Roomba create 2が欲しくなる

iRobotでは以前createという移動ロボットプラットフォームを販売していました。ROS入門に使われるturtlebotはもともとこれを使用していたのです。最近createの後継機にあたるcreate2が発売されたようです。こんな感じです。

Createoverview

見た目はroombaと変わりないですが、掃除機能はありません。また化粧パネルにコネクタの位置や、turtlebotを作る際のステムの穴位置などがプリントされ、改造しやすいようになっています。現地価格は約200USDとリーズナブルですね。すでにroombaを使っているのに欲しくなってしまいました。

こちらが本家のサイト。こちらはGIGAZINEの紹介記事です。コンテンポラリーなマイコンボードの使用も考えられているみたいですし、ダストボックス内がメカの収納スペースに使えるようになっていて、ちょっと興味ありますね。もっとも、ブツとしてはroomba500シリーズと一緒だから、中古を買って改造すれば、同じようなものが手に入りますが。

2014年10月28日 (火)

測距センサGP2Y0E03を試してみる(アナログ編)

管理人のページ:

いままでの測距センサGP2Y0A21YK同様、アナログで距離を読むのはとても簡単です。1ピンと5ピンに電源電圧(2.7〜5.5V)、3ピンをGND、距離に応じた電圧は2ピンに出ます。距離と電圧の関係はこのようになっています。

Dvg

距離対電圧が直線になっているので、普通の測距センサと比べて電圧から距離の計算は少し楽になります。また、線の途切れている部分、すなわち測定範囲外では0.1〜0.5V程の電圧が出ます。電圧がその範囲ならデータ無効と判断します。測定時間は最大40msとなっています。タイマー割り込みなどで40msごとにデータを読み出せば良い訳です。以前のセンサは50msくらいでしたから、ちょびっと高速になりました。

このセンサの消費電流は「平均」26mAとなってますが、GP2Y0A21YKのようにパルス状に比較的大きな電流が流れるようになっています。ただ、GP2Y0A21YKのパルス電流はこの投稿にあるように200mA以上ですが、新型は約100mA、データシートには150mA以上取れる電源を使用することとあります。小さな電源の場合は、電源ピン付近に10uF程度のコンデンサを入れた方が安心のようです。

Dscn2894

テストのため、カッターマット上にセンサとテスタを乗せ、このままズルズルと室内を引きずり回して、センサの反応を見ました。電源には単三電池2本を使いました。箱の脇に見えているのが、センサ本体、地上高30mmくらいにセットしました。

赤外線のパワーが小さいせいか、家具の角や、家具と家具との隙間などは、だいぶ近づかないと反応しないようです。30cmくらいまで近づいて、ようやく反応がでると言った感じです。また、昼間太陽光がガラス越しに差し込んでいる明るい室内では、平らな壁でも50cmでは反応しないということもありました。太陽光の赤外線成分がジャマをしているようです。それから、マンガ雑誌の表紙のように、平面でも派手な印刷がしてあるものは、場所により距離がばらつくようです。これは以前のセンサでもありましたが、もっと神経質な感じです。測定用の赤外スポットが小さいせいかも知れません。

それを別にすれば、以前のセンサ同様に使えます。ロボットの障害物感知センサとしては、30cmくらいまでが実用範囲かなと思います。小型のロボットなら十分です。

2014年10月23日 (木)

測距センサGP2Y0E03を試してみる(入門編)

管理人のページ:

今日は以前から気になっていた、シャープの測距センサ、GP2Y0E03(いつも思うんですが、名前が覚えにくい部品ですね)を試してみます。モノはこれです。兄貴分のGP2Y0A21YKと比べるとこんなにちいさい。これなら取り付け場所に悩むことも少なくなりそうです。

Dscn2886

次に動作電圧範囲が広くなりました。2.7~5.5Vなので、乾電池2本でも動作します。リポ電池を使った小型ガジェットにも安定に使えます。

それから、アナログ出力だけでなくI2Cにも対応しました。このため、測距データの読み出しや、アクティベーションや細々した測定パラメータの変更が可能になりました。これはアナログポートの倹約になりますし、電線を引き回しても測定結果にノイズが乗りにくくなると思います。デフォルトのアドレスは固定になっていますが、不揮発性メモリを書き換えることで変更可能です。16通りのアドレスを設定できるので、一つのI2Cバスで16個のセンサを使えます。

さらにデバイスをスリープに入れられるようになりました。これは外部からGPIO1というピンを0に落とすか、I2Cでスリープ命令を送って実行します。このときの消費電力は20uA程度になるので、電池動作機器にはありがたい機能です。もっとありがたいことは、この機能を使って、複数のセンサの読み込みタイミングを操作できることです。

今までの測距センサは電源を入れると赤外線を発射し続けるので、例えば、センサを二つ並べておくと、隣のセンサの赤外光に反応して、誤動作をすることがあります。このような場合は、FETスイッチで各個に電源をON/OFFするしかありませんでしたが、この機能を使えば、測定したいセンサだけをアクティブにすることで、簡単に対応することが出来ます。

もう一つ良くなった点は、近すぎる物体の検出結果が改良されたことです。いままでの測距センサだと、近い方のリミット距離より近い対象物は、ずっと遠くにあるかのように測定されてしまいました。このため、移動ロボットなどでは、センサの搭載位置を工夫して、ロボットが壁などに接触しても、センサと壁が十分離れているようにする必要がありました。このセンサは、近すぎたり遠すぎたりする反応のときは、アナログ出力の場合、極端に低い電圧が出るので、近づきすぎを判断することができます。

Dscn2892

このセンサは最小距離4cmで2.2V、最大距離50cmで0.55Vの電圧になりますが、その範囲外では、おおよそ0.1Vくらいの電圧になります。これは、ある距離をすぎると急激に電圧が落ちるので、範囲外になったことを容易に判別できます。これは障害物にぶつかるかもしれない移動ロボットのセンサとしては、使いやすい特性です。

ただし、以前のセンサより悪くなったと思われる点もあります。本の表紙のような大きくて平らな物体はよいのですが、ビールの缶のような円筒形で小さい物体は、距離の遠いところで、以前のセンサより読み取り数値がばらつくようです。

まず、簡単にアナログ出力で動作させてみます。→こちら

2014年2月 8日 (土)

3Dプリンタを導入

管理人のページ

どうも最近やる気がおきません。このブログではおなじみのスランプのようです。こういう時は散財がイチバンということで、3Dプリンタを導入することにしました。

Brog_img_1121

導入したのはAFINIAです。もっと安い機械もありますが、いろいろとしっかりしていそうということで、これを選びました。

うちの場合、リビングのデスクトップパソコンのとなりしか設置場所がなく、作動音と臭いが心配だったのですが、どちらも問題なしでした。作動音はNormalモードなら昔のプロッター程度、Fastだとちょっとジコジコしますが、まあそれほど気になりません。プラスチックを溶かすので嫌な臭いがするのでは、という心配も、奥さんとネコともどもに容認される程度です。

以前の職場で、15年ほど前、大型の3Dプリンタを導入したことがありました。液体の光硬化樹脂をレーザーで固めていくタイプで、大きな水槽に樹脂が満たしてあり、作動中の振動は、さざ波が立って精度が落ちるので厳禁という代物でした。数千万の費用がかかりましたが、ギアボックスのような複雑なパーツが、一発で作れるのには驚きました。NCだと、熟練した人が、工程をイロイロ工夫してやるような試作仕事が、シロート同然の設計者でもできてしまうのですから。

当時の扱いにくい機械を見る限り、それがパーソナル化するとは思えなかったのですが、21世紀の技術はすばらしいものです。ワークは小さいですが、なかなかの精度で部品が作れます。
試しに、以前作った連続回転サーボ用のホイールを作ってみました。下の写真の右側がそれです。

Brog_img_1125

タミヤのトラックタイヤのラバーを使い、サーボ軸に取り付けられるようにしたホイールです。オリジナルが、いかにもトラック然としたホイールなので、シンプルなデザインにしました。セレーションは切ってありません。樹脂のサーボ軸にしっくりはまる寸法にしてあります。

CADは無料の123Dを使いました。3DCADの経験があれば、簡単に使えると思います。
参考のため、123Dのファイルを公開します。読み込んでSTL変換すれば同じホイールが作れます。
「wheel2.123dx」をダウンロード


20万ナニガシの出費はイタいですが、なかなか良い気分転換になりました。スランプとはおさらばできたようです。

2012年10月21日 (日)

NEDO国際ロボットフォーラムに行ってきました(続き)

管理人のページ:よもやまばなし

前回の続き、稲葉先生の講演「急成長しているロボットソフトウェア」の感想です。例によって詳細な講演内容については、他の方の記事をご覧ください。

先生はROSをベースとした汎用作業ロボット、PR2でのプロジェクトの進め方について話されました。このロボットは、ウィローガレージが研究成果の公開を条件に、各国の研究チームに無償でレンタルしているもので、youtubeでもタオルをたたむ動画などで有名なロボットですね。
ROSやOpenCVなどのオープンソースを利用し、開発過程やデータをネット上で公開することで、広い意味でのクラウドベースの開発環境を実現しています。

東大での研究成果がこれです。サンドイッチを探してくるロボットです。とにかくスバラシイ、ロボット愛好家としてはぜひ一台欲しくなるようなロボットです。

先生は必要なソフトや知見がクラウドにあること、他の開発者とのディスカッションがネット上で出来ることなどが、これを非常な短期間で実現できた理由としてあげ、ROSベースの開発の有用性を指摘しました。また、日本製のロボットソフトモジュールの骨組み、Open-RTMとの連動プロジェクトについても触れ、ロボットソフトウェアが部品として用いられるような商品開発の時代が近づいているとしました。

それをふまえ、市場の「欲しいロボット」をいかに見つけるか、そしてそれをいかにして使ってもらうかが大切であると続けます。一つの例として、昨今発売が相次いでいるテレプレゼンスロボットを挙げられました。例えば、ダブルロボティックス社のこれです。

使ってもらうことが大事という提言には、以前の投稿にもあるように僕も大賛成ですが、「欲しいロボット」を見つけて商品化することには、先生ほど楽観的な見方は出来ませんでした。実際には「欲しいロボット」と「実現可能なロボット」には非常に大きなギャップがあるとおもいます。
テレプレゼンスロボット一つとっても、ビジネスマンとしての(ロボット愛好家ではなく!)僕が欲しいと思うのは、非常に簡単な操作で、先方の会議室にある試作品をひねくりまわしてあら探しをしたり、問題のある工場や工事現場に出かけていって、機械の後ろを覗き込んだり、接続部を確認したり、組み立てライン上の半製品を取り上げてチェックしたりできるようなものです。おそらくは海外出張を伴う仕事をしている人の多くもそう思うのではないでしょうか。ディスカッションに参加するだけなら、テレビ電話でたくさんです。

こういったギャップをいかに埋めていくか、おそらくそれには技術開発だけではなく、使い方の斬新なアイデアが必要です。そしてそれこそこれからの若い人たちの力が発揮されるところなのではないでしょうか。

ともあれ、先生のお話でやはりROSだなということは再確認しました。マイクロソフトでもOpen-RTMでもないですね。おかげで方向性がすっきりしました。

2012年10月19日 (金)

NEDO国際ロボットフォーラムに行ってきました

管理人のページ:よもやまばなし

先日「Japan Robot Week2012」で開催された「NEDO国際ロボットフォーラム〜ロボットが拓くスマートな社会〜」という講演会を聴講してきました。

お目当てはGoogleのロボット技術の話と、リモートブレインの元祖、東大の稲葉先生のロボットソフトウエアの話です。

まずは、Googleのカフナー氏。10年ほど前、稲葉先生の研究室で二足歩行ロボットの移動計画の研究をしていたそうで、今回の講演もその師弟関係あってのことかもしれません。そういう訳で、まずはその話から入りました。床の上に「踏んではいけないピンクの色紙」と「目的地である青い色紙」を配置し、天井カメラからの映像をもとに、目的地までの足の配り方を計画するという研究です。最初は各マーカーは静止していて、ロボットは移動前に経路を計算する方式ですが、研究を重ねるに従って、ロボットの移動中にマーカーを動かしても適時再計画し、ダイナミックに対応できるようになります。
氏はこれを「アルゴリズムの研究の成果もあるが、コンピュータの性能アップの効果が大きい」と評価します。これをマクラにクラウドコンピューティングによるコンピュータの高性能化の話に入ります。やっぱりGoogleですからね。

詳しい講演内容は他の方の記事に譲るとして、基本的にクラウドをロボットに応用することの有用性の話でした。僕は話の端々に洗われる「クラウドロボティックス」という言葉が気になりました。こういうロボット工学のカテゴリがあるんでしょうか? 

カフナー氏はクラウドロボティックスの有用性として次の3点を挙げました。

1・知識やノウハウがクラウドに集約されること
2・ロボットのハードウェアのコストを低く抑えられること
3・クラウドのコンピュータパワーを利用できること

1は開発者やユーザー間の交流の意味もありますが、ロボットからの情報、例えば特定の状況でのロボットの振る舞いなどをクラウドでデータベース化することで、他のロボットが同じような状況に遭遇した場合、そのデータを利用できるという考え方を提示していました。

クラウドの利用例としては、画像認識やGoogle Mapを利用したロボットカーの移動計画などを挙げていました。

面白かったのはクラウドロボティックスの実施例として挙げた、Android Phoneを利用したロボタみたいなミニロボットでした。クラウドの利用についてはあまり具体的な話は無かったと思いますが、ともあれ面白そうです。

Crobo

講演の締めくくりに、「ロボティックスでクラウドを利用するインフラは全て整っている」と話をされました。最近よく聞く言葉のようですが、Googleの方からでると、とても説得力がありますね。

長くなりましたので、稲葉先生の話は次回ということで。

より以前の記事一覧