2011年8月16日火曜日

続OpenRTM-aist

引き続きOpenRTMのサンプルを試してみました。
移動ロボットを仮想ジョイパッドで動かすことができます。




やっぱりかなりハマりました。
でも↓のサイトにだいたい書いてあります。
非常に参考になりました。
http://code.google.com/p/rtm-ros-robotics/wiki/RTM_2DSimulator_Example


とくに
$ sudo apt-get install tix
とか、実はバグがあるとか、ハマりどころを押さえていますね。

公式ドキュメントもアップデートしていただきたい所です。

2011年8月11日木曜日

OpenRTM-aistのインストール(自分用メモ)

日本で唯一OpenRTMではなくROS陣営と思われている(?)私ですが、
Electricがリリースされるまでネタがないので、
たまにはOpenRTMやってみようと思いました。
以下はメモ書きみたいなものです。

OpenRTMはまずこれやれ、っていうのがあったら教えてください。
ルンバをOpenRTMで動かせるか教えてください。


OpenRTM-aist 1.00(C++) on Ubuntu 10.04です。

http://www.openrtm.org/openrtm/ja/node/1001
に従いインストールしてみます。

OpenRTMはysugaさんが紹介していますね。

http://ysuga.net/robot/rtm

1.source.listの編集

/etc/apt/source.list.d/openrtm.list
に

deb http://www.openrtm.org/pub/Linux/ubuntu lucid main
を追加。

2.インストール

2.1.C++版インストール

以下のようにしてみました。成功したけど、これで動くかな。
$ sudo apt-get update

$ sudo apt-get install gcc g++ make uuid-dev
$ sudo apt-get install libomniorb4-dev omniidl4 ominiorb4-nameserver
$ sudo apt-get install openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example
(公式どおりやると以下のようにエラーがでました。
$ apt-get install libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ libomniorb4 が見つかりません)
2.2.Python版インストール
Python版もいれてしまいましょう。
# apt-get install python-omniorb2-omg omniidl4-python
# apt-get install openrtm-aist-python openrtm-aist-python-example
2.3.Eclipseとツールのインストール
全部入りをダウンロードします。
$ tar zxvf eclipse342_rtmtools100release_linux_ja.tar.gz
$ cd eclipse
$ ./eclipse
で起動。
3.動作確認
次に何やればいいかわからなかったけどぐぐったらでました。
http://openrtm.org/openrtm/ja/content/%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D-linux%E7%B7%A8
3.1.ネームサーバの起動
$ rtm-naming
3.2 コンフィグ作成
$ mkdir ~/RTCwork
$ cd ~/RTCwork
して、以下の内容でrtc.confを作成.最初のnameserversのところはlocalhostでは動きませんでした。ipv6のせいだそうです。
corba.nameservers: 127.0.0.1
 naming.formats: %h.host_cxt/%n.rtc
 logger.enable: NO
 example.ConsoleOut.config_file: consout.conf
 example.ConsoleIn.config_file: consin.conf

3.3。サンプル実行

以下のようにしてインストールされているサンプルを実行

インプット側。
$ cd ~/RTCwork

$ /usr/share/OpenRTM-aist/examples/ConsoleInComp -f rtc.conf 

アウトプット側。
$ cd ~/RTCwork
$ /usr/share/OpenRTM-aist/examples/ConsoleOutComp -f rtc.conf 
(公式はexampsになっているので注意。)
また、必ずcd ~/RTCworkしてください。

あとはEclipseのSystemEditorから接続すればOK!
できたーーー!!

最後めっちゃ端折りましたが、SystemEditorが全く動かなくて困りました。
が、実はrtc.confにlocalhostと書いていたのが原因でした。

うーん疲れた。

PR2 SE発表

Willow Garageの新しいロボットPR2 SEが発表されました。

http://www.willowgarage.com/blog/2011/08/10/announcing-pr2se

新しい、といってもPR2のアームが1本になって安くなっただけです。
でもセンサも新しくなるようです。Kinect搭載かな?

気になるお値段は $285,000 = 約2200万円!
オープンソースへの貢献をすれば3割引なので、
1500万円で買えます。
たしかPR2は$400,000だから、まあまあお得ですね。
これは個人でも手が届く範囲ですね!

って全然無理だな。。。

研究機関ならがんばれば買えるのかな。。。

2011年7月13日水曜日

ARDroneとルンバを同時にPS3のコントローラで動かす

AR.Droneとルンバを1つのPS3のジョイパッドから同時にうごかしてみました。
ROSのPub/Subを利用した楽しい例だと思います。


前回紹介したardrone_brownノードと、昔作ったルンバ用のプログラムを組み合わせたら簡単にできました。
ルンバの掃除開始と同期してヘリが飛び立ったら面白いと思い、掃除機のモータ指令メッセージ(Bool型)をardroneのEmpty型へ変換して送信するノードを作りました。
これによりルンバへの速度指令と、掃除開始(離陸)、終了(着陸)が同時にAR.Droneに送られるようになります。

