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      

カテゴリー

ブログパーツ

無料ブログはココログ

« 2014年11月 | トップページ | 2015年1月 »

2014年12月

2014年12月28日 (日)

新しいラップトップを導入する

ROSさんお手やわらかに:ROS青雲編

現在のX61(Cor2Duo 2G RAM2G)で不足がある訳ではないが、ロボットに搭載するラップトップを新調することにした。もちろん中古だが。Thinkpad X201、i5(2.66GHz)、RAM4G、SSD128Gというものだ。X61はOSなしのジャンクだったが、今回はWin7がインストールされているちゃんとしたものだ。ヤフオクで17K円ほどだった。

Dscn3013

12インチサイズで、横幅は約300mm。少しはみ出すが、こんな風に縦に乗せることが出来る。

Dscn3006

Win7をつぶすのはもったいない。ウチではWin7はデスクトップにしか入っていないので、Win7の使えるラップトップは魅力的だ。ロボット開発の、かなりの作業がMacとubuntuで出来るようになったが、残念ながらD2CADでの回路図作成はWindowsでないと出来ない。そしてまた、D2CADのように気楽に使える回路図CADは他にないのだ。

という訳で、パーティションを切ってubuntu 12.04(64bit)をUSBメモリでインストールした。インストール時にパーティションを切ってくれるので楽チンだ。40GBをubuntuに割り当てたが、スワップ領域もとられるので、ディスクサイズは35.6GBになった。ROS hydroとturtlebotのフルインストールで10.5GBだった。残りは25GB程しかないが、今までの経験から、ROSのプログラムはとても小さなものが多いので、コレだけあれば、画像認識だって大丈夫だろう。

turtlebotのテストを一通りしたが、特に問題はなかった。X201は電池の持ちも良く、比較的小型軽量で中古のタマ数も多い。ROSのロボット搭載ラップトップとしては、都合がいいようだ。

2014年12月21日 (日)

turtlebotに使うラップトップの性能は

ROSさんお手やわらかに:ROS青雲編

turtlebotに乗せるラップトップの性能はどれくらいが必要なのだろう。現在のっているのはThinkPad X61でCore2Duoの2GHz、RAM2GBのモデルだ。ヤフオクで一年程前手に入れたもの。これなら、tutlebotのデモは特に問題ないパフォーマンスがでる。

だいぶ前(2008年くらい?)に購入したAcerのネットブック、Aspire one ZG5が出てきたので、これで試してみた。なんとなく買ったマシンで、結局のところ2〜3回海外出張に持っていっただけ、あまり使った記憶はない。XPだし使わないしということで、ubuntu12.04とROS hydroをインストールした。

Dscn2967

CPUがAtom N270(1.60GHz)、RAM1GBということだ。パソコンに詳しくないのでどの程度の性能なのかわからないが、アプリの起動や操作のレスポンスが、ちょっともっさりした感じではある。Hydroは問題なく動いているが、ローンチスクリプトの実行画面を見ていると、X61に比べて数倍遅い感じだ。これでturtlebotのサンプルコードを実際に走らせて様子を見ることにした。

turtlebotにはこのようにナナメに搭載できる。小さいのでバランスはとりやすい。

Dscn2970

テストの結果、マッピング、ナビゲーションはX61とあまり違いがわからないくらいだった。特にもたつきは感じられない。経路が単純なせいもあるかもしれないが、実験には不自由はなさそうだ。

人間を追跡するfollowは処理速度の影響が出た。人間に近づいたとき、一定の距離でなめらかに停止するはずだが、そのときに、近づいたり離れたりを繰り返した後停止するようになった。処理に時間がかかり、単位時間あたりの処理回数が落ちた結果、振動するようになったのだろう。これも、速度パラメータなどを調整すればよいので、致命的という程ではないだろう。

結論から言って、turtlebotを移動台車としてのみ使うのであれば、手持ちの古いラップトップの再活用も可能だろう。将来的に画像認識なども試してみたいのであれば、そのとき、もっと性能のいいラップトップを物色すればいい。そのときは中古市場でi5やi7を搭載したラップトップが手頃な値段になっている可能性があるからだ。

2014年12月20日 (土)

ROS_by_Exampleでturtlebotコンパチ機を使う

ROSさんお手やわらかに:ROS青雲編

とてもよいROS入門書、ROS by Examleで今回作ったturtlebotコンパチ機を使うには、ローンチスクリプトをちょっと修正する必要がある。ロボットのタイプをroombaにするのと、ジャイロを未使用に設定することだ。

~/catkin_ws/src/rbx1/rbix1_bringup/launch/includesのtb_create_mobile_base.launch.xmlの設定に下記を追加する。

<param name="robot_type" value="roomba" />
<param name="has_gyro" value="false" />

これを追加したファイルは下記
「tb_create_mobile_base.launch.xml」をダウンロード

ROS_by_Exampleのamclサンプルコードは、turtlebotのそれと異なり、がくんとスタートしてよろよろと進む。シミュレータでもそうなので、どうも加減速の処理が入っていないようだ。そのため、コードはシンプルで読みやすい。tutlebotのサンプルコードはなめらかに加減速するが、その分、コードが読みにくいので大変だった。原理を理解するには、とてもよいサンプルだ。

2014年12月14日 (日)

turtlebotコンパチ機でナビゲーション(動画)

ROSさんお手やわらかに:ROS青雲編

