2023年4月
            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            

カテゴリー

ブログパーツ

無料ブログはココログ

« 2013年7月 | トップページ | 2013年9月 »

2013年8月

2013年8月27日 (火)

ご家庭のroombaを実験用ロボットにする(続き)

ROSさんお手やわらかに/花岡ちゃんのウィークエンド

前回作ったベースに、測域センサやKinectの電源を搭載します。こんな基板を作りました。

Dscn2627

この基板では、roombaのバッテリー(14.4V)から測域センサ用の5V1Aと、Kinect用の12Vを作ります。また、roombaのシリアルポートを、秋月のUSB変換機を使って、パソコンと接続します。

放熱器がついているのは、12V1Aのロードロップレギュレータです。バッテリー電圧が14Vほどですから、ロードロップでないと12Vが安定に供給できません。5Vは秋月で売っているスーパー三端子レギュレータで作ります。これは簡単に使えるDC-DCコンバータで、電位差が大きい場合に有効です。トグルスイッチは、これらの電源をON/OFFするためのものです。

バッテリー電圧を、以前の投稿では、12V(10セル)と書いていましたが、調べてみると、14.4V(12セル)であることがわかりました。結構な高電圧です。前にも書いたように、roombaのスイッチを切っても電圧がでていますから、Mini-DINプラグを裸で使う場合は、ホットボンドで端子部をカバーしておいた方が、安全です。

Dscn2634

基板は、ベースの裏側に、この写真のように取り付けました。ただ、クリアランスが小さいので、基板の取り付けには工夫が必要でした。追試する方は、前回の投稿にあるよう、もう少しベースとroombaパネルの間に、クリアランスを稼いだ方がいいでしょう。

Dscn2629

ラップトップ(ThankPad X61)を乗せた状態がコレです。青いLEDがroombaからの電源供給ON、赤いLEDがUSBからの給電で、USBシリアル変換ONの表示です。ただ、こちらの方は、roombaからのポート電圧だけで動いてしまうのか、roombaにMini-DINコネクタを差したままだと、USBケーブルを抜いていても、赤いLEDが薄く点灯してしまいます。数mAなのであまり気にする必要も無いのですが、目障りなので、使わないときはMini-DINをroombaから抜いておきます。

Dscn2631

これで出来上がり。これを使った実験は、カテゴリ「ROSさんお手やわらかに」でやっていこうと思います。それから、今回作った電源の回路図は、後日アップ予定です。

2013年8月18日 (日)

ご家庭のroombaを実験用ロボットにする

ROSさんお手やわらかに/花岡ちゃんのウィークエンド

別カテゴリーでやっているROSの実験で、そろそろ、ROS対応のロボットプラットフォームが欲しくなってきました。そこで、ウチのroombaを使って、小型ラップトップと測域センサーなどを搭載できる、実験用ロボットを作ってみました。これは、roomba本体に穴をあけたりといった改造を伴わないので、手軽に製作でき、使わないときには、元の掃除ロボットとして使うことが出来ます。

これが完成イメージです。ラップトップなどの乗ったサブシャーシは、roombaに乗せてあるだけなので、簡単に取り外すことが出来ます。

Dscn2623

まずは、以前の投稿にあるように、roombaの化粧パネルを外しておきます。

次に、サブシャーシを、6mmのMDF板で工作します。

Roomba

この板は、ダイソーで手に入れた300X400mmのモノで、もちろん100円です。たまたま手に入ったので使っているだけで、普通の合板でもかまいません。サブシャーシの真ん中には、roombaの電源ボタンを押すための穴をあけます。今回は10mmほどの穴をあけ、ペンの軸などを差し込んで操作するようにしました。40mmほどの穴をあければ、指で直接ボタンが押せるでしょう。

次にサブシャーシを乗せるブロックを30X10mmの角材で作り、写真のようにroombaに両面テープで仮止めします。サブシャーシとroombaとの間に後述する電源基板を入れましたが、ちょっとクリアランスが足りず、特殊な工作になってしまいました。追試する人は、40X10mmくらいの角材を使い、もっとクリアランスを稼いだほうが、楽に組み込めます。

Photo

写真では中央に2個だけですが、試してみたところ、前にもあったほうが安定です。バンパーセンサの動きをジャマしないように、小さいブロックを前方に追加した方がいいでしょう。これがないと、kinectのような重いセンサを乗せたときに、サブシャーシが前に倒れやすくなります。

また、左右のブロックの前端と、roombaのサイドボディの切れ目を合わせるようにします。これが、サブシャーシをroombaに乗せるときの位置決めになります。

Dscn2616

最後に、サブシャーシを木工用ボンドでブロックに接着します。作例のように中心線をけがいておくと、位置合わせがやりやすくなります。

Dscn2617

次回は、センサの電源をroombaから取り出す回路を組み立てます。

2013年8月 4日 (日)

catkin超入門(その5)・tfを追加して完成

ROSさんお手やわらかに:ROS奮闘編

tfのブロードキャストを利用してroombaのオドメトリをrvizでモニターする。もとの投稿はこれ。スクリプトはこんな風になる。
rbjoy.py

catkinでは最初の

import roslib
roslib.load_manifest('roomba_work')

これらはいらないが、残しておいてもエラーにはならない。(新たにcatkinでパッケージを作った場合、マニフェストが作られないので、エラーになる)

それから依存関係だが、どうもなにもしなくとも実際は動くようだ。元の投稿では、マニフェストにtfへの依存関係を追加したが、catkin版ではなにもしていない。本来ならpackage.xmlに追加しなくてはならないはずだ。pythonだと、スクリプトに依存関係が記述してあればいいのだろうか? 今のところよくわからない。

