Simulatsioonitarkvara: Difference between revisions
Siimsundla (talk | contribs) |
Siimsundla (talk | contribs) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
Tarkvara versioon: <span style="color:#009000"> 1.10.3 </span> | Tarkvara versioon: <span style="color:#009000"> 1.10.3 </span> | ||
Hea: | '''Hea''': | ||
* Küllaltki täpne tasakaalu simulatsioon. | * Küllaltki täpne tasakaalu simulatsioon. | ||
* Kaamera | * Kaamera | ||
Halb: | '''Halb''': | ||
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust. | * Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust. | ||
* Ei simuleeri sonareid | * Ei simuleeri sonareid | ||
Line 14: | Line 14: | ||
Paigaldusjuhend: http://www.cyberbotics.com/nao/ | Paigaldusjuhend: http://www.cyberbotics.com/nao/ | ||
Hea: | '''Hea''': | ||
* Kaamera | * Kaamera | ||
* Sonarid | * Sonarid | ||
* Arvestatakse mootorite võimekusega | * Arvestatakse mootorite võimekusega | ||
* Puutesensorid | |||
Halb: | '''Halb''': | ||
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). | * Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). | ||
Viimase probleemi tõttu | Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu. | ||
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt: | Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt: | ||
<pre> | <pre> | ||
Webots | Webots (tagastab väärtused m/s2) | ||
AccX 0.753286540508 | AccX 0.753286540508 | ||
Line 39: | Line 40: | ||
AccZ -55.8523826599 | AccZ -55.8523826599 | ||
</pre> | </pre> | ||
Fix: | |||
naoproxy.cpp failis ridadel: | |||
<pre> | |||
// Webots returns values in m/s^2 | |||
const double *acc = wb_accelerometer_get_values(accelerometer); | |||
accelerometerValues.clear(); | |||
accelerometerValues.push_back((float)acc[0]); | |||
accelerometerValues.push_back((float)acc[1]); | |||
accelerometerValues.push_back((float)acc[2]); | |||
if (! naoqiSimulated->updateAccelerometers(accelerometerValues)) | |||
cerr << "ALNaoSimulationInterface::updateAccelerometers() failed.\n"; | |||
//__________ | |||
// Inertial values (computed from accelerometer values) | |||
// | |||
inertialValues.clear(); | |||
inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY))); | |||
inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY))); | |||
if (! naoqiSimulated->updateInertialValues(inertialValues)) | |||
cerr << "ALNaoSimulationInterface::updateInertialValues() failed.\n"; | |||
</pre> | |||
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build. | |||
Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid. | |||
* Arvestatakse mootorite võimekusega (vahest liiga palju) | |||
Kuigi liigutsed on pärast viimase probleemi parandamist õiged ei õnnestu ikkagi püsti tõusta kuna käte mootorid pole simulatsioonis selleks piisavalt tugevad (üritab, kuid jääb poolikusse asendisse) | |||
Fix: | |||
Linuxis /usr/local/webots/resources/projects/robots/nao/protos/NaoV3H.proto fail defineerib simuleeritava Nao mudeli omadused mh mootorite pöördemomendi, mis on kätega seonduvatel mootoritel seatud 2,27 või 2.61 Nm (LShoulderRoll, RElbowYaw...), mis on ka NAO spetsifikatsiooni kohaselt õige, kuid simulatsioonis pole need väärtused piisavad. Pärast väärtuste seadmist vastavalt 3.5 ja 4 Nm peale töötab püstitõusmine nagu oodatud (madalamatel 3 ja 3.5 Nm oli veel probleeme). Leitud väärtused pole kindlasti kõige õigemad, kuid optimaalsema pöördemomendi seadmiseks oleks vaja simulatsiooni kõrvutada reaalse NAOga ning viia läbi hulganisti katseid. Ilmelt piisab ka mõnevõrra väiksemast pöördemomendi paradusest. Võimalik, et probleemi põhjuseks on mõni teine valesti seatud parameeter (liigeste mass, massi jaotus jne), kuid jõudluse suuredamine on lihtsaim viis probleem lahedada. |
Latest revision as of 18:50, 24 April 2011
NAOSim
Tarkvara versioon: 1.10.3
Hea:
- Küllaltki täpne tasakaalu simulatsioon.
- Kaamera
Halb:
- Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.
- Ei simuleeri sonareid
Webbots
Tarkvara versioon: PRO 6.3.4 Paigaldusjuhend: http://www.cyberbotics.com/nao/
Hea:
- Kaamera
- Sonarid
- Arvestatakse mootorite võimekusega
- Puutesensorid
Halb:
- Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses).
Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu.
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:
Webots (tagastab väärtused m/s2) AccX 0.753286540508 AccY -0.0355014316738 AccZ 9.86777114868 NAOSim: AccX -4.06194591522 AccY 0.113250367343 AccZ -55.8523826599
Fix:
naoproxy.cpp failis ridadel:
// Webots returns values in m/s^2 const double *acc = wb_accelerometer_get_values(accelerometer); accelerometerValues.clear(); accelerometerValues.push_back((float)acc[0]); accelerometerValues.push_back((float)acc[1]); accelerometerValues.push_back((float)acc[2]); if (! naoqiSimulated->updateAccelerometers(accelerometerValues)) cerr << "ALNaoSimulationInterface::updateAccelerometers() failed.\n"; //__________ // Inertial values (computed from accelerometer values) // inertialValues.clear(); inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY))); inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY))); if (! naoqiSimulated->updateInertialValues(inertialValues)) cerr << "ALNaoSimulationInterface::updateInertialValues() failed.\n";
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build. Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid.
- Arvestatakse mootorite võimekusega (vahest liiga palju)
Kuigi liigutsed on pärast viimase probleemi parandamist õiged ei õnnestu ikkagi püsti tõusta kuna käte mootorid pole simulatsioonis selleks piisavalt tugevad (üritab, kuid jääb poolikusse asendisse)
Fix:
Linuxis /usr/local/webots/resources/projects/robots/nao/protos/NaoV3H.proto fail defineerib simuleeritava Nao mudeli omadused mh mootorite pöördemomendi, mis on kätega seonduvatel mootoritel seatud 2,27 või 2.61 Nm (LShoulderRoll, RElbowYaw...), mis on ka NAO spetsifikatsiooni kohaselt õige, kuid simulatsioonis pole need väärtused piisavad. Pärast väärtuste seadmist vastavalt 3.5 ja 4 Nm peale töötab püstitõusmine nagu oodatud (madalamatel 3 ja 3.5 Nm oli veel probleeme). Leitud väärtused pole kindlasti kõige õigemad, kuid optimaalsema pöördemomendi seadmiseks oleks vaja simulatsiooni kõrvutada reaalse NAOga ning viia läbi hulganisti katseid. Ilmelt piisab ka mõnevõrra väiksemast pöördemomendi paradusest. Võimalik, et probleemi põhjuseks on mõni teine valesti seatud parameeter (liigeste mass, massi jaotus jne), kuid jõudluse suuredamine on lihtsaim viis probleem lahedada.