コア: チケット
https://www.openrtm.org/redmine/
https://www.openrtm.org/redmine/redmine/favicon.ico
2019-01-08T13:03:33Z
Redmine for OpenRTM-aist
Redmine
機能 #4650 (新規): CSPポートを実装する
https://www.openrtm.org/redmine/issues/4650
2019-01-08T13:03:33Z
n-ando
Noriaki.Ando@gmail.com
<p>CSPのチャネルを疑似的に実現するポートを実装する。</p>
機能 #4401 (新規): omniORBにIPアドレス変更時にオブジェクトリファレンスを動的に変更する機能を追加する
https://www.openrtm.org/redmine/issues/4401
2017-12-29T06:29:59Z
n-ando
Noriaki.Ando@gmail.com
整備 #3962 (新規): Managerの終了処理
https://www.openrtm.org/redmine/issues/3962
2017-02-20T09:23:23Z
n-miyamoto
n-miyamoto@aist.go.jp
<p>Managerの終了処理について、様々な条件で終了させた場合に問題が起きないか見直す。</p>
バグ #3940 (新規): CorbaNaming.cppのポインタ演算
https://www.openrtm.org/redmine/issues/3940
2017-02-10T02:48:12Z
n-ando
Noriaki.Ando@gmail.com
<pre>
void CorbaNaming::nameToString(const CosNaming::Name& name,
char* string_name,
CORBA::ULong slen)
{
char* s = string_name;
for (CORBA::ULong i = 0; i < name.length(); ++i)
{
// Copy id to string_name
for (const char* id = name[i].id; *id != '\0'; ++id) // ここがMISRAで Pointer arithmetic is not on array. の指摘が出る
</pre>
<p>以下の指摘の対処を行う。</p>
<ul>
<li>CorbaNaming.cpp 927 Pointer arithmetic is not on array.</li>
<li>CorbaNaming.cpp 937 Pointer arithmetic is not on array.</li>
<li>CorbaNaming.cpp 963 Pointer arithmetic is not on array.</li>
<li>CorbaNaming.cpp 976 Pointer arithmetic is not on array.</li>
</ul>
整備 #3905 (新規): C4996警告の発生箇所を修正する
https://www.openrtm.org/redmine/issues/3905
2017-02-07T02:15:53Z
n-miyamoto
n-miyamoto@aist.go.jp
<p>新しいVisual StudioではGetVersion系関数は非推奨なためC4996警告を発生する。<br />OS.hでGetVersionEx関数を使用している箇所があるため修正する。</p>
調査 #3609 (新規): Managerの再初期化
https://www.openrtm.org/redmine/issues/3609
2016-09-13T04:50:00Z
n-miyamoto
n-miyamoto@aist.go.jp
<p>ManagerTestでは各関数でManagerの初期化を行っているため、Managerを一旦終了して再初期化する方法が必要である。</p>
<p>Managerのshutdown関数内でログファイルを閉じてしまうため、LocalAdmin等他のシングルトンオブジェクトはManagerを再初期化しても他のシングルトンオブジェクトは再初期化されないため、既に閉じたファイルに書き込もうとする問題が発生する。</p>
<p>この問題以外にも再初期化で問題が発生しないかを調査する。</p>
機能 #3568 (新規): OutPort::properties へのデータ値 export をオプション化する
https://www.openrtm.org/redmine/issues/3568
2016-06-04T01:21:54Z
n-ando
Noriaki.Ando@gmail.com
<p>OutPort::properties へのデータ値を export できるようにしているが、データサイズが大きいものだとPortProfileが肥大化するので効率が悪い。これをrtc.conf等のオプションとしてON/OFFできるようにする。</p>
バグ #3509 (新規): Peiorid と New のパフォーマンスとロックの調査と見直し
https://www.openrtm.org/redmine/issues/3509
2016-04-11T04:35:32Z
n-ando
Noriaki.Ando@gmail.com
<p><a class="external" href="https://github.com/fkanehiro/hrpsys-base/issues/552#issuecomment-207982877">https://github.com/fkanehiro/hrpsys-base/issues/552#issuecomment-207982877</a></p>
<p>理論的には Newの方がPeriodicよりパフォーマンスは良いはずだが、そうはなっていないようなので、スレッド、ロック回りを再度見直す。</p>
<pre>
ありがとうございます。
(1) 両方とも非リアルタイムスレッドです。それ故、periodicの周期の正確さは保証されません。
(2) newだと、onExecute() がバッファに書き込み後、signalでpublisherスレッドを起こすので、publish作業(正確には、publisherスレッドがバッファからデータを取り出す時間)が 4ms-2ms (250Hz-500Hz) 以内に終われば、次のonExecute()の書き込みを妨げない。ゆえに、ロックを取り合うことはほとんどない。
periodic の場合は、仮に onExecute()が500Hzで、publisherが50Hzとすると、publisherが1回送信して待っている間に、onExecute()は10回書き込み、デフォルトバッファ長8のままだとを超えるので、すぐにバッファフル状態になります。(バッファ長が有限長ならいずれフル状態になる。)
ロックを取り合う確率がperiodicが高いのは、publisherの実行タイミングとonExecute(のwrite部分)の実行タイミングに関して、
newであれば、onExecuteのwriteのタイミングでpublisherが呼ばれるので、ほぼpublisherとonExecuteは同期がとれてることになる。そのため、概ね猶予は4msくらいはあるので、送信がこれまでに終わって入れば大丈夫
periodicであれば、publiserの呼ばれるタイミングはonExecuteとは同期がとれてないことになる(publisherが非実時間スレッドなため)。そのため、送信時間がたとえ短くても、onExecuteのタイミングと周期実行時のpublisherの実行タイミングが近いと、ロックを取り合う確率が高くなる。
ということでしょうか。
少し前にこちらで試してみた現象としては、実時間制御周期250[hz]で 実時間制御RTC<=>外部のRTC の通信を行ったときに、
subscription_typeがnewで、実時間制御RTCが4msでまわらず、実時間をまもれてない
subscription_typeがperiodicで、push_rateを50[hz]とすると実時間制御RTCが4[ms]を守れている
のようでした。
もしかしたら送信時間が実時間制御側の周期をこえてしまっているのかもしれません。
@n-andoさんにお教えいただいている条件ですと、
publisherスレッドの送信にかかる時間を現状の構成になってからこちらで測定してないのでしようと思うのですが、
現状の条件は
周期250hz
接続しているデータポートのポート数は29個
上記29個の総計データ量は2412バイトほどで、型での内訳はdoubleが254個、longが 93個、boolが 8個(TimedXXXなど含め)
となっており、データ数・ポート数が多いのかもしれません。
ちなみに、データポートの通信で、同じデータ量でも
小さいデータ型をたくさんのポートで通信
大きいデータ型を少ないポートで通信
を比較すると、後者の方がよかったりすることもありますでしょうか。
データ自体のオーバーヘッドもありそうですが、今回のケースのように
データポート1個につき1つのpublisherスレッドなので、
後者のほうがスレッドのmutexのかかるタイミングもへったりしますでしょうか。
</pre>
バグ #3438 (新規): hrpsys-base の rtm.py::reeadDataPort() を呼ぶと disconnect() で稀に落ちる
https://www.openrtm.org/redmine/issues/3438
2016-01-28T19:53:03Z
n-ando
Noriaki.Ando@gmail.com
<p><a class="external" href="https://github.com/fkanehiro/hrpsys-base/issues/905">https://github.com/fkanehiro/hrpsys-base/issues/905</a></p>
機能 #3432 (新規): ECスレッドを実行するCPUを固定する機能の実装
https://www.openrtm.org/redmine/issues/3432
2016-01-18T03:25:19Z
n-ando
Noriaki.Ando@gmail.com
<p>速度が要求される場面、例えば10GbEによる高速通信などでは、スレッドの実行を特定のCPUに固定する必要がある。<br />固定することはsched_setaffinity()でできるらしいので、rtc.confなどでECにオプションを与えることで、特定のCPUでのみ実行するような仕組みを実装する。<br />詳しくは千代さんのスライドを参照。</p>
機能 #3345 (新規): IPの自動推定周りの修正
https://www.openrtm.org/redmine/issues/3345
2015-10-20T02:55:19Z
n-ando
Noriaki.Ando@gmail.com
<p><a class="external" href="https://twitter.com/yosuke/status/656294584679399424">https://twitter.com/yosuke/status/656294584679399424</a></p>
<pre>
あとcorba.endpointに何もセットされていなかった場合にIPを自動推定する部分があったと思うのですが、
あれが多くの問題を引き起こしていると思います(ノートPCのwifiは優先度高く推定されてしまうなど)。
「IPを赤字で表示」がよいです。 @openrtm_ando
</pre>
機能 #3242 (新規): Direct型のデータポートにコールバック機能を実装する
https://www.openrtm.org/redmine/issues/3242
2015-06-28T23:58:59Z
n-ando
Noriaki.Ando@gmail.com
<p>Direct型のデータポートにコールバック機能を実装する</p>
バグ #2567 (新規): coilの.pcファイルが64bitの時機能しない
https://www.openrtm.org/redmine/issues/2567
2013-01-14T14:55:42Z
n-ando
Noriaki.Ando@gmail.com
<p>coilの.pcファイルが64bitの時機能しない</p>
機能 #1622 (新規): DataPort のsubscription type その他を、confファイルから指定できるようにする
https://www.openrtm.org/redmine/issues/1622
2010-07-12T02:49:07Z
n-ando
Noriaki.Ando@gmail.com
<p>DataPort のsubscription type その他を、confファイルから指定できるようにする</p>
バグ #1472 (新規): Compositeコンポーネントのポート公開に関する問題
https://www.openrtm.org/redmine/issues/1472
2010-05-12T09:54:19Z
kurihara
shinji0608@gmail.com
<p>RTSEにてCompositeコンポーネントを作成する場合に、”New Composite Component"ダイアログにて公開するポートを指定しても、composite.confに記述されたポートだけが公開ポートとなる。</p>
<p>Manager::createComponent()内の処理にて、このメソッドの引数で与えられたプロパティをマージしている処理があるが、引数で指定されたプロパティをマージした後に、component.confの内容をマージしているため、component.confで指定した値で上書きされてしまっている。</p>
<p>対策としては、configureComponent(comp, prop)の後で、compに対してcomp_propをsetProperties()でセットする事でcreateComponent()の引数で指定されたプロパティが有効となる。</p>