=================================================
軌道補間コンポーネント version 1.0 2011/06/30
東京大学　情報理工学系研究科　情報システム工学室　次世代プロジェクト担当
Mail: ipngr@jsk.t.u-tokyo.ac.jp
=================================================

-----概要-----

confに書かれた関節に関してサービスポートから指示された目標関節値、目標
時間に対して躍度最小補間により軌道の補間を行うコンポーネントです。


-----コンポーネント動作に必要なパッケージ-----

EusLisp用RTMインタフェースrtmeusが必要です．
rtmeusに関しては、http://code.google.com/p/rtmeus/ にて一般公開してお
ります。そちらからダウンロード、インストールしてください。

OpenRTM-aist1.0-ReleaseのインストールされたUbuntu10.04環境にて動作確認
を行っております。

また、EusLispが無くても動作しますが、EusLispから接続することを想定して
各種のインタフェースを整えておりますので、EusLispをインストールを推奨します。

EusLispは
http://sourceforge.net/apps/mediawiki/jskeus/
からダウンロード、インストールできます。

-----コンポーネント動作に必要な設定情報-----

本ディレクトリにおいてMakefileの以下の変数を適切に設定して下さい。

RTMEUSDIR = $(CVSDIR)/rtmeus

尚、この環境変数はrtmeusを正しくインストールしていれば、~/.bashrc.rtm
に書き出されているはずです。

上記作業後、

% make
を実行してください。すると、直下にbuildディレクトリが作成されます。
実行ファイルは build/bin以下にありますので、

% ./build/bin/SeqComp

としてコンポーネントを起動したのちにRTSystemEditor等でアクティベート
してご利用ください。

また、CORBAの設定は実行ファイルと同じ場所にあるrtc.conf、コンポーネン
トの設定は実行ファイルと同じ場所にあるSeqTest.confを修正することにより
反映されます。

-----コンポーネントの入出力-----

-- InPort 
*TimedStateSet input

rtmeusで定義されている構造体です。参照する関節角度センサを入力してくだ
さい。

-- OutPort

*TimedStateSet output

rtmeusで定義されている構造体です。補間された関節角度列がtargetという名
前で出力されます。

-- ServicePort

* StateService

rtmeusを利用することでEusLispから補間された間接角度を確認することがで
きます。

* CommandService

EusLisp側から以下のような関数を用意しておくことで、関節角度をコマンド
として送ることができます。尚、ここでは、seqという変数にSeqCompが名前解
決されてbindされているとします。

(defun angle-vector
   (&optional angle (time 500) &key (overwrite nil)(method "minjerk")
   (sequencer "sequence0"))
   (let ((sendcmd (make-string-output-stream)))
     (if (and angle (vectorp angle))
         (progn
           (format sendcmd "~A 1" sequencer)
           (dotimes (i (length angle)) (format sendcmd " ~A" (elt
   angle i)))
           (format sendcmd " ~A" time)
           (send seq :command :set-anglevectortimelist
   (get-output-stream-string sendcmd))
           (send seq :command :angle-vector (format nil "~A ~A ~A"
   sequencer method overwrite))
           )
         )
     )
   )


-----設定ファイル-----

SeqTest.confは以下のように記述してください。

Seq0.sequence0.target.in: potentio
Seq0.sequence0.target.default.type: FLOATSEQ
Seq0.sequence0.target.data.motor1
Seq0.sequence0.target.data.motor2
Seq0.sequence0.target.data.motor3
Seq0.sequence0.target.data.motor4

まず、Seq0.sequence0.target.inには、入力されたTimedStateSetの中の関節
角度センサを示すstate名を記述します。続いて、
Seq0.sequence0.target.default.typeには、データ型を記述します。通常は、
FLOATSEQあるいはDOUBLESEQが想定されています。これらの後に、
Seq0.sequence0.target.data.関節固有名
という形で関節の数だけ書いてください。

-----ライセンス-----

本ソフトウェアは new BSD License に基づき配布されます．
詳しくはLICENSE.txtファイルをご覧ください．

