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年10月 | トップページ | 2012年12月 »

2012年11月

2012年11月30日 (金)

ROSのチュートリアル、ちょっと変わったかな?

ROSさんお手やわらかに:ROS入門編

前回試したのはチュートリアルのこのページ。ちょっと見ないうちに少し内容が変わったような?? ページの先頭にcatkinとrosbuildというボタンが出来、クリックすると内容が変わるようになった。デフォルトで選択されているのはrosbuildの方で、これは前回読んだものとあまり変わらない。しかし、catkinをクリックすると内容がガラリと変わる。なんだこれ?? 

まあ、デフォルトだと今までどおりなのであまり気にしないことにする。でも、こんな風に突然変わるのか、ROSの世界では。ぼちぼち進行するというスタンスでやっているこのブログ、変化についていけるのか?? ちょっとばかり心配だ。

ともあれ、チュートリアルの次のステップはパッケージのビルドだ。これはまあ書いてあるとおり、rosbuildコマンドの使い方の説明だ。特記すべきことはない。
このページにもやっばり件のボタンがある。ビルドの方法が2種類あるということのようだ。

この調子だとようやくROSでロボットを動かせたころには、せっかく身につけた知識が古くなっているのではないだろうか。XBeeなんかで少々遊びすぎたかもしれない。

でも今夜はここまで。

2012年11月28日 (水)

RoombaをiPhoneでリモコンする

花岡ちゃんのウィークエンド:RoombaのWiFiリモコン

今回はRoombaをiPhoneでリモコンしてみます。以前PCからリモコンしてみましたが、それのiOS版です。

最初にブレットボードで組んでいた回路をユニバーサル基板に組み立てました。電源はRoombaのバッテリーから取り、このDC-DCコンバータモジュール(なんと300円!)で3.3Vに変換します。入力12Vでは少し電圧が足りないようにも思いますが、ちゃんと動作します。アマチュア的には問題ないと思います。
これは5Vですがモジュールの5番ピンと6番ピンの間に36KΩの抵抗を入れることで3.3Vに設定できました。個体差があるかもしれないので、追試する場合は必ず電圧をチェックしてくださいね。

コンバータの入力はRoombaのコネクタからとります。

Rommba_con

1番、2番ピンには、Roombaのバッテリーから約12Vの電圧が供給されています。これをDC-DCコンバータの入力に入れ、XBee WiFiの電源にします。消費電流を実測したところ、入力電流は待機時で40mAほどでした。

この電源ピンにはRoombaの電源が切れていても12Vの電圧が出ています。ここにXBeeのシリアルポートの信号線が触れるとXBee WiFiが一発でオシャカになります。実は実験中にシリアルポートのワイヤがコネクタ部分ではずれ、それが電源ピンに触れてXBee WiFiをひとつ駄目にしてしまいました! コネクタにワイヤーをハンダ付けしたらホットボンドでしっかり固めた方が安全です。

基板はこんな風に作りました。Roombaに取り付けるために、同じサイズの基板を2枚、スタッドで重ねています。下側の基板を両面テープかなんかで貼付けようと言う訳です。

Dscn2387

今回基板の取り付けには、ダイソーの「衝撃吸収パッド」という青いゲル状のシートを使ってみました。ぺたりと乗せるだけで結構しっかり固定できます。取り付け位置の変更も簡単で、両面テープよりずっと手軽です。

Dscn2389

さていよいよiPhoneのアプリですが… その前にXBee WiFiのIPアドレスを固定しておきましょう。固定しないと毎回XBee WFiのIPアドレスを調べなければなりません。
X-CTUのModem Configurationで設定します。

Networking..から
 MA IP Addressing Mode を 1-STATIC に設定
Addressing..から
 MY IP Address に空いているIPアドレス(僕の場合は192.168.1.51)を設定

これを設定したら忘れずにWriteボタンをクリックしてください。これで設定完了です。ポートはこれまでの実験と同じ8081(0x1F91)を使います。

iPhoneのアプリはこんな感じです。もちろん実験に使うiPhoneは、WiFiでRoombaと同じネットワークにつながっている必要があります。

Dscn2382

