<div dir="ltr">宮本さま<div><br></div><div>安藤です</div><div>ExtTrigの原因究明ありがとうございました。</div><div>チケットを切ったうえで、変更のコミットをお願いいたします。</div><div><br></div><div class="gmail_extra"><div class="gmail_quote">2016年4月25日 19:21 宮本信彦 <span dir="ltr"><<a href="mailto:n-miyamoto@aist.go.jp" target="_blank">n-miyamoto@aist.go.jp</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="JA" link="#0563C1" vlink="#954F72">
<div>
<p class="MsoNormal">安藤様<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">宮本です。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">本日の作業内容をお知らせします。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">--------------------<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">ExtTrigger</span>のサンプルが<span lang="EN-US">RTC</span>を<span lang="EN-US">exit</span>してもプロセスが終了しない原因の調査<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">ExtTrigExecutionContext</span>クラスの<span lang="EN-US">svc</span>関数内の<span lang="EN-US">self._workerthread._cond.wait()</span>で止まっているのは予想通りなのですが、この状態で<span lang="EN-US">tick</span>関数を呼び出しても動かないみたいです。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">ExecutionContextBase</span>クラスの<span lang="EN-US">stop</span>関数内で<span lang="EN-US">self._worker.stop()</span>を実行しているため、<span lang="EN-US">tick</span>関数内の<span lang="EN-US">if not self.isRunning():</span>の判定に引っかかって<span lang="EN-US">1</span>ステップ進める処理は実行されません。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">どうやら<span lang="EN-US">stop</span>関数内で<span lang="EN-US">onStopping</span>関数が呼び出されるみたいなので、<span lang="EN-US">ExecutionContextBase</span>クラスの<span lang="EN-US">onStopping</span>関数で<span lang="EN-US">tick</span>関数を呼び出してみました。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">これで<span lang="EN-US">svc</span>関数の<span lang="EN-US">self._workerthread._cond.wait()</span>からは動くのでスレッドも終了するはずだと考えていたのですが、上手くいきませんでした。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">どうやら<span lang="EN-US">onStopping</span>関数で<span lang="EN-US">tick</span>関数を呼び出したことで<span lang="EN-US">svc</span>関数の<span lang="EN-US">self._workerthread._cond.wait()</span>からは動いたみたいなのですが、<span lang="EN-US">threadRunning</span>関数が<span lang="EN-US">True</span>を返しているらしくループが終了していません。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">そのため<span lang="EN-US">onStop</span>関数で<span lang="EN-US">_svc</span>を<span lang="EN-US">False</span>にしてみました。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  def onStopping(self):<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    guard = OpenRTM_aist.ScopedLock(self._svcmutex)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    self._svc = False<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    del guard<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    self.tick()<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    return RTC.RTC_OK<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">すると<span lang="EN-US">svc</span>関数は終了したみたいですが、今度はデストラクタでエラーがでました。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">どうやら<span lang="EN-US">Task.__del__(self)</span>が駄目らしく、<span lang="EN-US">OpenRTM_aist.Task</span>としないとどこで定義されたものなのか分からないみたいです。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">PeriodicExecutionContext</span>クラスではデストラクタの引数に<span lang="EN-US">Task=OpenRTM_aist.Task</span>があるわけですが、<span lang="EN-US">ExtTrigExecutionContext</span>クラスのデストラクタには何故かこの引数が存在しません。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">なので<span lang="EN-US">PeriodicExecutionContext</span>クラスと同じく引数に<span lang="EN-US">Task=OpenRTM_aist.Task</span>を追加したところ、何も問題なく終了しました。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">修正したファイルは添付しましたので、これで良ければリポジトリにコミットします。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">一応、チケットも発行した方が良いのであればそうします。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">あとラズパイマウスのマニュアルをページで分けました。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6005" target="_blank">http://openrtm.org/openrtm/ja/node/6005</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6013" target="_blank">http://openrtm.org/openrtm/ja/node/6013</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6014" target="_blank">http://openrtm.org/openrtm/ja/node/6014</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6015" target="_blank">http://openrtm.org/openrtm/ja/node/6015</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6016" target="_blank">http://openrtm.org/openrtm/ja/node/6016</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6017" target="_blank">http://openrtm.org/openrtm/ja/node/6017</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6018" target="_blank">http://openrtm.org/openrtm/ja/node/6018</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6019" target="_blank">http://openrtm.org/openrtm/ja/node/6019</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">サンプルの<span lang="EN-US">RT</span>システムの詳細について加筆しました。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/node/6017" target="_blank">http://openrtm.org/openrtm/ja/node/6017</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">プロジェクトページを作成しました。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/project/raspimouse_rtcs" target="_blank">http://openrtm.org/openrtm/ja/project/raspimouse_rtcs</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://openrtm.org/openrtm/ja/project/usb_9axis_sensor" target="_blank">http://openrtm.org/openrtm/ja/project/usb_9axis_sensor</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal">以上です。<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">--------------------------------------------------<u></u><u></u></span></p>
<p class="MsoNormal">宮本 信彦 <span lang="EN-US"><a href="mailto:n-miyamoto@aist.go.jp" target="_blank">n-miyamoto@aist.go.jp</a><u></u><u></u></span></p>
<p class="MsoNormal">産業技術総合研究所 ロボットイノベーション研究センター<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">ロボットソフトウェアプラットフォーム研究チーム<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal">テクニカルスタッフ<span lang="EN-US"><u></u><u></u></span></p>
</div>
</div>

</blockquote></div><br></div></div>