Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 153.5 |
RT-Middleware | 35 |
Tools | 22 |
Documentation | 2 |
Choreonoid
Motion editor/Dynamics simulator
OpenHRP3
Dynamics simulator
OpenRTP
Integrated Development Platform
AIST RTC collection
RT-Components collection by AIST
TORK
Tokyo Opensource Robotics Association
DAQ-Middleware
Middleware for DAQ (Data Aquisition) by KEK
OpenRTM-aistユーザの皆様:
早稲田の菅です.
お世話になっております.
Java版(ver. 0.4.1)のバグについてお知らせしたくメールを差し上げました.
該当箇所はjp.go.aist.rtm.RTC.executionContextパッケージの
PeriodicExecutionContextクラス内で,
int svc()というメソッドです.
旧コードでは,Thread.sleep(long, int)に対して,
Thread.sleep(0, (int)tv.getUsec()); (単位はマイクロ秒)
のような呼び出しが行われていますが,これは誤りで,
第1引数,第2引数に正しくは,
ミリ秒(long型),ナノ秒(int型)を入れます.
このせいで,正しい実行周期で実行できないばかりか,
periodic.rateに1.0などを入れると,
桁あふれを起こして実行すらできません.
旧コードと正しいコードを両方乗せます.
//////////////旧コード///////////////////
/**
* ExecutionContext用のスレッドの実行関数です。
* 登録されたコンポーネントの処理を呼び出します。
*/
public int svc() {
do {
TimeValue tv = new TimeValue(0, m_usec); // (s, us)
for(int intIdx=0;intIdxExecutionContext用のスレッドの実行関数です。
* 登録されたコンポーネントの処理を呼び出します。
*/
public int svc() {
do {
TimeValue tv = new TimeValue(0, m_usec); // (s, us)
long millisec = m_usec / 1000;
int nanosec = (int)((m_usec % 1000) * 1000);
for(int intIdx=0;intIdx