Simulatsioonitarkvara

From Intelligent Materials and Systems Lab

Revision as of 17:48, 24 April 2011 by Siimsundla (talk | contribs)

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.