RoombaとXBee WiFiの電源は入れておきます。
アプリの一番上のボックスをタップしてXBee WiFiのIPアドレスを入れ、Connectをタップして接続。接続されるとボタンの脇に"Connected"と表示され、ボックスが青くなります。何かしら不具合があって接続できないと、2分ほどしてから"Connection ERROR"と表示します。(!!残念ながら接続途中でホームボタンを押して終了するとアプリの動作がおかしくなります。そのときは、ホームボタンをダブルクリックして表示される実行中のアプリリストから、RoombaRemoteを長押しし"-"マークをタップして強制終了させてください。)
あとは十字キーで操縦、下のファンクションボタンで掃除をさせたりドックにもどしたりすることが出来ます。止めるときはSTOPをタップします。
アプリを終了するときはiPhoneのホームボタンを押せばOKです。

XCode4.5.2、iOS5.1で試作したプロジェクトファイルを参考までに公開します。とても簡単なプログラムですが、しっかりデバッグした訳ではないので「自己責任」でご利用ください。

「iPhone_RoombaRemote.zip」をダウンロード

アプリの仕組みについては後日投稿します。

【後日追加 動画をこちらに掲載しました。】

2012年11月25日 (日)

XBee WiFiの電源をテストする

花岡ちゃんのウィークエンド:RoombaのWiFiリモコン

XBee WiFiに関する投稿を調べてみたら、このデバイスはかなりの美食家で、電源によっては起動しないことがあるようです。そこで、試しにポピュラーな三端子レギュレータから給電してみました。
この3.3V/1Aの低損失レギュレータを使い、かなりくたびれた単三電池4本で駆動してみました。

Dscn2367

ブレットボードで試してみたところ、毎回ではないですが、LEDがわずかに点灯するばかりで動作しないことがありました。
このとき電流を計ってみると500mA程の大電流が流れています。通常は150mA程度ですからこれは異常です。解析はしませんでしたが、兎に角、3.3V電源ライン(レギュレータの出力)のコンデンサを100uFから220uFにするとこの現象は見られなくなりました。
どうもコレくらいは奢った方がいいようです。

それ以降は調子良く動いてます。大げさな放熱器をつけましたが、電池4本ではほとんど発熱しません。
試しに、RoombaのminiDINコネクタに出ているバッテリーの12V(充電直後は13Vくらいある)を電源にしてみたところ、さすがにかなり発熱します。電力がモッタイナイですから、Roombaの電源からもらうならDC-DCコンバータにするのがいいでしょう。

電源周りでよく問題になっているのは、XBeeをUSBでパソコンにつなげるアダプターを使う場合のようです。
僕の使っているSparkfunのXBee Explorer USBには、MIC5205という150mAのレギュレータが乗っています。送信時の電流は測定値で200mAを越えるので、これでは電流が足りません。このアダプターでは「かろうじて」動作している状態で、連続的にデータ通信をした場合は通信が落ちる可能性もあります。テストや設定程度なら実際なんとかなっていますが、PCで恒常的に使うにはあまりお勧めできません。

XBee WiFiをPCで使うなら、外部電源仕様の秋月のアダプターがいいようです。

2012年11月24日 (土)

Packageを作る

ROSさんお手やわらかに:ROS入門編

Packageディレクトリと必要なファイルを作成する方法を練習する。
Visual Studioなどで新規プロジェクトを作るのと同じだろう。

チュートリアルの手順としては次のようになる。

まず、ワークスペースのsandboxディレクトリに移動する。この下にPacageを生成するためだ。

roscd
cd sandbox

roscdを引数ナシで実行するとどこにいてもワークスペースに移動する。

次はsandboxの中にbeginner_tutorialsというパッケージを作る。コマンドはこうだ。

roscreate-pkg beginner_tutorials std_msgs rospy roscpp

このコマンドではbiginner_tutorialsというパッケージディレクトリを作り、そこに必要なファイルを生成する。このあと作業メッセージがパタパタと表示されて、プロンプトになれば終了だ。
このコマンドでは、作るパッケージにstd_msgs、rospy、roscppパッケージとの依存関係を定義する。つまりそれらのパッケージを参照すると言うことだろう。Cのincludeみたいなものか。rospyとroscppはそれぞれpythonとc++でのフレームワークのようなもののようだ。

ここで作ったパッケージのマニフェストは下記だ。ちゃんとauthorにhanaokacyanが入っている。urlタブはどういう意味があるのだろう? このパッケージのリポジトリを定義するんだろうか?

( ↓ここにマニフェストのXMLをコピペしたんだけど、ブログでは見えないようだ。)

