2012年1月13日金曜日

rosjavaのチュートリアルをビルド&実行

(この記事は2011/01/19時点でのものです。現在ちゃんと動くか分かりません。rosjavaは開発が激しくついていくことが困難です。)

前回はrosjavaのインストールをしましたが、
今回はそれについてきているチュートリアルをビルド&実行します。

http://ros.org/wiki/rosjava/Tutorials/Running%20rosjava_tutorial_pubsub

前回のチュートリアルはやっておいてくださいね。

rosjavaはまだビルドが簡単じゃないです。
rosは基本的にcmakeでコンパイルしますが、javaは普通antというビルドツールを使います。rosjavaもantを使っているようです。

では、すでにrosjava_tutorial_pubsubというパッケージがあると思うので、
とりあえずビルドしましょう。

roscd rosjava_tutorial_pubsub
rosmake

ROS触ったことがある人なら意味は分かりますよね。
パッケージでrosjavaを入れてしまっている人は削除するか、ROS_PACKAGE_PATHにソースのほうが先に来るようにしないといけませんね。

では実行しましょう。まずはいつもどおりroscoreを上げます。

roscore



で、以下のようにしてtalkerを上げましょう。

rosrun rosjava_bootstrap run.py rosjava_tutorial_pubsub org.ros.tutorials.pubsub.Talker

rostopic list
すると
/rosjava_tutorial/talker
が見えますし、rostopicでちゃんとpublishされているのが分かります。
rostopic echo /chatter
data: Hello world! 1
---
data: Hello world! 2
---
data: Hello world! 3

ではlistenerも上げましょう。
rosrun rosjava_bootstrap run.py rosjava_tutorial_pubsub org.ros.tutorials.pubsub.Listener

こんな感じで表示されますね。

2012/01/12 23:56:05 org.ros.internal.node.RosoutLogger info
情報: I heard: "Hello world! 84"
2012/01/12 23:56:06 org.ros.internal.node.RosoutLogger info
情報: I heard: "Hello world! 85"
2012/01/12 23:56:07 org.ros.internal.node.RosoutLogger info
情報: I heard: "Hello world! 86"

以上で実行できました。実行方法を含め、いままでのROSとはかなりイメージ違いますね。






2012年1月12日木曜日

rosjavaインストール

この記事は古いので、rosjavaをインストールしたい方はこちらの記事を参考にしてください。
http://ros-robot.blogspot.jp/2012/07/rosjava_02.html


=== 以下古い記事 ===

