2011年3月28日月曜日

roshを使ってみる

みなさん震災の影響はどうでしょうか?
私のところはほとんど影響はありませんでした。
では前回の続きでroshです。

http://www.ros.org/wiki/rosh

roshはPythonインタプリタからROSにアクセスするための便利ツールです。
私の経験上、ロボットとインタプリタの相性は抜群だと思いますので、
これはかなりいい予感がします。
(作者は予想通りKen Conleyさんですね)

個人的にはPythonのインタプリタはあまり好きではありません。(っていうほど使ったことないですけど)
roshもデフォルトのインタプリタではなく、IPythonというものを使っているようです。
(IPythonではtabの補完ができたり、デバッグにも使えるみたいです。
emacsキーバインドも使えるし、これはすごいです!!Python使いには常識?)

まずroshのインストールです。
desktop-fullでインストールしてもroshは入らないようです。

$ sudo apt-get install ros-diamondback-rosh-desktop-plugins


IPythonが初めての人は ~/.ipython/ipythonrcの以下の部分を2にセットします。(プライベートシンボルを補完しないように)

readline_omit__names 2


カスタマイズしたい人はroshrcを書くこともできます。
http://www.ros.org/wiki/rosh/roshrc

私は以下のようにして動作確認しました。

予め、自作のjtalk_node、/talk (std_msgs/String)をSubscribeするノードを動かしておきます。
$ rostopic list
/rosout
/rosout_agg
/talk
という状態です。

$ rosrun rosh rosh
で起動します。

ここで、
topics.
まで入力して、Tabを押すと


In [1]: topics.
topics.rosout      topics.rosout_agg  topics.talk      

とトピック一覧が表示されます。
で、
tをタイプしてTabすると補完されて、
In [1]: topics.talk
となります。

topics.talk[0]
とすれば最新の/talkが見れます。

topics.talk(data="hoge")
とすれば、/talkに大して、std_msgs/Stringのstring dataに"hoge"をいれたものを発行できます。

これはすごい便利な予感がしますね。
rostopicでは物足りないときはこれですね。っていうかrostopicいらない?

2011年3月10日木曜日

Diamondbackのインストール

先日ROSの新しいバージョン Diamondbackがリリースされました。

さっそくインストールしてみます。

すでにROSのリポジトリをaptにいれている人は、

$ sudo apt-get update
$ sudo apt-get install ros-diamondback-desktop-full
とするととりあえず必要なものが全部入ります。


全部は入れたくないけどrx, rvizなど、ROS+便利ツールを使いたい人は、
$ sudo apt-get install ros-diamondback-desktop


ROSそのものだけを使いたい人は
$ sudo apt-get install ros-diamondback-ros-base


とすると必要なものが入ります。

私はdesktop-fullにしました。

あとはいつも通り、環境変数をセットするために、
source /opt/ros/diamondback/setup.bash
を.bashrcに追加します。

以上です。

$ rosls common_msgs
してみると、
trajectory_msgs
などが追加されていますね。

diamondbackではPCL関連のアップデートが一番アツいと思いますが、
個人的に最も興味があるのはroshです。

2011年3月9日水曜日

Robot Sound Libraries

ロボットがどんな声を発するべきか。

日本ではいわゆる「ゆっくり」ボイスで決まり?な訳ですが、
海外ではそうはいきません。

Willowがロボット用音声を提供してくれました。

http://hri.willowgarage.com/sounds/

WEBページで直接聞けるのでいろいろ試してみてください。
みなさん、どれがお好みですか?

人っぽいものから、単なる音までいろいろ揃っています。
こういったロボット用コンテンツを共有するという、非常に面白い試みだと思います。

2011年2月8日火曜日

ハンズフリー掃除機

ニコニコにもアップしてみました。

ちゃんとこっちの意図通りのツッコミが入っていて、面白いですね。
ニコニコもいいなぁ。

2011年1月30日日曜日

Kinectを使ったジェスチャ認識でルンバを操縦する

Kinectでルンバを操縦してみました。

ハードウェア接続は
Kinect =USB=> PC =Bluetooth=> Roomba
という感じです。


openni_trackerというパッケージを使ってtfのボーンを作り、
tfのデータから腰と手先位置の差分をとって似非ジェスチャ認識させています。
Kinectの目の前にいないと操縦できないのがいまいちですね。

ソースも適当ですが、
一応otl_niスタックとして上げました。
むちゃくちゃ簡単でした。

ルンバのBluetoothモジュールは@longjie0723 のFRISK Roombaを使っています。
http://orientalrobotics.blogspot.com/2011/01/friskroomba.html
非常に快適です。

2011年1月29日土曜日

オリロボ

ROSと全く無関係ですが、ちょっといい本を見つけたので紹介します。

その名もORIROBO。
オリジナルロボットではなく、折り紙ロボットの本です。



かなり詳しく折り方が書いてあります。

さっそく折ってみました!
かっちょえーー!
30分くらいかかりました。

これを切り込みなしの1枚の紙で作れるというのが衝撃的でした。

他にも武器とか、子供心をくすぐるアイテムがいくつも載っています。
これはよい。

安いサーボと組み合わせたらなんか面白いことできそうな予感がしました。

2011年1月22日土曜日

FRISK Roomba動作確認編

@longjie0723 さんにFRISK Roombaモジュールをいただきましたので、
早速動作確認させていただきました。

http://orientalrobotics.blogspot.com/2011/01/friskroomba.html



当方ホストPCがUbuntu10.04、Roomba577での動作確認になります。

まず、FRISKをうちのルンバにぶすっとさします。

この状態で以下のコマンドを打ちます。
$ hcitool scan

Scanning ...

00:01:95:09:06:0C Roomba-001
これでモジュールが正常起動していることと、MACアドレスが分かりました。



/etc/bluetooth/rfcomm.conf
を以下のように編集しました。

rfcomm0 {
        # Automatically bind the device at startup
        bind yes;

        # Bluetooth address of the device
        device 00:01:95:09:06:0C;

        # RFCOMM channel for the connection
        channel 1;

        # Description of the connection
        comment "FRISK Roomba";
}


deviceのところにさっき調べたMACアドレスを書きます。

この状態で

$ sudo /etc/init.d/bluetooth stop
$ sudo /etc/init.d/bluetooth start
して、

$ sudo rfcomm bind hci0
とします。
すると、
/dev/rfcomm0
というデバイスファイルができています。

誰でも使えるようにパーミッションをだしておきましょう。
$ sudo chmod 666 /dev/rfcomm0

あとは、これをシリアルデバイスだと思ってプログラムを走らせればOK。

$ sudo rfcomm bind hci0
は起動するたびに実行しないといけません。
/etc/rc.local
などにかきましょう。


ルンバ関係ないですが、PS3のジョイスティックが使えなくなっていたので、
/etc/init/bluetooth/main.conf
に
DisablePlugins = input
としました。
ルンバとの共存は問題ないようです。

使ったプログラムは以前作ったものをそのまんまで動きました。
無線化うれしい!
とりえあず動作確認まで。