beginner_tutorials hanaokacyan BSD http://ros.org/wiki/beginner_tutorials

ここまでは自動生成される。ほかに必要なものがあれば、これを編集して追加するようだ。
次にチュートリアルにそって下記を確認しておく。

・パッケージの一次依存パッケージの表示
下記コマンドでbiginner_tutorialsのマニフェストで定義しているの依存パッケージを調べることができる。

sandbox$ rospack depends1 beginner_tutorials

・パッケージの間接依存パッケージの表示

rospack depends beginner_tutorials

これは依存関係にあるrospyなどがさらjに依存してるパッケージも表示する。つまり、biginner_tutorialsが依存するすべてのパッケージが表示されるようだ。

これでパッケージの入れ物はできたことになる。

2012年11月19日 (月)

XBee WiFiでRoombaをリモコンしよう

花岡ちゃんのウィークエンド:RoombaのWiFiリモコン

これまで、ウィークエンドの小実験で、Roombaの外部制御やXBee WiFiの使い勝手などをやってきましたが、今回はそのまとめとして、RoombaのWiFiリモコンに挑戦してみたいと思います。
以前に投稿したRoombaの外部制御については、こここここの投稿、Xbee WiFiについてはおなじくこここの投稿をご覧ください。

今回のシステムは図のように家庭用WiFiルーターの無線LANネットワークにRoombaを接続し、同じルーターにつながったパソコンから専用ソフトでリモコンするものです。

Photo

最初にRoomba側を準備します。下の回路図のようにRoombaとXBee WiFiを接続します。Roombaの外部インターフェィスには元々その機能はないのでフロー制御は行っていません。XBeeやZigBeeの通信方式に比べ無線LANは高速なので、この程度の通信量なら特に問題はなさそうです。
電源は3.3V /500mAくらい供給できるモノを用意します。僕は手持ちのDC-DCコンバータとアルカリ単三4本で作りましたが、3端子レギュレータでも大丈夫だと思います。Roombaのロジック系は5Vなので、XBeeの入力は分圧して過大入力にならないようにしています。出力はHレベルで3V弱、一応5V系のスレショルドは越えているのでなにもしていません。

Roombawifi
【後日追加】上記回路図の100uFの電解は220uF以上に変更してください。電源によっては起動しない場合があります。

これをブレットボードに組み立てて、無線ネットワークのSSIDとパスワードを設定したXBee WiFiを搭載します。ボーレートをRoombaのデフォルト、115200bpsに設定するのをお忘れなく。電源を入れると二つのLEDが点灯し、数秒後にAssociateが点滅し始めればルーターへの接続はOKです。

Dscn2362

次はパソコンソフトです。毎度ながらVisual C# 2010で製作しました。TCPで通信するだけの単純なもので、インターフェィス画面はこのようになっています。

Roobawifi_2

使用方法は下記の通りです。

1:RoombaとXBee WiFiの電源を入れる。Associateが点滅するのを確認。

2:パソコンソフトでXBee WiFiのIPアドレスとポート番号(8081がおすすめ)を入力した後、CONNECTボタンをクリック。数秒後青い文字でConnectedと表示されればRoombaとの接続完了。

3:Start + Safeボタンをクリック(Fullよりこちらがおすすめ)

4:FWDで前進、BKDで後退、STOPで停止。RFD・LFDは右・左へのカーブ(回転半径300mm)RT・LTはその場回転。

5:センサーパケットIDを入力してSensorsボタンをクリックすると、対応したセンサーの内容をボックスに表示。

6:終わるときはPassiveクリックするか、Roombaを持ち上げでパッシブ(通常)モードにもどし、Roombaの電源を切る。

ご自宅のRoombaがラジコンカーに早変わりです。VC#2010のプロジェクトファイルを下記に公開します。とても簡単なプログラムなので自分好みに改造するのも面白いでしょう。

「RoombaRemote.zip」をダウンロード

これで、Roombaをリモートブレイン化する準備は整いました。いずれ別カテゴリーでやっているROSベースのシステムで動かしてみたいと思っています。

【後日追加】この仕組みを使ってiPhoneからも動かしてみました。こちらのページです。

2012年11月17日 (土)

コーヒーブレイク(ノートパソコンへのROS導入とかね)

ここらでちょっとコーヒーブレイク。

