忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[21]  [22]  [23]  [24]  [25]  [26]  [27]  [28]  [29]  [30]  [31
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

そういえばID通知のメールが来てから一カ月ぐらい経つのですが未だに他の作品が投稿されてません。
前参加したときこんなんだったけ?


何故か最近プロジェクトページへのアクセスがそれなりに好調です。
実のところOpenRTM-aistの公式サイトRTMコンテストのページには作品一覧のページへのリンクが存在しないので、僕のプロジェクトページを見るにはこのブログかTwitterかあるいは検索してたまたま辿り着くかしかありません。
このブログにはほとんど人は来ませんし、Twitterで#openrtmで検索した場合でもかなり下の方に来るぐらい時間も経ってるので、入口がないのに何故か人が来るという不可思議な現象に困惑しています。なおコメントも評価も付かない模様。人間が来ているとは限らないですからね。



今回は前々から気になっていたのでRTシステムエディタ on the Webがどのような処理をしているか調べてみました。

ただし、僕はWebプログラミングは素人なのであまり参考にしない事をお勧めします。



そのためにはXMLHTTPRequestについて知っておく必要があります。
XMLHTTPRequestとはJavaScript等でHTTP通信するためのAPIらしいです。
このサイトに詳しく書いてあるので参考になります。

通常CGIを利用する場合にボタンを押すなどしてCGIの処理を行いたい場合ページが遷移するわけですが、JavaScriptでXMLHTTPRequestを利用するとページを読み込むことなくCGIの処理を行い結果を取得できます。


簡単なプログラムで実験してみます。
ボタンを押すとJavaScriptの関数を実行するようにHTMLファイルに記述してください。

<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="js/test.js"></script>
</head>
<body>
<input type="button" name="test" value="test" onClick="test();">
</body>
</html>
これでtest.jsファイルのtest()という関数が実行されます。

次にtest.jsの編集をします。

function test(){
  
  var obj=new XMLHttpRequest();
  obj.onreadystatechange = function(){
    if (obj.readyState == 4 && obj.status == 200){
      alert(obj.responseText);
      
    }
  }
  obj.open("POST", "/cgi-bin/test.py", true);
  obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  obj.send(null);
  
  
  
}



見ての通りtest.pyというCGIと通信します。

正直全然見たことない関数だらけなので一応メモ程度に説明を書いておきます。
onreadystatechange

XHR通信の状態が変化するたびに実行される関数を指定

readyState

XHR通信の状態
4は通信完了
200はリクエスト完了

open

アクセス先のURLの設定
引数はHTTPメソッド、アクセス先のURL、非同期実行か

setRequestHeader

HTTP要求ヘッダの指定

send

送信開始
引数は送信データ




最後にtest.pyの編集をやります。
if __name__ == '__main__':
  print "Content-type: text/html;charset=utf-8"
  print ""
  print "test"
とりあえずこのように適当な文字列を送信します。


それからCGIを使うにはWebサーバーを立ち上げる必要があるのでtestserver.pyというファイルを作成して以下を記述してください。

import CGIHTTPServer
 
if __name__ == "__main__":
    CGIHTTPServer.test()



そして適当にフォルダを作成して以下の配置にしてください。

test.html
testserver.py
js
- test.js
cgi-bin
- test.py


実験してみます。
まずはtestserver.pyを実行してサーバーを起動します。

次にWebブラウザから以下のURLを入力して移動してください。


http://localhost:8000/test.html 


そして表示されたボタンを押して"test"と表示されれば成功です。





ページの読み込みがないのは便利ですね。簡単にCGIを利用できます。


後はrtctree等を使ってRTCを操作するプログラムを書けば良いと思います。












にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
よくわからないですけど、OpenRTM-aist-1.1.1のリリースは昨日じゃなかったみたいです。
このページにそんな感じの事を書いてあるのですが、暫定的に書いてあるだけだったみたいです。




今回の記事は1.1.1をインストールして簡単なRTCを作ったりして何か書こうかと思ったのですが、出来なくなったので書くことがありません。


とりあえず、Pythonで文字コードの変換をするRTCを作成したのでこれの紹介でもしておきます。

このページにソースコードがあります。

EncodeData.pyを起動すると以下のデータポートを持つRTCが起動します。
  • StringIn(DataInPort,、TimedString型)
  • WStringIn(DataInPort,、TimedWString型)
  • StringOut(DataOutPort,、TimedString型)
  • WStringOut(DataOutPort,、TimedWString型)
そして以下のコンフィギュレーションパラメータを持っています。
  • InputCode
  • OutputCode
以下の処理を行います。
  • StringInで読み込んだ文字列をInputCodeで指定した文字コードからUnicodeに変換
  • Unicodeに変換した文字列をWStringOutから出力
  • Unicodeに変換した文字列をOutputCodeで指定した文字コードでエンコードしてStringOutから出力
  • WStringInで読み込んだ文字列をWStringOutから出力
  • WStringInで読み込んだ文字列をOutputCodeに指定した文字コードでエンコードしてStringOutから出力
EncodeSeqData.pyはデータがシーケンス型になっただけです。
簡単なテストをする時に役立つかもしれないので気が向いたら使ってください。



ただ本格的なシステムで使うならRTMコンテスト2013の作品に含まれているUTF08_changerというRTCを使った方が良いでしょう。
僕のは書くことがなくなったからと30分ぐらいで作ったやっつけのプログラムなので。

ただ、例えばUTF08_changerはWindows APIを使っているのでLinuxで使いたいとか、WStringも変換して出力したいとか、そちらで変換前、変換後の文字コードを指定したいとかいう場合は僕が作った方を使ってもよいですが、余程の理由がない限りあちらを使用した方が良いとは思います。プロジェクトページのコメント欄でも絶賛されていますし。僕もこんなこと言われてみたいです。


にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
明日OpenRTM-aist-1.1.1がリリースされるとかされないとかなので少し楽しみです。
よくよく考えてみたら1.1.1-Releaseの公開が近いのに、このタイミングでRTMコンテストの作品投稿をする人なんていないか。皆さん1.1.1-Releaseに対応させてくると思いますから。



それにしてもコメントが付かない。何回言うんだ
そろそろTwitterで宣伝した効果も切れてるみたいなので詰んでいるような気がします。
協力してくれそうな知り合いもいないのでプロジェクトページにアクセスしてくれた誰かに頼るしかないのですが、このままではベストサポート賞とかは厳しいですね。


他の作品が投稿され始めたら見に来る人も増えるかもしれませんし、他の参加者がコメントをくれるかもしれないのでそれに期待するしかなさそうです。ちょっとぐらい自分の作品に費やす時間を削って協力してくれてもいいじゃないですか。なんでだ




そういえばUbuntuにOpenRTM-aist-Pythonをインストールする場合、PPAを使えば簡単にインストールできるらしい。ソースからビルドするのが普通の方法だと思ってました。これでOpenOfficeのRTCをUbuntuで使う時のハードルが下がります。マニュアルにもPPAによるインストールを追記しておきました。
こういうことは言われないと知らない事も多いので、何か有用な情報のある人は教えていただけると助かります。









にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
以前立てた目標を変更します。
  1. 全参加者の中で一番最初に作品投稿を行う(達成済み)
  2. プロジェクトのページにコメントを3つ2つ以上貰う(ソースコード、マニュアルがどこにあるかわからないといったコメントはノーカウント)+自分で書いた返信コメントもカウント+別アカウントによる自作自演もあり
  3. 賞を2つ以上貰う
このぐらいがちょうどいいと思います。最初の見通しが甘すぎました。




そういえばいつぞやかの記事で「PACKAGEというプロジェクトをビルドしてできるMSIインストーラーで配布している人はあまりいない」と書きましたが、よく考えてみれば相当数のRTCが単体ではなくRTC群という形で公開されているのであまり使われていない印象なのだと思いました。個別でインストールするのは非常に面倒ですからね。
そういう場合は自分でwxsファイルを作成して一括でインストールできるインストーラーを作成する必要がありそうです。面倒ならWixEditを使うのも良いでしょう。
以前の記事で書きましたが、やはりインストーラーを作ってほしいです。
もしくは付属の実行ファイルなりバッチファイルなりを起動するだけで動作できるとか。
勝手な意見なのはわかっていますが、他に20件ぐらい作品があると考えるとCMakeからビルドするのはしんどいです。
趣旨とずれているかもしれませんが、「自分の作ったものをアピールしたい」ではなくて「自分の作ったものを使ってほしい」という気持ちで公開してほしいです。なぜなら僕が使ってみたいからです。
依存ソフトウェアのインストールも含めて10分以内に動作確認できるのが理想だと思います。
というわけでOpennRTM-aistを10分で始めようみたいに10分以内に動作できるような作品を目指して頑張ってください。



・・・お前が頑張れよとか突っ込まれてそうなのですが、前述したように僕が使ってみたいので動作までを容易にしてほしいと言っているだけです。
僕は自分で作ったRTCは使いこなせているので必要ありません。


さすがにそれは傍若無人なので30分以内を目指して頑張ります。皆さんは10分以内を目指してください。




バイナリで配布するとなるとライセンスが問題になりそうですね。
正直僕もよく理解していないのですが再配布についていろいろ書いていきます。
OpenRTM-aistはLGPLなので条件を満たしていれば再配布は大丈夫なのですが、ライセンス次第ではできないこともあるので注意してください。
omniORBのライセンスはライブラリがLGPL、ツールがGPLとなっているようです。
ツールはomniidlとかの事だと思うので、RTCを再配布する人はライブラリのLGPLだけ気にすれば良いと思います。
ただし、OpenRTM-aistのページにも書いてありますが動的リンクしている場合はライセンスは自由に決めていいようです。
これが静的リンクなり再配布なりをしてしまうとLGPL感染するのでソースコードの開示等を行わなくてはなりません。
一方GPLライセンスのライブラリに動的リンクした場合ですが、調べたところ扱いがはっきりしないらしいです。
とりあえず不都合がなければGPLにしておけば安全だとは思いますが、よくわかりません。GPLのライブラリを使用したら自分のソフトウェアもGPLにしなければならないのでどうも嫌っている人は多いみたいです。
ただ動的リンクにも暗黙的リンクと明示的リンクがあるわけで、暗黙的リンクの場合はGPLになるかもしれないのはわかるのですが、明示的リンクの場合はどちらになるのかよくわかりません。詳しい人は教えてください。
ライセンスについてわかりやすくまとめてあるサイトがあったので、とりあえずこのページを読んで勉強してみます。

とりあえずRTCで使われそうなライブラリのライセンスを書いておきます。
  • OpenRTM-aist:LGPLと個別契約のデュアルライセンス
  • RTSystemEditor, RTCBuilder:EPLと個別契約のデュアルライセンス
  • rtshell,rtctree:EPL
  • OpenCV:BSD
  • Choreonoid:LGPL
  • OpenHRP3:EPL
  • RTno:RTnoがLGPL、RTnoProxyはGPL
  • OpenHRI:EPL
  • Open Dynamics Engine:BSD
  • Ogre3D:MIT
  • Python:PSFL
このサイトを見る限りBSDやMITライセンスが緩そうなので、特別な理由が無ければ緩いライセンスで配布してください。





にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
とりあえずマニュアルを見直しています。

何というか書くことが特にないのでOpenOfficeを操作するRTCの作り方を書いておこうと思います。

まずはRTC Builderで適当にPythonのコードを生成してください。
そして一部のコードを変更します。
sys.path.append(".")の次の行あたりに、

Windowsの場合

sys.path += ['C:\\Python26\\lib\\site-packages', 'C:\\Python26\\Lib\\site-packages\\OpenRTM_aist\\RTM_IDL']

Ubuntuの場合

sys.path += ['/usr/lib/python2.6/dist-packages']

を追加してください。ただし、Apache OpenOffice 4系、LibreOffice 3.5を使用している場合はPython26、python2.6の部分をPython27、python2.7に変更してください。
ここで指定したPythonにOpenRTM-aist-Pythonがインストールされていない場合動作できません。
後で使うのでimport osも追加しておいてください。

そしてmain関数のmgr = OpenRTM_aist.Manager.init(sys.argv)を以下のように変更してください。

mgr = OpenRTM_aist.Manager.init([os.path.abspath(__file__), '-f', '.\\rtc.conf'])

3番目の引数でrtc.confの場所を指定しています。rtc.confの存在するパスを記述してください。

最後にmgr.runManager()を以下のように書き換えてください。

mgr.runManager(True)

こうしないとrunManagerで処理をブロックするのでOpenOfficeがフリーズします。


次に作成したファイルを以下に配置してください。



WIndows

Apache OpenOffice 3.41の場合
C:\Users\ユーザー名\AppData\Roaming\OpenOffice.org\3\user\Scripts\Python

Apache OpenOffice 4.11の場合
C:\Users\ユーザー名\AppData\Roaming\OpenOffice\4\user\Scripts\Python


Ubuntu

OpenOffice.org 3.2の場合
~/.openoffice.org/3/user/Scripts/Python

LibreOffice 3.5の場合
~/.config/libreoffice/3/user/Scripts/Python


Scripts、Pythonフォルダがない場合は作成してください。
またAppData、.openoffice.org、.configは隠しフォルダになっているので注意してください。



それでとりあえずどれでもいいですがCalcを起動してツール→マクロ→マクロの実行を選択してください。


マクロセレクターのマイマクロの中にある先ほど作成したファイル名を選択してください。
そしてマクロ名でmainを選択して実行ボタンを押します。

これでRT System Editorを確認してRTCが起動できていればOKです。
あとはRTCのロジックにOpenOfficeを操作するプログラムを書けばいろいろできるようになります。


どのようなコードを書けばCalcでセルの値を変更できるかなどは他に詳しいサイトがあるので省略します。例えばこのサイトなんて詳しく書いてあるのでとても参考になります。

ただ一つだけ注意点がありましてApache OpenOffice 4.0以降、LibreOffice 4.0以降ではUNOの一部の関数が変更されています。
createMessageBoxと言うメッセージボックス作成の関数なのですが引数が5つから4つに減っています。以前のバージョンに合わせて作成されたプログラムの場合、2番目の引数を消すだけで4.0以降のバージョンでも動作できるようになるのでそうしてください。













にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
カレンダー
10 2024/11 12
S M T W T F S
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
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
36
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]