2010年9月19日日曜日

お茶注ぎロボット完成〜。

前回紹介したお茶注ぎロボットが(一応)完成したのでとりあえず動画だけ
紹介しておきます。

本当はもっといろいろやりたかったですが、もう時間がないのでここまでです。

次回以降中身を少し紹介します。



2010年9月16日木曜日

作成中のお茶くみロボットのソフト構成

現在製作中のお茶くみロボットのノード構成の設計を以下に示します。
やっつけなので、メッセージはstd_msgsを連発してしまいます。
まあ、こまられなければそれがいいんでしょうけどちょっと寂しいですね。
これまでにやってきた既存資産とオープンソースの力をいかしまくって、ROSの多対多の通信を活用して、
さらっと結合できる。
予定です。

多分世界一高機能なお茶くみロボットになるでしょう。


作ったロボットはMOM01で展示するので、万一興味をもたれた方は見にきてくださいね〜。

2010年9月10日金曜日

twitterへの書き込みをするROSノードを作成(OAuth対応)

TwitterがBasic認証締め出しために、Twitter APIを利用するために
OAuthという方法を使用しなければいけなくなりました。

なので、以前書いた記事
http://ros-robot.blogspot.com/2010/01/twitterros.html
が役に立たなくなってしまいました。

Twitter APIを再び使いたくなったので、またROSノードを作って見ました。

相変わらずへなちょこな私なので既存のライブラリを使わせていただきました。

Pythonだけあれば使える以下のライブラリが良さげでした。

http://www.techno-st.net/wiki/Python-twoauth

OAuthを利用するプログラムを書くためには、まず
http://dev.twitter.com/apps/でソフトを登録します。
そこでconsumer keyとconsumer secretを取得します。
そしてユーザにaccess_tokenとPINを取得してもらいます。
この4つの情報をつかってAPIを利用します。

なのでノードは以下のようになります。
パスワードを直接書かなくてよいので安全にはなったでしょうか。
面倒くさいですが。



#!/usr/bin/env python                                                                    

import twoauth
import roslib; roslib.load_manifest('rostwitter')
import rospy
from std_msgs.msg import String

# 以下をあらかじめ取得しておく必要がある。
consumer_key = 'HOHGOEHOGHEOHGOE'
consumer_secret = 'HOGEOGHOEHO'
access_token = 'HOGEOHGOEHOG'
access_token_secret = 'HOGEOGOEHOGHOE'

def twit(data):
    rospy.loginfo(rospy.get_name()+"I heard %s",data.data)
    twitter.status_update(data.data)

def listener():
    rospy.init_node('rostwit_server', anonymous=True)
    rospy.Subscriber("twit", String, twit)
    rospy.spin()

if __name__ == '__main__':
    twitter = twoauth.api(consumer_key, consumer_secret, access_token, access_token_secret)
    listener()

書き込みは
$ rostopic pub /twit std_msgs/String 'Tweet by ROS node test'
でやりました。


via lv1と書かれています。
lv1というのが登録したソフトの名称になります。