僕のUbuntu環境は、主に組み込みソフト開発に使っているWindows機の入れ替え式ハードディスクに構築したが、これだとROSでの開発と組み込み開発が同時にできないので、実機を製作するには不便だ。やはり別々のマシンに搭載したい。そこで中古のノートを探して、そちらをまるまるROSの環境にすることにした。

とはいえ、OpenCVなんかを使おうと思うと、そこそこの性能は必要。珍しく長期間の逡巡の末、ThinkPadの中古をヤフオクのショップで8K円(送料込み)ほどで入手した。T61という比較的タマ数が多いモデルではあるがこれは破格の安さだ。たぶんOSなし、バックアップディスクなしという代物だからだろう。

これにUbuntuをインストールしてみると、驚いたことにほぼ完璧にノートパソコンとして機能するようになった。Thinkpad特有のややこしいトラックパッドなんかは動かないんだろうとあきらめ気味だっただけに、これはうれしい。さすがに指紋認証はダメのようだが、まあこれはやむを得ないだろう。

Dscn2361

Core2Duoの2.2GHz、4GBのメモリ搭載だ。性能としては十分ではないが不足もないだろう。外観もきれいでバッテリーもまだまだいけそう。珍しくいい買い物をしたようだ。

今までの投稿の手順でROS導入も問題ナシ。手順に一部重複した箇所があったので、ついでにブログを訂正。

気分が乗ってきたところで、USBシリアルの確認をすることにした。秋月のUSBシリアルを差し込むと、ちゃんと/dev/ttyUSB0ができる。ドライバをインストールする必要もない。ソフトウエアセンターで「シリアルポート端末」を入手し、さて実験とポートを開くと・・ 「許可がありません」

ああそうだった、オレはこれが嫌でUNIXから遠ざかっていたんだっけ・・ 

十余年前、PCLinux搭載機器のシステム構築のとき、アクセス権がらみでエラい苦労をしたことをアレコレ思い出した。
まあともかくこういうものだ。我慢して付き合う他はない。

結局対策としては下記のコマンドで、自分をttyにアクセス権限のあるグループdialoutに追加することにした。

sudo addgroup hanaokacyan dialout

GUIなんか使わない人ならsudoで実行しちゃえばいいんだからこんなことは気にしないのかも。

なにはともあれ、シリアル通信も問題ナシ。これからはこのノートパソコンでROS入門を続けることにしよう。

XBee WiFiをWEPルーターに接続する(後編)

花岡ちゃんのウィークエンド:XBee WiFi

今回はXBee WiFiとTeraTermとの間でルーターを介してTCPで通信してみます。TCPのポートは8081にします。これは空いているところなら何でもいいのですが、調べていないのでネットタンサーが使っていたポートにすることにしました。少なくともこれなら空いてます。

■XBee WiFiにポートを設定

X-CTUでポート番号を設定しますが、気をつけなければいけないことがあります。8081は十進表記ですが、XBeeには16進表記で設定する必要があります。c電卓などで変換しておきます。8081は0x1F91になります。
おなじみのModem Cnfiguration画面で作業します。

Addressingから・・

・DE-Destination Portに1F91をセット

・C0-Source Portに1F91をセット

以上をセットしたらWriteボタンで書き込みます。これでOKです。


■通信テスト

いよいよ通信テストです。X-CTUはそのままTerminalタブをクリックすれば準備OK。

TeraTermを起動するのは同じパソコンでも、別のパソコンでもかまいません。設定はこのページを参考に、IPアドレスを今回設定したXBee WiFiに置き換えてください。
何事もなければ通信確立です。エラーが出たらアドレスやポートの設定を確認してください。

これで準備完了。X-CTUのターミナルに何か打ち込むとそのままTeraTermに表示されるでしょう。めでたしめでたし、といいたいところですが・・ TeraTermのほうに文字を打ち込むと、打ち込んだときには表示されなくて、リターンキーを打って始めて表示されると思います。少なくとも僕の環境はそんな感じです。

つまり、TCPで送ったデータがそんな風になるわけで、ASCIIコードでのコマンド形式ならともかく、バイナリデータなどを送る場合に困ったことになりそうです。これはTeraTermのせいなのか、XBee WiFiのせいなのか現時点ではわかりません。パケットに1文字だけを載せるのか、ある程度の文字数を載せるのか、ソフトの作り方の問題なんでしょうか? 自分で通信ソフトを作ってみればわかるでしょう。