コンパチ機でのナビゲーションテストの動画を撮った。そのままだと画面映えしないので、赤と緑のパイロットランプと、レーダーアンテナを取り付けた。ちょっと昔のSFに出てきそうなロボになった。

なかなか上手に移動するが、デモプログラムの移動方法だと、結構障害物すれすれを通るので、はみ出しているロボット後部がぶつかることがある。ロボットのフットプリントのパラメーターを調整する必要があるようだ。

2014年12月13日 (土)

Roomba create 2が欲しくなる

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

Createoverview

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

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

2014年12月 7日 (日)

turtlebotコンパチ機、自律移動に成功

ROSさんお手やわらかに:ROS青雲編

コンパチ機でマップを使った自律移動に成功した。基本的にチュートリアルのここここにある手順にしたがっただけだ。

うちの間取りが単純過ぎるので、写真のようにフリースペースの真ん中にゴミ箱を置き、また、車輪が滑ってオドメトリの狂いやすい「魔のカーペット」を越えてキッチンの先までマッピングすることにした。(ロボットの重量バランスがテールヘビーになったせいか、カーペットを巻き込まずに乗り上げることができるようになった。)

Dscn2966

作成されたマップをrvizで見たものがこれだ。

Rviz_nav_s

マップ以外の情報も表示されているので、ちょっと見にくいが、ウチの居間がきちんと取り込まれているようだ。

このマップ情報を使って自律移動もテストした。rvizでのロボットの位置入力の操作にちょっととまどったが、任意の場所に実にスムーズに自律移動できることを確認した。さすがは最新の確率モデルを使ったamclアルゴリズムだ。明らかに滑っているカーペット上でもさほど誤差を発生していないようだ。かなり正確に自己位置推定ができている。オドメトリの精度にこだわってこんなのを作っていたのは時代錯誤だったのか。

マッピング、自律移動の操作手順を下記に示す。

■gmappingでマップを作るには

1・turtlebotの起動

リモコンでroombaの電源を入れる。
12V系の電源を入れ、kinectが動作できるようにする。
X61にsshでログイン、下記でロボットを立ち上げる。
roslaunch turtlebot_bringup minimal.launch

2・マッピング用のアプリを起動

X61にsshでログイン、下記でアプリを立ち上げる。
roslaunch turtlebot_navigation gmapping_demo.launch

3・ワークステーションでrvizを起動

T61で端末を開き、下記でrvizを立ち上げる。
roslaunch turtlebot_rviz_launchers view_navigation.launch
大きなウィンドウが開くので、見やすいように調整する。

4・ジョイスティックで探索

T61にジョイスティックを接続し、新しい端末で下記を実行。
roslaunch turtlebot_teleop logitech.launch
ジョイスティックはパソコン用の一般品、使っているのはバッファローのもの。5のボタンを押しながら左側のアナログスティックで操縦。

5・マップの保存

(マッピングアプリは止めない、新しいウィンドウで作業する)
X61にsshでログイン、下記でマップファイルを保存。
rosrun map_server map_saver -f /tmp/my_map
ファイルはロボットに搭載したX61のtmpにmy_map.yamlとして保存される。tmpなので再起動すると消去されることに注意。


■マップを利用して自律移動

マッピングから続けてやる場合はマッピングアプリをCtrl+cで停止、同じウィンドウで「ナビゲーションアプリ」を起動するだけで良い。minimal.lanchやT61のrvizはそのまま使い回す。起動の必要はない。

1・turtlebotの起動

リモコンでroombaの電源を入れる。
12V系の電源を入れ、kinectが動作できるようにする。
X61にsshでログイン、下記でロボットを立ち上げる。
roslaunch turtlebot_bringup minimal.launch

2・ナビゲーション用アプリを起動

X61にsshでログイン、下記でアプリを立ち上げる。
roslaunch turtlebot_navigation amcl_demo.launch map_file:=/tmp/my_map.yaml
これはマップとしてロボットに搭載したX61の/tmp/my_map.yamlを使用する。マップを作成してからパソコンを再起動するとtmpフォルダなので消去されていることに注意。固定的に使用する場合はホームディレクトリなどにマップを置くこと。

3・ワークステーションでrvizを起動

T61で新しい端末を開き、下記でrvizを起動。
roslaunch turtlebot_rviz_launchers view_navigation.launch --screen
画面にはロボットとマップが表示される。

4・ロボットの現在位置を指定

・rvizの画面上部の"2D Pose Estimate"ボタンをクリック。
・マップ画面上のロボットの現在位置(大体でよい)でマウスボタンを押し、そのままドラッグすると矢印が出るので、それを現在のロボットの向いている方向(正面の向いている方向)に合わせる。独特の操作なので少々練習が必要かも。

5・目的地まで自律移動

・rvizの画面上部の"2D Nav Goal"ボタンをクリック。
・現在位置の指定同様、目的地をマウスでポイントし、ドラッグで停止時の方向を指定。
・ロボットの動きを観察。

6・テレオペレーション

キーボードやジョイスティックでのテレオペレーションは自律行動に優先する。立ち上げておくと経路の修正などに役立つ。

roombaにレーザースキャナを乗せたオリジナルロボットを何とか自律移動させようとして頑張ってきたが、ラジオの入門にキットを使うのがよいように、きちんと動くロボットでまず体験するのが近道のようだ。なんだかややこしかったamclの使い方が見えてきた。丸一年くらいを無駄にした感じだ。

« 2014年11月 | トップページ | 2015年1月 »