ともあれ、あとは元の投稿どおりの操作で、rvizにroombaの座標を表示できた。

これで、fulteのrosbuildで試したroombaを動かす実験を、groovyのcatkinで追試するのには成功した。これで安心してgroovyに乗り換えることができそうだ。

2013年8月 3日 (土)

catkin超入門(その4)・パッケージを作る

ROSさんお手やわらかに:ROS奮闘編

ここから本丸。パッケージを自作する。作るのはこれ。rosbuild版の移植といった方がいいか。roombaとPCの接続はこんなふうに。

まずはパッケージフォルダを作る。ワークスペースのsrcフォルダに移動し、catkin_create_pkgするだけだ。

$ cd ~/catkin_ws/src
$ catkin_create_pkg roomba_work std_msgs rospy roscpp

これでroomba_workというパッケージフォルダがsrcにできる。

次に、roomba_workにscriptsというpythonスクリプトを入れるフォルダを作る。
ここに投稿にあるrbjoy.pyを作る。これはroombaをゲームパッドで動かす自作スクリプトだ。忘れずにこれを実行可能にしておく。僕はGUIでプロパティを編集し、「実行可能チェックボックス」にチェックを入れた。コマンドラインでやるより楽だ。

最後に

$ cd ~/catkin_ws
$ catkin_make

で、ビルドする。これで完成。

まずは手動でテストする。端末を開く度にsource ~/catkin_ws/devel/setup.bashで初期化する。

roscoreを起動し
新たに端末を開いて
$ rosrun joy joy_node
もうひとつ端末を開いて
$ rosrun roomba_500_series roomba500_light_node
さらに端末を開いて
$ rosrun roomba_work rbjoy.py

これでゲームパッドを操作するとroombaが動く。ラジコンカーよろしく、左のアナログパッドの前後で前後進。右のアナログパッドの左右で方向転換する。

また、この投稿と同じ手順で、launchスクリプトを置くこともできる。

Dscn2609

2013年8月 2日 (金)

catkin超入門(その3)・rosbuildパッケージを使う

ROSさんお手やわらかに:ROS奮闘編

roombaを動かすには、fuerteで使用したroomba_500_seriesパッケージをインストールする。ところが、これはrosbuildパッケージでcatkin版がない。ちょっと困ったことになった。

いろいろと調べてみると、チュートリアルにはrosbuildで開発するためのワークスペースの作り方が書いてある。つまり、groovyでもrosbuildが機能するわけだ。しかし、チュートリアルにある、rosubuild開発用ワークスペースの仕組みは、僕の理解力ではどうもピンとこない。
なにはともあれ、groovyでもrosbuildでビルドできることはわかったので、とりあえずパスが通っているcatkin_ws/srcにパッケージを置いてビルドしてみることにした。以前の投稿にしたがって作業した。

■シリアルポートドライバをインストール
・catkin_ws/srcへ移動
・svn co http://isr-uc-ros-pkg.googlecode.com/svn/stacks/serial_communication/trunk/cereal_portでサブバージョンから取り込み
・cd cereal_port
・rosdep install cereal_portで依存関係を設定
・rosmakeでビルド

■roomba_500_seriesのインストール
・catkin_ws/srcへ移動
・svn co http://isr-uc-ros-pkg.googlecode.com/svn/stacks/roomba_robot/trunk roomba_robot パッケージをroomba_robotと言う名前で持ってくる
・cd roomba_robot
・rosdep install roomba_robotで依存関係を設定
・rosmakeでビルド

これで、catkin_ws/srcにパッケージができた。この投稿にそってテストしたが問題なく動作した。試しにcatkin_makeをしてみたが、rosbuildパッケージをワークスペースに置いたことによる不具合はなさそうだ。rosbuild版しかないパッケージを手っ取り早く使うには、いちおうこれでいいみたいだ。

2013年8月 1日 (木)

catkin超入門(その2)・パッケージをビルドする

ROSさんお手やわらかに:ROS奮闘編

catkin対応パッケージのインストールの練習として、ゲームパッドからの情報を入力するjoy_nodeを導入してみる。以前の投稿のgroovy版だ。

デスクトップ機には、ubuntuのゲームパッドドライバをインストールしていないので、以前の投稿の前半にあるubuntuドライバのインストールとjstest-gtkでのテストを行い、動作することを確認した。

次はrosのパッケージをインストール。使いたいのはゲームパッドの情報をパブリッシュするjoyパッケージだ。groovy用のパッケージは、投稿にあるようgitからダウンロードする。前回同様homeに落とした。

$ cd ~
$ svn co https://github.com/ros-drivers/joystick_drivers.git

joystick_drivers.gitフォルダが作成されるので、とりあえずtrunkの中味をすべて~/catkin_ws/srcにコピー(GUIで)した。

これから初catkinビルドだ。と、いっても下記の操作をするだけ。

$ cd ~/catkin_ws/
$ catkin_make

するとこんなメッセージが出た。

・・・・・・(略)
/home/cyberworks/catkin_ws/src/ps3joy/src/sixpair.c:33:17: 致命的エラー: usb.h: そのようなファイルやディレクトリはありません
・・・・・・(略)
[ 15%] Built target joy_node
・・・・・・(略)

これを見るとps3joyのコンパイルは失敗してるが、joy_nodeは無事にビルドできたようだ。ps3なんちゃらとは多分ps3用のコントローラを使うノードだろう。usbのヘッダファイルがないのは不思議だが、ともあれ今回は関係ないので、以前の投稿にしたがい、joy_nodeのテストをする。

Dscn2608

写真のとおり、問題なく動作した。
ここまではOK。次は以前自作した、roombaを動かすパッケージをためしてみることにする。

« 2013年7月 | トップページ | 2013年9月 »