これについては宿題としておきましょう。
【後日追加】↑この現象はTeraTermによるもののようです。ルンバとの通信(バイナリデータ)ソフトを作って試してみましたが、1バイトのデータも問題なく送受信できます。


■まとめ

ともあれ、簡単にネットと通信ができるXBee WiFiは大変便利です。PCばかりではなく、スマートフォンなどからもアクセスできる電子ガジェットがアマチュアにも作れそうですね。
モチロン、リモートブレインロボットにも強力なツールになるでしょう。以前作ったナノスカウトもXBee WiFiに換装すれば、コントロール用のパソコンにXBeeを接続しなくともすみます。これは楽しみなデバイスです。


2012年11月15日 (木)

XBee WiFiをWEPルーターに接続する(前編)

花岡ちゃんのウィークエンド:XBee WiFi

久しぶりのウィークエンド、今回はXBee WiFiを自宅のWEPセキュリティのルーターにインフラストラクチャで接続し、同じネットワークにあるパソコンと通信させてみます。この実験、実は夏ごろに一度やっているのですが、きちんと記録していなかったので細かいところがわからなくなってしまいまして・・ 復習のつもりで追試することにしました。結構コツがあります。

今回はおなじみSperkfunのXBeeエクスプローラUSBに乗せたXBee WiFiを、自宅のルーターにWEPセキュリティで接続、同じネットワークのパソコンからTera Termを使いTCPで通信してみます。


■最初にやること
実験に使ったのは上のリンクにあるものと同じ基板アンテナのものです。XBee WiFiには何種類かありますが、中身は同じで、アンテナが違うだけのようです。

写真のようにXBeeの3.3V電源ピンとGND間に200uFくらいの電解コンデンサを追加します。これは重要で、ためしに外したらまったく通信できなくなってしまいました。

Dscn2321

X-CTUを最新のものにし、XBee WiFiのファームをこれで最新のものにしておきます。今回のファームのバージョンは102Dです。また、Tera Termも古いものだとTCPをサポートしていませんからバージョンを確認しておきます。
(この投稿ではX-CTUの細々した操作方法は解説していません。このへんはネットや参考書で調べてください)

■ネットワーク設定
XBee WiFiをエクスプローラに挿してパソコンに接続し、コントロールパネルのシステムからポート番号を調べておきます。
次にX-CTUを起動しポートの設定などを行います。XBeeは初期化した状態からはじめますので、ボーレートはデフォルトの9600bpsです。

Dscn2358

今回接続するWEPルーターの情報は下記です。

 SSID:CyberWorks1
 WEPキー:16進40ビット
 IP アドレス:DHCP

作業は下記の手順で行います。

・X-CTUのModemConfigurationでRestoreボタンをクリックした後Readボタンをクリック
 (初期化のため。これをやらないとこの後の設定がうまくいかないことがある)

Networkingから・・

・AH-Network Typeを"2-INFRASTRUCTURE"にセット

・IP-IP Protcolを"1-TCP"にセット

・MA-IP Addressing Modeを"0-DHCP"にセット

Securityから・・

・EE-Encryption Enableを"3-WEP SECURITY"にセット

・PK-Passphreaseに16進40ビットの文字列を入力

ここまで入力したら設定ウィンドウ一番上のActive Scanをクリックし、現れたScanボタンをクリック
下のような選択画面が開くので、CyberWorks1をクリックしてSelect APボタンをクリック。

Selectap

するとなぜかタイムアウトしたというダイアログが開くが、気にせずOKで抜けてDoneでもどります。

ここで忘れずにWriteボタンでXBee WiFiにこれまでの設定を書き込みます。

10秒ほど待った後、Readボタンで設定を読み込みます。下記のようにAddressingのMY Module IP Addressにそれらしいアドレスが入っていれば、設定成功です。

Wifisetup1

必要ならこの後でシリアル通信の速度などの設定をします。今回はテストなのでデフォルトの9800bpsのままで使います。

次はTCPでの通信テストですが、ちょっと長くなってしまいましたので次回ということに。

2012年11月11日 (日)

ROSのファイルシステムとナビゲーションコマンド

前回まででインストールは終了。これからインストールした中味を見てゆこう。

このページによるとROSで働くシステムは下記のような構成要素からなっている。