ノードとトピックは↓のような感じ。


メッセージ変換のコードは↓のような感じです。

#!/usr/bin/env python
import roslib
roslib.load_manifest('otl_msgconverter')
import rospy
from std_msgs.msg import Bool
from std_msgs.msg import Empty
class BoolMsg2EmpyMsg():
    """ convert bool msg to empy msg
    """
    def __init__(self, bool_topic, true_topic, false_topic):
        self._bool_topic = bool_topic
        self._true_topic = true_topic
        self._false_topic = false_topic
    def callback(self, bool_value):
        msg = Empty()
        if (bool_value.data):
            self._true_pub.publish(msg)
        else:
            self._false_pub.publish(msg)
    def init(self):
        self._true_pub = rospy.Publisher(self._true_topic, Empty)
        self._false_pub = rospy.Publisher(self._false_topic, Empty)
        self._sub = rospy.Subscriber(self._bool_topic, Bool, self.callback)
if __name__=='__main__':
    rospy.init_node('otl_bool2empty')
    obj = BoolMsg2EmpyMsg('input', 'true', 'false')
    obj.init()
    rospy.spin()
ヘリは迫力があっていいですね。
着陸も成功させたかった!

ARDroneをROSで動かす

ARDroneというヘリがあります。
3万弱でカメラ2つついていて、iPhoneで動かせちゃうすごいヘリです。
しかもSDKがついていてPCやiPhone, Android等で自由にプログラミングできます。

これがROSから簡単に使えるようになっているので紹介します。

http://code.google.com/p/brown-ros-pkg/wiki/ardrone_brown

前回紹介したbrown-ros-pkgです。
ただしまだaptでは入れられないのでソースからです。

【インストール】
$ svn checkout http://brown-ros-pkg.googlecode.com/svn/trunk/experimental/ardrone_brown
$ cd ardrone_brown
$ ./build_sdk.sh
$ rosmake
$ cmake .
$ make
(Makefileのcommit忘れかな?)

【実行】
$ rosrun ardrone_brown ardrone_driver

【離陸】

$ rostopic pub /ardrone/takeoff std_msgs/Empty

【着陸】

$ rostopic pub /ardrone/land std_msgs/Empty

あとは/cmd_velに速度を入力すれば思い通りに動きます。

【カメラ画像の表示】もできますよ。
$ rosrun image_view image_view image:=/ardrone/image_raw


ドキュメントにないけど、
$ rostopic pub /ardrone/togglecam std_msgs/Empty
すると、フロントカメラと、下向きかめらとフロントの合成、との切り替えができます。

という感じでいつものROSっぽく動かすことができます。

2011年7月11日月曜日

ROSリポジトリドメイン変更

Kenさんからメーリスに以下のようなメールがきていました。

要するに、Ubuntuユーザはaptラインにcode.ros.orgの代わりにpakcages.ros.org/ros/ubuntuを使ってね。ということ見たいです。
今はcode.ros.orgも使えるけど、
diamondbackの次のリリース(Electric)からはもう使えないからね。
ってことみたいです。

要チェックです。

For Diamondback, we switched our main debian package source to be
http://packages.ros.org/ros/ubuntu .  We made this shift due to load
issues.  We have been mirroring the old code.ros.org source, but this
mirroring is not in place for the upcoming Electric release.

In order to ensure that you will be able to receive the Electric
update properly, we recommend that you go ahead and migrate your
/etc/apt/sources.list.d/ros-latest.list file to use:

http://packages.ros.org/ros/ubuntu

instead of:

http://code.ros.org/packages/ros/ubuntu

2011年7月10日日曜日

brown-ros-pkgがapt-getできる

ブラウン大学のROSのリポジトリがbrown-ros-pkgです。
willow管理のリポジトリ以外はapt-getじゃなくてソースを持ってきてインストールするもの、
と思っていましたが、brown-ros-pkgはいくつかちゃんとリリースされて、
apt-getで入るようになっているんですね。

リリースされているのは

  • brown_drivers
  • brown_perception
  • brown_remotelab
の3つのスタックで、
それぞれ、
  • irobot_create_2_1 (ルンバドライバ)
  • gscam (gstreamerべーすのカメラドライバ)
  • rosbridge/pr2_keyboard_teleoperator/teleop_twist_keyboard
がパッケージとして入っています。

インストールするには

$ sudo apt-get install ros-diamondback-brown-drivers
とか、
$ sudo apt-get install ros-diamondback-brown-remotelab
とかすると入ります。
楽チン。

brown-perceptionは何故か見つかりませんでした。

$ sudo apt-get install ros-diamondback-otl-drivers
とかできる日がいつかくるのか!

ムネアツです。