思い立ってrosjavaをやることにしました。
javaはさっぱり分かりませんが、勉強します。
(javaの勉強をした人は@makingさんおすすめの本を読みましょう。
http://blog.ik.am/entry/view/id/61/title/

とりあえずAndroid(嫁ケータイ)からROSを直接しゃべるのを目標にしたいと思います。
いちおう簡単なAndroidアプリは作ってみました。
(Androidもマーケットに出すには数千円かかるんですね・・・。)

では本題です。

まずはインストールです。
以下を参考にします。

http://ros.org/wiki/rosjava/Tutorials/Install

このチュートリアルによると、rosjavaは開発が盛んだからソースから入れてね。
って書いて有ります。electricにもrosjavaパッケージはありますが、やはりソースから入れましょう。
ベースとなるROSとしてunstableかelectricのインストールが必須です。
私はelectricでやります。

環境変数ROS_PACKAGE_PATHが通った場所で以下のようにします。


hg clone https://code.googlecode.com/p/rosjava rosjava_core

するとrosjava_coreスタックができます。hgコマンドがない、というひとはmercurialを入れましょう。

一応これでインストールはOKです。

makeとかビルドするパッケージでrosmakeでやるので必要ありません。

2011年12月31日土曜日

よいお年を!


あと2時間ほどで2011年もおしまいです。

2010年ほどは記事を書けませんで、ここの情報も古いものとなりつつありますが、
来年もほそぼそと続けていくつもりですのでよろしくお願いします。

少なくとも以下のリリース時には記事を書きたいですね〜。

来年もよろしくお願いします!!

Fuerte Turtle (Mar 2012) (フォルテタートル)

  • Ubuntu Lucid
  • Ubuntu Oneiric
  • Ubuntu Precise
  • C++03
  • Boost 1.40
  • Lisp SBCL 1.0.x
  • Python 2.6

Groovy Galapagos (Aug 2012) (グルーヴィーガラパゴス)

  • Ubuntu Oneiric
  • Ubuntu P
  • System libraries TBD

2011年12月23日金曜日

RTミドルウェアコンテスト行ってきた

本日(2011年12月23日)に行われたRTミドルウェアコンテストに
完全に僭越ながら審査員として行ってきました!

みんなスーツの中、私は仕事じゃないので私服で審査してきました。
結果は公式に任せるとして、非常に楽しくすごさせていただきました。

RTミドルウェアとROSはいわばライバル関係で、
日本人でありながら何故かその敵側を応援?しちゃっている私ですが、
みなさん暖かく迎えてくださいました。

全体的な印象としては

  • ysugaさんすげー
  • 暖かく、いい雰囲気(使ってくれてありがとう、という人が多い)
  • 教育や学生の発表が多い
  • みんなWindowsが好き
  • ドキュメントが超丁寧


このブログらしきことを書くと、いくつかROSに似たコンセプトのものがありました。




「移動ロボットのソフトウェア開発のための屋内環境シミュレータRTC」
www.openrtm.org/openrtm/ja/project/RTMContest2011_1115
これはstageっぽい。人もシミュレーションに入れられるところが違う。

ysugaさんの
「RTno (汎用マイコンボードarduinoでRTコンポーネント対応デバイスを作るためのライブラリ)」
これも同じようなコンセプトのものがROSにあります。


「初心者向けシステム開発支援用RTC」
これはまるっきりrxplotです。
データをオンラインでグラフ化してくれます。

RTMはとっつきにくい、といっている方が何人かいました。
ROSの方がシンプルなので始めるのは少しは簡単かもしれないと思いました。

RTMの審査員をやってみて思ったのは、ROSとの比較で言うと、
  • 依存関係を考慮した配布・ビルド方法がもう少し楽になるといいと思う。rospack・rosmake・rosdepは非常に強力。
  • 自動生成したソースやら、すべてを1つのフォルダに入れて配っている人がいる気がする。もう少しソースの配置とかのルールを決めたほうがいいと思う。
  • RTC以外でライブラリを配る文化がもっと欲しい。PCLも最初はROSだったけど今はROSを切り離した。
  • ROSはドキュメントはプロむけ。RTMは親切過ぎないか心配。インストールや使い方はむつかしすぎるのをドキュメントでカバーしようとし過ぎなのかも?




なんにせよ、日本のロボット界ではソースを配る文化がなかったから、それを大幅に改善したRTミドルウェアプロジェクトの貢献は大きいと思った。

以上偉そうに好き勝手書きました。
誤解・間違い等あると思いますので、コメントください。


2011年12月9日金曜日

テレプレゼンスロボットの作り方

Makeに持っていったロボットの中身を軽く紹介しようと思います。

まず全体構成は↓のようになっています。
基本的にいままでつくってきたノードをrosbridgeでブラウザから動かしています。

roombaは前に自作したotl_roombaパッケージのもの、lv2_armはアーム用に作ったノード、usb_camはboshのもの、battery_checkerはこの前紹介したノードでPCのバッテリーチェックをします。jtalk_nodeは日本語をしゃべるノードです。
いずれも公開済みです。

ブラウザでアクセスすると以下のように表示されます。
ぐるぐるのところでルンバの速度を出力、スライダやボタンでロボットのカメラ操作、
バッテリ残量を右上のアイコンで表示(@tera_kojiさんに作ってもらいました)、
テキストボックスに文字を書くとロボットがしゃべってくれます。
画面の上には大きくカメラ動画が流れます。
javascript/HTML5で動的なページにしています。
HTMLやjavascriptにはまったく詳しくないので苦労しました。


rosbridgeはsocketやwebsocketでROSプロトコルをしゃべってくれるサーバーで、javascriptからROSを簡単に使えます。
rosbridgeはsubversionの最新版がおすすめです。安定版だとfirefoxだとうまく動きません。

画像を動画で表示する方法は、

HTMLに以下のように書いて、


  <img src="img/camera_dummy.jpg" name="camera" width="320" height="240"/>


javascriptに以下のような感じで書きます。


    connection.addHandler('/usb_cam/image_raw',
                          function(msg) {
                            document.camera.src=msg.uri;
                          });

これだけで/usb_cam/image_rawがガンガン送られてくれば動画になります。

まあ、そんな感じです。


例によって以下のリポジトリにおいておきました。整理もしていないので見せられる状態にないですが、ジョイスティックの部分とか、出せるように整理したいです。

2011年12月8日木曜日

Make Tokyo Meeting 07ありがとう

Make Tokyo Meeting 07通称MTM07の出展が無事終わりました。

このblogの読者に直にあえてうれしかったです。
PCの前からロボットを動かしてくださったみなさん、ありがとうございました。
(完成度が低くて申し訳ないです)

FRISK Roombaも買っていただきありがとうございました。
(快く一緒に参加してくださった@longjie0723さんありがとうございました!)
http://orientalrobotics.blogspot.com/2011/12/mtm07.html

紹介記事がありますので紹介します。
http://ascii.jp/elem/000/000/654/654252/index-6.html

Makeは本当に面白いプロジェクトがいっぱいで、すごく刺激になり、楽しい2日間でした。
ゆっくり見てまわるのもいいけど、また出たいな。

2011年12月3日土曜日

MTM07参加中!

Make Tokyo Meeting 参加中!!
にてロボット遠隔操作&Makeの体験ができるぞ!