・Package ROSの最下層のファイル群をまとめたディレクトリ。実ロボットとの通信とかセンサ情報から障害物回避の行動計画を立てたりとかがそうだろうと思う。実行可能ファイルやライブラリ、ツールなどなんでもこれになりうる。
・Manifest パッケージ群の依存関係を定義したファイルらしい。
・Stack あるロボットのプログラムに必要なパッケージをいくつかまとめたディレクトリ。
・Stack Manifest スタック用のマニフェスト

どうもまだよく飲み込めないが、たとえば下記はcommonというスタックのファイル構成の例だ。

Filesystem_layout

なんとなく雰囲気はわかる。ROSはスタックとパッケージのマニフェストにしたがって、各パッケージを構成するプログラムを「接続」し、障害物回避や移動しながらのマッピングなどの「まとまった仕事」を実現するのだろう。

これら、スタックやパッケージに簡単にアクセスするためのコマンドも用意されている。rospack,rosstackはパッケージやスタックに関するコマンドだ。

rospack find [package_name]
rosstack find [stack_name]

これらは、特定のスタックやパッケージを見つける。roscppというパッケージを探すときはこんな感じ。

rospack find roscpp

結果はこんな風になる。

/opt/ros/fuerte/share/roscpp

それからcdのROS版、roscdというのもある。これは想像のとおり

roscd [locationname[/subdir]]

ということで、そのパッケージやスタックのディレクトリに移動するものだ。

roscd roscpp

のように使うことで、/opt/ros/fuerte/share/roscppに移動する。サブディレクトリを指定することもできる。

その他、こんなコマンドがある。

rosls [locationname[/subdir]] スタックやパッケージディレクトリの中味をlsする。

こんな感じで、ros + なんとかというのが基本的なコマンド名のようだ。

とっても大事なsetup.bash

以前の投稿で、ワークスペースを有効化するのに下記のコマンドを使った。

source ~/fuerte_workspace/setup.bash

これは環境変数 $ROS_PACKAGE_PATHにワークスペースへのパスを追加するようだ。
ただ、いったんログアウトする、つまり、昨日やった続きをやろうとすると、初期化されてしまう。当たり前といえばそれまでなのだが、どっかで再設定してくれるのかと思っていた。

したがって、下記の場合は上のコマンドを実行する必要がある。

1・起動してすぐ
2・新しいスタックやパッケージをインストールした後
3・ワークスペース内に新規のディレクトリを作成したとき

確認は環境変数をダンプして行う。

echo $ROS_PACKAGE_PATH

現在僕の環境では、このような結果が返る。

/home/cyberworks/fuerte_workspace/turtlebot:/home/cyberworks/fuerte_workspace/sandbox:/opt/ros/fuerte/stacks:/opt/ros/fuerte/share:/opt/ros/fuerte/share/ros

なんかチュートリアルにないディレクトリもリストされているが、あんまり気にしないことにする。

ここまででインストールは完了だ。

リポジトリからturtlebotスタックを持ってくる

チュートリアルのこのページの後の方は、ワークスペースにどこかからスタックを持ってくる方法の練習のようだ。

”Adding repositories to the overlay"はネット上のリポジトリからスタックを持ってくる練習だ。次の二つのコマンドを実行するとワークスペースにダウンロードされる。

rosws set turtlebot --hg https://kforge.ros.org/turtlebot/turtlebot
rosws update turtlebot

ダウンロードしたスタックがすでに/opt/ros/fuerteにある場合は、そっちのほうが「シャドー」される。ワークスペースに持ってきた方を優先的に使用するという意味のようだ。これはスタックの内容をいじっても、/opt/ros/fuerteにあるオリジナルに影響が出ないようにだ。

このようにして持ってきたスタックをアップデートするにはこのコマンド

rosws update turtlebot

すべてのリポジトリをアップデートするにはこのコマンド(ワークスペースの中の??)

rosws update

ROS wikiのインデクサ(知らない言葉のオンパレードだ)を使ってダウンロードする場合、(おそらくwikiで見つけてすぐダウンロードする場合)は下記のコマンドを実行すると・・

roslocate info turtlebot

こんな結果が返ってくる。

- hg:
local-name: turtlebot
meta:
repo-name: turtlebot-ros-pkg
uri: https://kforge.ros.org/turtlebot/turtlebot
version: default

これをパイプでつないで

roslocate info turtlebot | rosws merge -
rosws update

これでいいようだ。こっちのほうが少し簡単だ。

今回はここまで


2012年11月10日 (土)

ワークスペース内に作業用のディレクトリを作る

