Step 3ïŒãODEããã£ãšç¥ãã
ODEã䜿ã£ãŠäœæããAIBOã·ãã¥ã¬ãŒã¿ïŒODEã«ä»å±ããŠãã3Dã©ã€ãã©ãªïŒdrawstuffïŒã䜿ã£ãŠããã®çšåºŠã®ã·ãã¥ã¬ãŒã¿ãäœãããšãããã¢ã§ãïŒODEæ¬ã§å匷ããã°ãã®çšåºŠã®ãã®ãäœãããšãäžå¯èœã§ã¯ãããŸããïŒå®éã«ïŒæ°å¹ŽåïŒåç çãšäœã£ããã®ã§ãïŒAIBOã®èäœæš©ã®é¢ä¿ã§æ®å¿µãªãããœãŒã¹ã³ãŒãã¯å ¬éã§ããŸããïŒ
ODEæ¬ãç°¡å!å®è·µ!ããããã·ãã¥ã¬ãŒã·ã§ã³ – Open Dynamics Engineã«ããããããããã°ã©ãã³ã°
ãã®StepïŒã§ãïŒããã¯ODEã®è±æããã¥ã¢ã«ãç§æµã«æžãçŽããŠããŸãïŒ100%ã§ã¯ãããŸãããïŒäž»èŠãªéšåãç¶²çŸ ããŠããŸãã®ã§ïŒè±æããã¥ã¢ã«ãèªãŸãªããŠãããã°ã©ãã³ã°ãå¯èœã§ãïŒAPIã«ã€ããŠã90ïŒ ä»¥äžæ²èŒããŠããŸãã®ã§ïŒODEã®ãã¹ãããã°ã©ã ãèªããšããïŒèªåã§ããã°ã©ãã³ã°ããããšããå°ããªããšæããŸãïŒè©³ããã¯ODEæ¬ã§ïŒïŒïŒä»¥äžã«StepïŒã®ãœãŒã¹ã³ãŒããæ²èŒããŸãïŒzipã§å§çž®ãããŠãããœãŒã¹ã³ãŒãã¯ãããåèã«ããŠè§£åã»ã³ã³ãã€ã«ã»å®è¡ããŠãã ããïŒãã以å€ã®ãœãŒã¹ã³ãŒãã¯ããã°ã©ã ã®äžéšãªã®ã§ïŒãã®ãŸãŸã§ã¯ã³ã³ãã€ã«ã§ããŸããïŒ
ãªãïŒæ¬ãµã³ãã«ããã°ã©ã ã®ã³ã³ãã€ã«ã»å®è¡ã¯èªå·±è²¬ä»»ã§è¡ã£ãŠãã ããïŒç¹ã«ïŒæ¬ç©ã®ããããã«é©çšããããã®å®å šæ§ãªã©ãå šãèæ ®ããŠããŸããã® ã§ïŒãã®ãããªçšéã«ã¯åããŸããïŒãããŸã§ïŒæè²ç®çãšãèããã ããïŒèè åã³æ£®ååºçã¯æ¬ããã°ã©ã ã«ãã£ãŠçããããããçµæã«ã€ããŠã®è²¬ä»»ãè² ããããŸãïŒãäºæ¿ããæ¹ã ãããŠã³ããŒãããŠãã ããïŒãŸ ãïŒåé åžã¯ãæ¢ããã ããïŒ
- ããã°ã©ã 3.1ïŒãODEã®ããŒã¿å (P60)
- ããã°ã©ã 3.2ïŒãçãã(P69)
- ããã°ã©ã 3.3ïŒãæé¢ãããããããŒã«ã(P75)
- 説æïŒæé¢ãããŒã«ã転ããïŒããªãã«åãã£ãŠãããŸãïŒ
- ãœãŒã¹ã³ãŒãïŒpro3-3.zip (2007-5-19)
- 説æïŒODEã®ãã¹ãããã°ã©ã test_moving_trimesh.cppãããããŒã ããåãåºãïŒãœãŒã¹ã³ãŒããããããããããã«å€æŽããŠããŸãïŒããã§ã¯ïŒããªãŽã³ã®ç©äœã®æ±ãæ¹ãåŠã³ãŸãïŒ
- ãœãŒã¹ã³ãŒãïŒpro3-4-070607.zip (2007-06-07)
- 説æïŒODEã§æããšãŒã¢ãŒã¿ã®Aã¢ãŒã¿ã®äœ¿ãæ¹ã®ãµã³ãã«ã§ãïŒãªãïŒODEæ¬ã§ã¯ãªã€ãžã®ã£ã°ãå°å°ããŠããŸãïŒ
- ãœãŒã¹ã³ãŒãïŒpro3-5.zip (2007-5-19)
ïŒæçµæŽæ°æ¥ã2007-6-7)
- ããã°ã©ã 3.1ïŒãODEã®ããŒã¿å (P60)
#if defined(dSINGLE) // dSINGLEãå®çŸ©ãããŠããã
typedef float dReal;ã // ãããdRealã¯floatãšããŸãïŒ
#elif defined(dDOUBLE) // dDOUBLEãå®çŸ©ãããŠããã
typedef double dReal;ã// ãããdRealã¯doubleãšããŸãïŒ
#elseãããããããã ã// ãã以å€ã®å Žå
#error You must #define dSINGLE or dDOUBLE
#endifãããããããã // #ifã®çµããtypedef dReal dVector3[4];ãã // dVector3ã¯dRealã®é å(èŠçŽ 4åïŒ
typedef dReal dMatrix3[4*3];ã// dMatrix3ã¯dRealã®é å(èŠçŽ 12å) - ããã°ã©ã 3.2ïŒãçãã(P69)
dBodyID body;
dMass mass;ãããããããã ããã // 質éãã©ã¡ãŒã¿æ§é äœ
dReal r = 0.5, l = 1.0, m = 10.0;ã // ååŸïŒé·ãïŒè³ªé
dReal x = 0.0, y = 0.0, z = 1.0; // äœçœ®ã®åº§æš
dReal ax = 1, ay = 0, az = 0; // å転軞ãã¯ãã«
dReal angle = 45.0 * M_PI / 180.0; // M_PIã¯ååšçbody = dBodyCreate(world);ããã // ããã£ã®çæ
dMassSetZero(&mass);ããããããããã// 質éãã©ã¡ãŒã¿ã®åæå
dMassSetCylinderTotal(&mass,m,3,r,l); // 質éèšç®
dBodySetMass(body,&mass);ããããã ã // 質éã®èšå®
dBodySetPosition(body,x, y, z);ã ã // äœçœ®ã®èšå®dMatrix3 R;
dRFromAxisAndAngle(R, ax, ay, az, angle);ã// å転è¡åã®èšç®
dBodySetRotation(body,R);ãããããããã ã// å§¿å¢ã®èšå®
LWããïŒ
äžä»¶èœçããŠäœããã§ãïŒ
ããŒãã®ãã¹ãšã¯æ³å®å€ã§ããïŒã§ãïŒãã®æã®ãã¹ã¯è¯ããããŸãããïŒããšãã°ïŒUSBã®ãã¹ãã¯ãŒçµŠé»ã§åããšæãããã§ããŠãïŒå®éã«ã¯é»æµãè¶³ããªãå€éšçµŠé»ã®å¿ èŠããããšãïŒ
解決ããŠäœããã§ãïŒ
ã§ã
ã§ããã
ãããã«ã¡ã¯ã
åé¡ã解決ããŸãããå®éã«ç§ã®ãã¹ã§ã.ã°ã©ãã£ãã¯ã¹ã«ãŒãã«é»æºæ¥ç¶åšã§é»æºãæäŸããªãã£ãããã§ãã仿£åžžã«å¹æãããã·ãã¥ã¬ãŒã·ã§ã³ãåºæ¥ãŸãã.
LWããïŒ
ç§ã¯nVidiaã®ã«ãŒããæã£ãŠããªãã®ã§è©ŠããŸãããïŒnVidiaçšã®linuxãã©ã€ããŒãæ£ããèšå®ãŸãã¯èªã¿èŸŒãŸããŠããªãã®ã§ã¯ãªãã§ããããïŒ
googleã§ä»¥äžãæ€çŽ¢ãããšè²ã èŠã€ãããŸããïŒ
Xlib: extension âGLXâ missing on display â:0.0â³.
解決ãããæããŠãã ããïŒ
ã§ã
ã§ããã
ãããã«ã¡ã¯ããè¿äºããã ããŸããŠãããããšãããããŸãã
ç°å¢ã¯Linuxã§ãUbuntuã8.04ã§ããnVidiaã®ãããªã«ãŒãã¯Microsoft DirectX9.0 ãšOpenGL2.0ã«å¯Ÿå¿ããŠãããšäœ¿çšèª¬ææžã«æžãããŠããŸããã€ãŸãOpenGLã«ã察å¿ããŠããŸããäœã®åå ã ãšèããããŸãã§ããããã
LWããïŒ
ç°å¢ãæããŠãã ããïŒWindowsã§ããïŒãLinuxã§ããïŒ
ãŸãïŒnVidiaã®é«æ§èœãããªã«ãŒããšã¯è¯ãã§ããïŒã§ãïŒããã¯OpenGL察å¿ã§ããããïŒãdrawstuffã¯OpenGLãªã®ã§ïŒDirectXã䜿ããããªãä»ã®3Dã©ã€ãã©ãªã䜿ãå¿ èŠããããŸãïŒ
ã§ã
ã§ããã
ãããã«ã¡ã¯ãããã²ãšã€ã®åé¡ãåºãŠããŸããŸããã®ã§ãæããŠããã ããã°å¹žãã§ããããŸãã
ããã¶ãŒããŒãã«ä»ããããŠãããããªæ©èœã䜿çšããŠã·ãã¥ã¬ãŒã·ã§ã³ãããŠããŸãããæç»é床ãé ãããŸãããããã§ãæšæ¥nVidiaã®é«æ§èœã®ãããªã«ãŒããè²·ã£ãŠPCã«ä»ããŸãããUbuntu8.04ã¯èªåèªèãããŠå¶éä»ãã®ãã©ã€ããŒãã€ã³ã¹ããŒã«ããŸããããããããããããã£ããèµ°ã£ãŠããããã°ã©ã ã¯ä»åå®è¡ããŠã¿ããäžèšã®ãããªãšã©ãŒãåºãŠããŸããŸãããå šç¶èµ°ããŸãã.察çãæããŠããã ããŸãã§ãããã.
Xlib: extension “GLX” missing on display “:0.0″.
Error: no good X11 visual found for OpenGL
ã§ãããïŒ
ãæ©ã è¿äºãããŠããã ããŸããŠãæé£ãããããŸããã
ãODE0.10.0察å¿ã®ããã°ã©ã¹ã䜿çšãããŠããã ããããŸãè¡ããŸãã.
ã¡ãªã¿ã«ãbunny.cppã¯ODE0.10.0察å¿ã®robosimu080707.zipã«å«ãŸããŠããªããŠãå®è¡ããŠãåæ§ã«äžèšã®ãããªãšã©ãŒã¡ãã»ãŒãžãåºã¡ãããŸãããã
dInitODE()ãšdCloseODE()ã远å ããŠãåã³ã³ãã€ã«ããŠãé 調ã«å®è¡ã§ããŸããã
ODE INTERNAL ERROR 2: colliders array not initialized in dCollide()
Aborted
ããææããã ããŸããŠãããããšãããããŸããã
LWããïŒ
åããŸããŠïŒããè€ãé ãããããéãã§ãïŒ
ããŠïŒODE0.10.0ã«ã¯æ°ãããœãŒã¹ã³ãŒãã䜿ãå¿ èŠããããŸãïŒããŠã³ããŒãã³ãŒããŒããããŠã³ããŒãããŠãã ããïŒããã«ã¯ïŒdInitODE()ãšdCloseODE()ã远å ãããŠããŸãïŒ
ããã§ã解決ããªãå Žåã¯ïŒODEã®ããŒãžã§ã³ãšéçºç°å¢ãæããŠãã ããïŒç¢ºèªããŠã¿ãŸãïŒ
ã§ã
åºæããïŒ
ãæ¬ã®æèªè ã§ã.çŽ æŽãããæ¬ãããããšãããããŸã.
ããŠãslope.cppãã³ã³ãã€ã«ããŠãå®è¡ãããŠã¿ããšãããäžèšã®ãããªããšã©ãŒãåºãŠããŸããŸããã察çããããŸããã
Simulation test environment v0.02
Ctrl-P : pause / unpause (or say `-pause’ on command line).
Ctrl-O : single step when paused.
Ctrl-T : toggle textures (or say `-notex’ on command line).
Ctrl-S : toggle shadows (or say `-noshadow’ on command line).
Ctrl-V : print current viewpoint coordinates (x,y,z,h,p,r).
Ctrl-W : write frames to ppm files: frame/frameNNN.ppm
Ctrl-X : exit.
Change the camera position by clicking + dragging in the window.
Left button – pan and tilt.
Right button – forward and sideways.
Left + Right button (or middle button) – sideways and up.
ODE INTERNAL ERROR 2: colliders array not initialized in dCollide()
Aborted
åå¿è ããïŒ
ããã°ã©ã ãåãåããŸããïŒã
ããŠïŒé ããããã°ã©ã ã¯åã倿°åãïŒéå®çŸ©ããŠãšã©ãŒãåºãŠã³ã³ãã€ã«ïŒãã«ãïŒã§ããŸããã§ããïŒãããçŽãããšããïŒåé¡ãªãããã¯ã¹ãïŒã€ã§ããŠããŸãïŒããäžã€ã®ããã¯ã¹ã¯ã«ã¡ã©ã®å察åŽãªã®ã§ïŒããŠã¹ã§èŠç·ãç§»åãå察åŽãèŠãããã«ãããšèŠããŸãïŒ
pro3-3.cppã®å Žåã¯ïŒèŠç¹ã®x,y,z座æšã(3, 0, 1) [m]ã§ïŒèŠç·ã(-180, 0, 0)ãªã®ã§-x軞æ¹åã§ãïŒåå¿è ããã®ããã°ã©ã ã§ã¯ïŒåç®ã®ããã¯ã¹ã(5, 0, 0)ã«ããã®ã§ïŒèŠããªãããã§ãïŒstart颿°ã®xyz[3] = {6.0, 0.0, 1.0}ã«å€æŽãããšèŠããããã«ãªããŸãïŒ
ã«ã¡ã©ã®èšå®ã¯ãããã¥ãããããããŸãããïŒ
ã§ã
——————————————
void start()
{
static float xyz[3] = { 3.0, 0.0, 1.0};
static float hpr[3] = {-180.0, 0.0, 0.0};
dsSetViewpoint(xyz, hpr);
dsSetSphereQuality(3);
}
// ããŒã«ã®çæ
void makeBall()
{
dMass m1;
dReal x0 = -10.0, y0 = 0.0, z0 = 2.2;
ball.r = 0.2;
ball.m = 1.0;
ball.body = dBodyCreate(world);
dMassSetZero(&m1);
dMassSetSphereTotal(&m1, ball.m, ball.r);
dBodySetMass(ball.body, &m1);
dBodySetPosition(ball.body, x0, y0, z0);
ball.geom = dCreateSphere(space, ball.r);
dGeomSetBody(ball.geom, ball.body);
}
// æé¢ã®çæ
void makeSlope()
{
dReal lx = 0.125, ly = 0.50, lz = 1.0; // 絶察座æšç³»x,y,zè»žã«æ²¿ã£ãé·ã
dReal x = 5, y = 0, z = 0; // éå¿ã®åº§æš
dReal ax = 0, ay = 1, az = 0; // å転軞ãã¯ãã«
dReal angle = 0.0 * M_PI / 180.0; // å転è§
slope = dCreateBox(space, lx, ly, lz); // çŽæ¹äœãžãªã¡ããªã®çæ
dMatrix3 R;
dRFromAxisAndAngle(R, ax, ay, az, angle);
dGeomSetPosition(slope, x, y, z); // äœçœ®ã®èšå®
dGeomSetRotation(slope, R); // å§¿å¢ã®èšå®
}
void makeSlope2()
{
dReal lx = 0.125, ly = 0.50, lz = 1.0; // 絶察座æšç³»x,y,zè»žã«æ²¿ã£ãé·ã
dReal x = 0, y = 0, z = 0; // éå¿ã®åº§æš
dReal ax = 0, ay = 1, az = 0; // å転軞ãã¯ãã«
dReal angle = 0.0 * M_PI / 180.0; // å転è§
slope2 = dCreateBox(space, lx, ly, lz); // çŽæ¹äœãžãªã¡ããªã®çæ
dMatrix3 R;
dRFromAxisAndAngle(R, ax, ay, az, angle);
dGeomSetPosition(slope2, x, y, z); // äœçœ®ã®èšå®
dGeomSetRotation(slope2, R); // å§¿å¢ã®èšå®
}
ã§ã
ã¡ãŒã«ã«ãŠéä¿¡ããŸããã
ã¢ãã¬ã¹ã¯ãâââããã¡ãã§ããããã§ããïŒ
確èªãé¡ãããŸãã
åå¿è ããïŒ
ãã¿ãŸããïŒãœãŒã¹ã³ãŒããç§ã«å±ããŠããŸããïŒ
ãŸãïŒãéãã«ãªã£ããœãŒã¹ã³ãŒãã¯ãã®ããã°ã§å ¬éããŸãã®ã§ïŒããã§ãè¯ãã£ããå床ãéããã ããïŒ
ã§ã
å æ¥ã¯å ·äœçã«è³ªåãããç³ãèš³ãããŸããã§ããã
èªåã¯ä»pro3-3ã®ãµã³ãã«ããã°ã©ã ã䜿çšããé·æ¹åœ¢ãäºã€ã«ããããšããŠããŸããã圱ãäºã€ã§ããã ãã§åãå Žæã«çæãããŠããŸããŸãã
å ã«èªåããœãŒã¹ã³ãŒãã¯ã¡ãŒã«ã§éããŸããã
ãããããé¡ãããŸãã
åå¿è ããïŒ
ODEæ¬ã®ã©ã®ããã°ã©ã ãåèã«ããŠïŒã©ã®ãããªããã£ãäœãããšããŠãããå ·äœçã«æããŠé ããŸãããïŒããšã©ãŒã¡ãã»ãŒãžãªã©ãæããŠé ãããšå©ãããŸãïŒ
ãã®æ å ±ã ãã§åå¿è ããã®åé¡ã解決ã§ãããïŒç§ã¯è¶ èœåè ã§ãããïŒ
ã§ã
ã¯ãããŸããŠãä»å¹Žãã忥ç ç©¶ã§æ¬ãèŠãªããODEããã£ãŠããŸãããåæ©ã®åæ©ã§ã€ãŸãããŠããŸããŸããã
ããã£ã®çæãå šç¶ã§ããŸããã
ãããããé¡ãããŸãã
ãããã§ãïŒã§ãæ§ïŒèª¬æäžè¶³ã§ãã¿ãŸããïŒ
ãœãŒã¹ã³ãŒããæ·»ä»ããã¡ãŒã«ãéããŸããã®ã§ã芧ããã ããŸãã§ããããïŒ
å ã«ã³ã¡ã³ãããæãšã¯éãã®ã§ããïŒç¶æ³ãåãããããããããBunnyãã³ããŒããŠïŒäœã«ããŠãããããæ¥è§Šãããã³ãŒãã«å€æŽããŸããïŒ
bunnyãæ¥è§Šããç¬é
“bNormalizationResult”failed…
ã®ãã€ã¢ãã°ãåºãŠèœã¡ãŠããŸããŸãïŒ
äœãæãåœãããšããããããŸãããïŒãããããé¡ãããããŸãïŒ
ãããããã
ODEæ¬ãè³Œå ¥ããããšãããããŸãã
ããŠãå®éã«çŸè±¡ã確èªããªããšåçã§ããªã®ã§ããœãŒã¹ã³ãŒãããŸãšããŠç§ã«éã£ãŠé ããŸããïŒ
ã§ã
ã¯ãããŸããŠïŒããããšãããŸãïŒæ¬ãè²·ã£ãŠODEãã¯ãããŠã¿ããã®ã®ïŒããã3æ¥ã§ãã£ããåé¡ã«çªãåœãã£ãŠããŸããŸããïŒ
äžèšã®çŸè±¡ã«ã€ããŠäœããã³ãããåç¥ã§ãããã¢ããã€ã¹ããã ããªãã§ããããïŒïŒODE0.9ãVC++6.0ã§äœ¿ã£ãŠããŸãïŒïŒ
3ç« ã®ããããŒããèœãšããšãããŸã§ã¯ã§ããã®ã§ããïŒããã«ããã£ãŒãããããèªåã§è¿œå ãããå éšãšã©ãŒãåºãŠããŸããŸããïŒ
ããã£ãŒãããããšããããŒããã¶ã€ãã£ãç¬éã§ODEå éšãšã©ãŒã®ãã€ã¢ãã°ãã»ã»ã»
ãªãã ãTimesh-Trimeshã®è¡çªãããŸãäœåããŠããªãããã§ãïŒïŒããã£ãŒããããåäœãšå°é¢ïŒããã£ãŒãããããšODEããªããã£ããšã®è¡çªã¯åé¡ãªãïŒ
ããã£ãŒããããã®ããªãŽã³ã远å ãã以å€ã¯[ããã°ã©ã 3.4]ãã»ãŒãã®ãŸãŸäœ¿ã£ãŠããŸãïŒ
ãããããé¡ãããããŸãïŒ