コア: チケット
https://www.openrtm.org/redmine/
https://www.openrtm.org/redmine/redmine/favicon.ico
2017-01-19T08:23:44Z
Redmine for OpenRTM-aist
Redmine
機能 #3871 (終了): [FSM4RTC] データポートのタイムスタンプ打刻機能
https://www.openrtm.org/redmine/issues/3871
2017-01-19T08:23:44Z
n-ando
Noriaki.Ando@gmail.com
<p>[FSM4RTC] データポートのPortProfile/ConnectorProfileのプロパティ拡張作業 に基づき、データポートにタイムスタンプの打刻機能を追加する。</p>
整備 #3836 (終了): RTCProfile.properties.corba.endpoints: に起動時のエンドポイント情報を保存するようにする。
https://www.openrtm.org/redmine/issues/3836
2017-01-18T05:00:37Z
n-ando
Noriaki.Ando@gmail.com
<p>RTCProfile.properties.corba.endpoints: に起動時のエンドポイント情報を保存するようにする。</p>
機能 #3688 (終了): [FSM4RTC] データポートのPortProfile/ConnectorProfileのプロパティ拡張作業
https://www.openrtm.org/redmine/issues/3688
2016-10-27T02:47:57Z
n-ando
Noriaki.Ando@gmail.com
<p>データポート間を接続する際には、それぞれのポートが持つPortProfileの各種情報を取得しポートがサポートしている機能の情報を取得したうえで、ConnectorProfileのフィールドに必要な情報をセットし、1か所のポートに対して引数を渡しnotify()関数を呼ぶことでポート間の接続が確立される。FSM4RTCでは、PortProfile::properties, ConnectorProfile::properties にセットする値がOpenRTM-aistで決められているものから変更されており、本実装では、この仕様に対応させる作業を実施する。</p>
<p>FSM4RTCでは以下の14種類の標準プロパティが定義されており、PortProfileでは、dataport.fsm_event_name を除くプロパティがセットされている。また、ConnectorProfileでは14種類すべての値に対して、振る舞いを変更するなどの対応が必要となる。</p>
<ul>
<li>dataport.dataflow_type: {push, pull}</li>
<li>dataport.io_mode: {block, nonblock}</li>
<li>dataport.data_type: Data type in IFR</li>
<li>dataport.interface_type: Interface type in IFR</li>
<li>dataport.marshaling_type: marshaling type</li>
<li>dataport.timestamp_policy: {on_write, on_send, on_received, on_read, none}</li>
<li>dataport.write_buffer_length: int</li>
<li>dataport.write_buffer_full_policy: {overwrite, do_nothing, block}</li>
<li>dataport.write_buffer_timeout: [s]</li>
<li>dataport.read_buffer_length: int</li>
<li>dataport.read_buffer_empty_policy: {read_back, do_nothing, block}</li>
<li>dataport.read_buffer_timeout: [s]</li>
<li>dataport.read_buffer_queue_policy: {all, fifo, new}</li>
<li>dataport.fsm_event_name: イベント名</li>
</ul>
<p>なお、実装するにあたり、過去のバージョンとの互換性のため、新旧両方のプロパティに対応させること。<br />これらのプロパティーのうち、dataport.timestamp_policy についてはOpenRTM-aistに該当する機能はないため、新規にInPort/OutPortに実装すること。</p>
機能 #3683 (終了): [FSM4RTC] 静的FSMフレームワークの実装
https://www.openrtm.org/redmine/issues/3683
2016-10-27T02:44:47Z
n-ando
Noriaki.Ando@gmail.com
<p>Macho<sup><a href="#fn4">4</a></sup>ライクな記述方式を利用したFSMを記述するためのフレームワークを実装すること。実装に当たってはC++版・Java版・Python版の実装サンプルコードを提供するので、それらの実装に倣って新規に実装すること。次項のExtendedFsmServiceから状態の取得やイベントのディスパッチなどが行えるようなインターフェースも有すること。<br />[4] <a class="external" href="http://ehiti.de/machine_objects/">http://ehiti.de/machine_objects/</a></p>
機能 #3681 (終了): [FSM4RTC] FSMリスナをset/removeする関数等をRTObjectに追加する。
https://www.openrtm.org/redmine/issues/3681
2016-10-27T02:41:47Z
n-ando
Noriaki.Ando@gmail.com
<p>FSM関係のコールバック機構 PreFsmActionListener、PostFsmActionListener、FsmProfileListener、FsmStructureListener をset/remove関数および呼び出し関数をRTObjectクラスに追加する。</p>
機能 #3680 (終了): [FSM4RTC] FSM関連のリスナクラスを作成する。
https://www.openrtm.org/redmine/issues/3680
2016-10-27T02:38:39Z
n-ando
Noriaki.Ando@gmail.com
<p>FSMに関連するリスナクラスを作成する。<br />既存のComponentActionListener同様、PreFsmActionListener、PostFsmActionListener、FsmProfileListener、FsmStructureListener、を実装する。</p>
<ul>
<li>PreFsmActionListener/PostFsmActionListener (XXXはPRE or POST)
<ul>
<li>XXX_ON_INIT</li>
<li>XXX_ON_ENTRY</li>
<li>XXX_ON_DO</li>
<li>XXX_ON_EXIT</li>
<li>XXX_ON_STATE_CHANGE</li>
</ul></li>
</ul>
<ul>
<li>FsmProfileListener
<ul>
<li>SET_FSM_PROFILE</li>
<li>GET_FSM_PROFILE</li>
</ul></li>
</ul>
<ul>
<li>FsmStructureActionListener
<ul>
<li>SET_FSM_STRUCTURE</li>
<li>GET_FSM_STRUCTURE</li>
<li>ADD_FSM_STATE</li>
<li>REMOVE_FSM_STATE</li>
<li>ADD_TRANSITION</li>
<li>REMOVE_TRANSITION</li>
<li>BIND_EVENT</li>
<li>UNBIND_EVENT</li>
</ul></li>
</ul>
機能 #3660 (終了): _REENTRANTが既に定義されている
https://www.openrtm.org/redmine/issues/3660
2016-10-13T07:14:03Z
n-ando
Noriaki.Ando@gmail.com
<p>産総研の中岡です。</p>
<p>OpenRTM-aist の config_rtc.h ヘッダに関して要望があるのですが、<br />ここで定義されている</p>
<pre>
/* Multi Thread Support */
#define _REENTRANT TRUE
</pre>
<p>について、_REENTRANTが既に定義されているかどうかのチェックを入れて、</p>
<pre>
#ifndef _REENTRANT
#define _REENTRANT TRUE
#endif
</pre><br />という感じにしていただけないでしょうか。
<p>というのも、ChoreonoidでOpenRTMプラグイン以外でもマルチスレッドは使って<br />いて、そのためにコンパイラにコマンドラインで与えるオプションを一括して設<br />定しており、これが上記の定義と重複してしまうからです。(具体的にはgccの<br />オプションである -pthread を使っています。)この場合、コンパイル時に</p>
<pre>
> In file included from /home/nakaoka/usr/include/openrtm-1.1/rtm/RTC.h:22:0,
> from /home/nakaoka/choreonoid/src/OpenRTMPlugin/ChoreonoidPeriodicExecutionContext.h:9,
> from /home/nakaoka/choreonoid/src/OpenRTMPlugin/ChoreonoidPeriodicExecutionContext.cpp:6:
> /home/nakaoka/usr/include/openrtm-1.1/rtm/config_rtc.h:156:0: warning: "_REENTRANT" redefined
> #define _REENTRANT TRUE
> ^
> <command-line>:0:0: note: this is the location of the previous definition
</pre>
<p>といった警告メッセージが出てしまいます。</p>
<p>実害はないのですが、このメッセージがOpenRTMを使っているcppファイルごとに<br />出てしまい、かなり目立ってしまいますので、上記のように改善していただける<br />と助かります。</p>
整備 #3655 (終了): [FSM4RTC] Fsmのサンプルコンポーネントを作成する。
https://www.openrtm.org/redmine/issues/3655
2016-10-07T05:46:50Z
n-ando
Noriaki.Ando@gmail.com
<p>HRTMと同様のFsmのサンプルコンポーネントを作成する。</p>
<p>HRTMからのコピー。</p>
機能 #3653 (終了): [FSM4RTC] HRTMのラッパーライブラリを作成する。
https://www.openrtm.org/redmine/issues/3653
2016-10-07T05:34:20Z
n-ando
Noriaki.Ando@gmail.com
<p>HRTM付属のサンプルコンポーネントがコンパイルできるように、libHRTMに相当するライブラリをlibRTCで実装する。</p>
バグ #3574 (終了): Manager::getORB() 等のリファレンスカウントとownershipを整理する
https://www.openrtm.org/redmine/issues/3574
2016-07-19T04:35:59Z
n-ando
Noriaki.Ando@gmail.com
<p>getORB(),getPOA(),getPOAManager() などはリファレンスカウントを増やさずに参照を返すため_varで受けるとオブジェクトが削除される問題。<br />CORBAのマナー的には、関数内でduplicateなどでリファレンスカウントを増やしownershipを保持したまま、参照を返すべき。</p>
<pre>
安藤様
宮本です。
direct接続したときに発生する不具合ですが、原因を特定できたのでご報告します。
まず原因箇所はOutPortBaseクラスのgetLocalInPort関数の以下の部分でした。
CORBA::ORB_var orb = RTC::Manager::instance().getORB();
PortableServer::POA_var poa = RTC::Manager::instance().getPOA();
この部分を以下のように修正したら不具合は発生しなくなりました。
CORBA::ORB_var orb = CORBA::ORB::_duplicate(RTC::Manager::instance().getORB());
PortableServer::POA_var poa = PortableServer::POA::_duplicate(RTC::Manager::instance().getPOA());
修正前のようにgetORB関数で取得したポインタをそのまま渡してしまうと、ORB_varのデストラクタでCORBA::release関数を呼び出してリファレンスカウントが1つ減ります。
つまりgetLocalInPort関数を呼び出すたびにリファレンスカウントが減ってしまうのが原因なので、_duplicate関数でリファレンスカウントを増やしてやれば不具合はなくなるはずです。
ソースコードを読んだ結果、以下の部分にも同様の記述があったので修正する必要があると思います。
・CORBA_SeqUtil.cppのrefToVstring関数
・CorbaNamingクラスのコンストラクタ
以上です。
</pre>
機能 #3223 (終了): 初期化時にポートの接続やアクティベーションをrtc.confで指定し実行できるようにする
https://www.openrtm.org/redmine/issues/3223
2015-06-14T18:00:51Z
n-ando
Noriaki.Ando@gmail.com
<a name="ポートの接続"></a>
<h1 >ポートの接続<a href="#ポートの接続" class="wiki-anchor">¶</a></h1>
以下のような指定でポートの事前接続を実行するようにする
<ul>
<li>manager.components.preconnect: ConsoleIn.out:ConsoleOut.in(dataflow_type=push,interface_type=corba_cdr)</li>
</ul>
<a name="コンポーネントのアクティベーション"></a>
<h1 >コンポーネントのアクティベーション<a href="#コンポーネントのアクティベーション" class="wiki-anchor">¶</a></h1>
<p>以下のような指定でコンポーネントの事前アクティベーションを実行できるようにする<br />*manager.components.preactivate: ConsoleIn0, ConsoleOut0</p>
バグ #3086 (終了): OutPort::writeがポートの接続時に遅くなる
https://www.openrtm.org/redmine/issues/3086
2014-12-06T17:56:10Z
k-okada
k-okada@jsk.t.u-tokyo.ac.jp
<p><a href="https://github.com/fkanehiro/hrpsys-base/issues/241" class="external">hrpsys-base</a> でも話題になっていますが、<br />OutPortのwriteメソッドがポートの接続などが行われているときに顕著に遅くなるようです。</p>
<p>OpenRTMの1.1.0を使っています。</p>
<p>具体的には、OutPort::writeの<br /><pre>
RTC::ConnectorProfile prof(findConnProfile(id));
</pre><br />の部分がよく遅くなるようです。</p>
<p>OutPort::writeはonExecute内で実時間コンテクストの中で呼び出しているので、<br />この問題が発生すると、実時間周期を守れなくなってしまいます。</p>
機能 #321 (終了): 複合コンポーネントの作成(DataFlow型)
https://www.openrtm.org/redmine/issues/321
2009-01-10T10:20:30Z
n-ando
Noriaki.Ando@gmail.com
複数のRTCを一つにまとめてグループ化する実行コンテキストを作成すること。<br />実行コンテキストにはいくつかの種類が考えられるが、DataFlow型に対して以下の2種類を作成すること。
<ul>
<li>実行コンテキスト共有周期型 (PeriodicECShared)</li>
<li>状態共有周期型 (PeridicStateShared)</li>
</ul>