ワークスペースに作業用のディレクトリを作る。このページの真ん中あたりに解説があるsandboxディレクトリがそれだ。
ここをチュートリアルで作るパッケージやスタック(これについては後述する)の置き場所にする。

まずunixコマンドでワークスペースの下にディレクトリを作る

mkdir ~/fuerte_workspace/sandbox

次にroswsでこのディレクトリをROSのワークスペースとして設定する。

rosws set ~/fuerte_workspace/sandbox

これでおしまい。

次にここにリポジトリからturtlebotのスタックを持ってくることがかかれているのだが、残念ながらやってることの中味がわからない。これについては次の投稿で。

2012年11月 7日 (水)

ROSのワークスペースをつくる

ROSのインストールは済ませた。次はワークスペースを作る作業のようだ。
ワークスペースと言ってもt単にディレクトリを作ればいいというものではないようだ。
ワークスペースディレクトリをユーザーのホームディレクトリの下に作り、それがROSがインストールされているディレクトリの中にあるかのように設定することになる。ROSではこうやって作ったワークスペースをオーバーレイと呼ぶらしい。

この設定を手動でやるのは大変なのでroswsというワークスペースに対するコマンドが用意されている。下記のコマンドでhomeディレクトリの下にfuerte_Workspaceというオーバーレイを作る。

rosws init ~/fuerte_workspace /opt/ros/fuerte

次にbashシェルにこのオーバレイを登録するため(だと思うが)このコマンドを実行する。

source ~/fuerte_workspace/setup.bash

これで、このワークスペースにROSをインストールした/opt/ros/fuerteにあるpackege(ROS上で走るアプリケーションファイル?)があるかのように設定されたらしい。

とりあえず今日はここまで。

2012年11月 5日 (月)

ROSをインストールする

いよいよROS本体のインストールをする。これからはROS.orgだよりの作業だ。非公式日本語サイトもあるようだが内容がやや古いようなので、本家のサイトにしたがって作業した。

インストールするバージョンはFuerteである。例によって何と読むのか分からない。調べてみると「フェルテ」でいいようだ。音書きしなくてはいけない時にはそれでいこう。

インストールはインストーラをダウンロードするのではなく、ネットから必要なファイルを選んでインストールしていく。
作業はコマンドラインで行うので、「端末」アプリを開いておく。余談になるが、僕は98年くらいに、会社に納品された機器のPC linuxをインストールした以外、UNIXに触ったことはない。ディレクトリ構成とか基礎的なコマンドの知識しかないわけだ。これは大変なことになりそうだ。

まずはUbintu1204用のROSのリポジトリを指定する。(わかったような書き方だが「リポジトリ」という言葉を使うのは初めてだ)

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'

次に「鍵」を追加する。現時点ではこれは何だかわからない。谷崎潤一郎とは関係ないのは確かだが。

wget http://packages.ros.org/ros.key -O - | sudo apt-key add -

インストールまえに、リポジトリがあるROS.orgの最新のインデックスを取得する。

sudo apt-get update

いよいよインストールだが、いろいろなインストールオプションがあるらしい。ここではお勧め(Recommended)のDesktop-Full Installをチョイスした。

sudo apt-get install ros-fuerte-desktop-full

これを実行すると、様々なファイルのダウンロードと展開が自動的に行われる。しばらく時間がかかる。コマンドプロンプトが表示されたら終了だ。
これで、 ROS, rx, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception がインストールされたことになる。内容はよく分からないが、とにかくお勧め版だ。

次にbush.shellを開く度にsetup.bashでROSの環境変数を取り込むために下記を実行する。

echo "source /opt/ros/fuerte/setup.bash" >> ~/.bashrc . ~/.bashrc

最後にrosパッケージやスタックのソースツリーをダウンロードするのに便利なrosinstallと、なにやらシステムに依存する何かをダウンロードするのに便利なrosdepをインストールする。これもまだよく分からないがとりあえずやっておく。

sudo apt-get install python-rosinstall python-rosdep

これでインストールは終わりだ。
一旦ログアウトして再度ログインし端末を開き直す。これでROSの環境変数が有効になるはず。

echo $ROS_PACKAGE_PATH

とやるとこんなのが返ってくると思う。

/opt/ros/fuerte/share:/opt/ros/fuerte/stacks

実際にやってみると、ここまではスムーズだ。

2012年11月 4日 (日)

Ubuntuをインストールする

UbuntuはこのページからDesktop版、12.04をダウンロードする。32bit版がお勧めのようなので、これを選択した。あらかじめ日本語対応を謳ったパッケージもあるようだが、ROSは英語環境で培われたソフトなので、とりあえず「元祖」Ubintuをインストールすることにする。

ドネーションはしたかったが、PayPalのアカウントがないので今回はパスする。僕はなぜかPayPalとの相性が悪く、何回かアカウント作成を試したが、どういうわけか口座確認の引き落としが行われず完了できない。

ダウンロードしたファイルはDVDのisoイメージファイルなので、これをDVDに書き込む。Macで試したらなぜかエラーになって書けなかったので今回はWindows XPのフリーウェアで書き込んだ。

いつも使っているCore2 Duo搭載のパソコンのハードディスクを外し、新品のハードディスクを取り付け、これにインストールすることにする。僕のPCケースはハードディスクが簡単に換装できるので、こんな時は便利だ。

インストール自体は常識的なものだ。とくに迷うことはなくスムーズにインストールできた。
とりあえず英語版でGUIの操作を試す。メニューがスクリーン上部に表示されるところとか、画面の雰囲気とか、操作性とか、なんとなくMacOSを思わせるところがある。Macユーザーの僕には使いやすい。

試してみるうちに、やはり日本語入力ができたほうがいいことに気づいた。日本語でgoogle検索を使えないのは不便だ。ほとんど英語の情報しかないROSがらみならともかく、当たり前のUNIXの操作方法や日本語の文献を英語で検索するのはナンセンスだ。

日本語化するのはとても簡単。歯車アイコンのSystem settingsのLanguage Supportで作業すればいい。
このページがよくわかる。フォルダ名まで日本語化されると面倒なのでおそるおそるだったが、デフォルトでは英語表記のままのようだ。変更するかどうかログイン時に聞かれるが、変更なしにしておけばよい。

Ubuntuの日本語版をインストールするのとはどこが違うのか分からないが、まあ自分でやっておけば、何か問題が起こっても対応しやすいだろう。
画面はこんな感じになった。

Dscn2356

この投稿はすでにUbuntuのFirefoxで書いている。写真もデジカメからUSBで読み込んだものだ。インストールと日本語化以外は何もしていないのに、少なくともこんなブログを書くくらいのことには何の不自由もない。

次はROSのインストールだ。

2012年11月 3日 (土)

ROSを始めよう

ここのところ、僕は自分のロボット開発(というと大袈裟だが)のスタイルをどうしようか考えていた。
結論としては、ROSベースでの開発に挑戦してみることにした。こう決めた理由はいくつかある。一つには一から自作するソフトの限界を感じたことがあるが、それなら他のプラットフォームの採用も考えられる。日本生まれのOpen-RTMとかだ。ROSを選んだ一番の理由は、英文とはいえ、ネット上のリソースが多いということ、平たく言えば時流に乗るということだ。僕は昔から大樹に依るのは潔しとしないことをちっぽけな誇りとしてきたが、一匹狼が格好良いのは、はるか昔に賞味期限切れした価値観だ。

まあ、そこまで自虐的になる必要もないが、とにかく、新しいことを始めるのは気分がよいものだ。
そういうわけで立ち上げたのがこの「ROSさんお手やわらかに」というカテゴリーだ。これは公開するというよりは、僕のための作業ログやもろもろ備忘録としての性質が強い。そういうわけで文体も「である、だ」体でコンパクトにまとめている。考えてみると大学卒業以来30余年、多くの文書を「です、ます」体で書いてきている。仕事柄だれかに何かを説明する文章が多いので、どうしても話し言葉に近い文章のほうがとおりがよいからだ。久しぶりの「である、だ」体のシャープな文体も新鮮なものだ。

下記の手順で作業を進めることを考えている。

1・Ubuntuを差し替え式のハードディスクにインストールする。

2・ROSをこれにインストールする。

3・チュートリアルを試して、基本的な操作テクニックを学ぶ。

4・Roombaを自律走行させるリモートブレインを試作することで、ROSでの開発手法を学ぶ

とりあえずはここまでだ。なんとかこれは頑張りたい。
一応の納期を来年の正月休み明けに設定する。

ところで、このカテゴリのタイトルだが・・ もちろんあれだ。

次回はUbuntuをインストールする。

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