STEP9: ãã¥ãŒããã€ããããã
ODEæ¬ãç°¡å!å®è·µ!ããããã·ãã¥ã¬ãŒã·ã§ã³ – Open Dynamics Engineã«ããããããããã°ã©ãã³ã°
ãã®Step9ã§ãïŒ
æçµç« ã§ãïŒããã§ã¯ïŒããã¡ãã§ããããç·ã®åãã€ã¡ãŒãžãããã¥ãŒããã€ãããããã¢ãã«ãããããã¡ããïŒKensei-Chanãã®éååŠïŒééååŠãæ±ãïŒè¶³è£ã«å§åã»ã³ãµãåãä»ãïŒZMPã«ããç°¡åãªæ©è¡å¶åŸ¡ã«ããæ©ãããããšãæçµããã·ã§ã³ã§ãïŒ
ã·ãã¥ã¬ãŒã¿ã®åç»ãäžã«æ²èŒããŸãïŒãœãŒã¹ã³ãŒãã¯ãã®ããŒãžã®æ³šæäºé ãèªã¿ïŒããŠã³ããŒãïŒãã«ããã³ã³ãã€ã«ãå®è¡ããŠãã ããïŒ
- EX9.3ïŒããã¥ãŒããã€ãã¢ãã« ãããããã¡ããã (P223)
-
説æïŒControlããŒãæŒããªããpããŒãæŒããšïŒkensei-chanããžã£ã³ããçå°ããŸãïŒãã ãïŒODEæ¬ã§ã¯è·³èºå¶åŸ¡ã¯å
šããµããŠããŸããã®ã§ããã¯åãªããã¢ã§ãïŒç®æšè§åºŠã®æç³»åããŒã¿ãäžããŠããã ãã§ãããããããã¡ãããã«æ©è¡å¶åŸ¡ãçµã¿èŸŒã¿ç¡äºæ©ãããŠãã ããïŒ
- ããã°ã©ã 9.1ïŒãåã»ãã«ã¯ã»ã³ãµã(P227)
-
説æïŒãã¥ãŒããã€ãããããã«ã¯æ¬ ãããªãå§åïŒãã«ã¯ã»ã³ãµã®å®è£
äŸã§ãïŒODEæ¬P227ã®ããã°ã©ã 32è¡ç®ã«èª€ãããããŸããã®ã§èšæ£ããŸããïŒãã¶ããããææããããšãããããŸããïŒ
ïŒæçµæŽæ°æ¥ã2008-7-27)
é¢ç¯éšããŽã ã®ããã«äŒžã³çž®ã¿ãããªããŠããããŸããïŒ
èŽäœãšäžè éšãŸã§ã衚çŸããããšããŠããŸãã
ïŒtorso,upper_arm_dummy1,upper_arm_dummy2,upper_arm)
è©é¢ç¯ã§ãããŒïŒãšïŒãããŒïŒïŒäžè éšïŒã®éãé¢ããŠããŸã£ãŠãããããããããããŠãããšããäžè éšã®è³ªéã軜ãããããçµåããŸããã
shinããïŒ
ãèªåãäœæããããããã¡ã€ã«ã®èªã¿èŸŒã¿ã«å€±æããæã«ïŒã©ã®ãããªãšã©ãŒã¡ãã»ãŒãžãåºãã®ã§ããããïŒ
詳ããæããŠé ãããšããããããããŸããïŒ
CodeBlocksãã䜿ãã§ããïŒ
ã§ã
å ã»ã©ã®çåã¯è§£æ±ºãããšæãããŸãã
ãã ãèªåã§äœæããããããŒãã¡ã€ã«ã®èªã¿èŸŒã¿ã«å€±æããŠããŸããŸãã
ããããžã§ã¯ããâããã¡ã€ã«ã®è¿œå ãããããããŒãã¡ã€ã«ã远å ããŠã¿ãŸãããã ãã§ãããã©ããããããã®ã§ããããïŒ
Code::Blocksãã€ã³ã¹ããŒã«ããŠè©Šãããšããã®ã§ããããã«ãããéã«å¿ èŠãªcbpãã¡ã€ã«ã¯ã©ãããã°ããã®ã§ããããïŒ
http://demura.net/wordpress/9ode/548.htmlã§äœã£ãhello.cbpãoriginal.cbpã«ååã倿ŽããŠoriginalãã©ã«ãå ã«ç§»åããŠãããžã§ã¯ãã¿ã€ãã«ãoriginalã«ããã°ããã®ã§ããããïŒ
My Documents\src\ode\roboSimu\originalãã©ã«ãå ã¯
original.cpp ãšãoriginal.h ã ãã§ãã
shinããã
ODE0.10.1, æ°ããOPCODEã§è©ŠããŠããããŸããïŒãããã§ããšã©ãŒåºãå Žåã¯ãããã£ãé¢ç¯ãå°ããã€å¢ãããŠãããã©ãã®ããã£ãŸãã¯é¢ç¯ã§ãšã©ãŒãåºãã調ã¹ãããã®éšåã®äœçœ®ãªã©ã倿ŽãããšçŽããããããŸããã
ãã°ãåãäœæ¥ã¯ãšãŠãæéããããã®ã§ããœãŒã¹ã³ãŒããéã£ãŠãããããã°ãçŽããŠéãè¿ããšãããµãŒãã¹ãæäŸããããšã¯é£ããã§ãããªããšããèªåã§è§£æ±ºããé¡ãããŸãã
ã§ã
æžãå¿ãããã£ãã®ã§ä»ãè¶³ããŸãã
ãææ°ããããããŸãã
[ODE INTERNAL ERROR 1]
assertion âbNormalizationResultâ failed in _dNormalize4() [../../include/ode/odemath.h]
[Microsoft Visual C++ Runtime Library]
Runtime Error!
Program ..0\home\Shingo\src\ode-0.9\myprog\original\original.exe
This application has requested the Runtime to terminate it an unusual way.Please contact the applicationâs support team for more infomation.
ãã®ãããªãšã©ãŒãã§ãŸãã
ãããããããã°ãçŽæ¥ããã°ã©ã ãèŠãŠãããããšã¯å¯èœã§ããããïŒ
å¯èœã§ããããã¡ãŒã«ã§é£çµ¡ãããã ãããã®ã§ããã
ã¡ãªã¿ã«ç°å¢ã¯ã
Windows XP
ãVer 0.9
MSYS + MinGW
ãšãªã£ãŠãããŸãã
shinããïŒ
ãã¿ãŸããïŒ
å®å šãªãšã©ãŒã¡ãã»ãŒãžãã«ããã¢ã³ãããŒã¹ãããŠèŠããŠãã ããïŒ
äœãããããããããŸããã®ã§
ã§ã
äœåºŠã質åãã¿ãŸããã
仿°ã¥ããã®ã§ãããLCP internal error 1ãšãããšã©ãŒãçºçããŠãŸããã
ããã«ãããåå ã¯ãªãã§ããããïŒ
ãããããé¡ãããŸãã
shinããã
ãœãŒã¹ã³ãŒãã詳现ã«èªãã§é ãããããšãããããŸããmakeRobot颿°ã¯ãææã®ãšããæ£ç¢ºã§ã¯ãªãã®ã§å€æŽããŸããããŸããè¶³ã®äœçœ®ãèã«å¯ŸããŠããåæ¹ã«ããåŸæ¹ã«è»¢åããããã£ãã®ã§ãããåŸæ¹ã«å€æŽããŸããã
æ°ãããœãŒã¹ã³ãŒãã¯kensei081026.zipã§ãã
ãŸããäœãåé¡ãããã°ãææãã ããã
ã§ã
shinããã
åå¥ãã¡ã€ã«ãmakeããããã®makefileãç§ã¯äœã£ãŠããŸããã®ã§ã³ã¡ã³ãã§ããŸãããç°¡åã«ããããã«codeblocksã䜿ã£ãŠããŸããhttp://demura.net/wordpress/tutorials/ode2ã®èªäœODEããã°ã©ã ã®ãã«ãæ³ã«ãã®æ¹æ³ãæžããŠããŸãã
OPCODEã¯è¡çªæ€åºã«äœ¿ãããŠããã©ã€ãã©ãªãdInitODE()ã¯ODE0.8ããå°å ¥ãããŠããŸãã
ã§ã
Ver 0.10 ã§ã¯ã³ã³ãã€ã«ã®æ¹æ³ã¯(original/original.cppãšãããã¡ã€ã«ãã³ã³ãã€ã«ãããšã)
/myprog/original>makeã CONFIG=DebugLib
ã§ããã®ã§ããããïŒ
ãŸããOPCODEãšããã®ã¯ïŒ
ããšãã°dInitODE()ãªã©ã®ããšã§ããïŒ
Ver0.10ãã䜿ãããã®ã«ãªã£ããã®ã
shinããã
LCP Internal Errorãåæã«çºçããªããªãåå ãéããŸãã
ODE0.10.1ãšæ°ããOPCODEã詊ããŠãã ãããdemura.netã®ã€ã³ã¹ããŒã«æ³ã§ã¯æ°ããOPCODEã䜿ãããã«èšå®ããŠããŸãã
ãªãã以äžã¯MSVCã³ã³ãã€ã©ã®4244çªãš4305çªã®ã¯ãŒãã³ã°ïŒèŠåïŒãåºãªãããã«ããŠããŸãã
#ifdef MSVC
#pragma warning(disable:4244 4305) // for VC++, no precision loss complaints
#endif
kensei.cppå ã®makeRobot颿°ã§sphereã衚瀺ããããšããdMassSetBoxTotalã䜿ã£ãŠãããããªã®ã§ããã倧äžå€«ãªã®ã§ããããïŒ
dMassSetSphereTotalã§ã¯ãªãã®ã§ããïŒ
ãã®ãããªãšã©ãŒã¯è¡šç€ºãããŠããŸããã
以äžã®ãããªããšã衚瀺ãããŸãã
Runtime Error!
Program ..0/home/(çç¥)/original.exe
This application has requested the Runtime to terminate it an unusual way.
Please contact the application’s support team for more infomation.
詊ããŠã¿ãŸããããçµæã¯å€ãããŸããã§ããã
ODEã®Verãåå ãšããã®ã¯ããããŸããïŒ
ã¡ãªã¿ã«Ver 0.9ã§ãã
kensei.cppå ã®
—————————————-
#ifdef MSVC
#pragma warning(disable:4244 4305) // for VC++, no precision loss complaints
#endif
—————————————-
ãšã¯äœãè¡ã£ãŠããã®ã§ããïŒ
shinããã
以äžã®ãšã©ãŒã衚瀺ãããŸããïŒ
ODE Message 3: LCP internal error
ãã®å Žåããšã©ãŒã®åå ã¯æ°å€èšç®ã®èª€å·®ãã¢ãã«ã®ééãããã®ä»ã«çç±ã«ãããã·ã¹ãã ãèšè¿°ããè¡åãç¹ç°è¡åã«ãªãèšç®ã§ããªãç¶æ ã§ãã
ãŸããshinããã®ããããã¢ãã«ã¯æ£ããã§ããïŒããã£ããžã§ã€ã³ãã®äœçœ®é¢ä¿ãçŸå®ã§ã¯ããããªãå Žåã«ãã®ãšã©ãŒãçºçããå ŽåããããŸãã
以äžã詊ããŠããã®çµæãæããŠããããŸããïŒ
ïŒïŒãå粟床ã€ã³ã¹ããŒã«ãªãå粟床ã«å€æŽ
ïŒïŒãdWorldStep()ããdWorldQuickStep()ã«å€æŽ
ïŒïŒãERPãCFMã®å€ããããã倿ŽãããCFMã¯å€§ããå€ïŒ1e-3以äžïŒãERPã¯ã¢ãã«ã«ãããŸãã倧ããå ŽåïŒ0.8以äžïŒã«ãšã©ãŒãæ¶ããå ŽåããããŸãã
ã§ã
kensei.cpp ãšãleg.cppããåèã«ããŠäºè¶³æ©è¡ããããããšããŠããŸãã
ã³ã³ãã€ã«ã¯éãã®ã§ãããå®è¡ãããšä»¥äžã®ãããªãšã©ãŒæãã§ãŸãã
åå ã¯äœãªãã§ããããïŒ
ãŸãã解決æ³ã¯ã©ããªããŸããïŒ
ïŒãšã©ãŒæïŒ
assertion “bNormalizationResult” failed in _dNormalize4() [../../include/ode/odemath.h]
kensei.cpp ãš leg.cppããåèã«äºè¶³æ©è¡ããããããšããŠããŸãã
ã³ã³ãã€ã«ã¯éãã®ã§ãããå®è¡ãããšä»¥äžã®ãããªãšã©ãŒãã§ãŠããŸããŸãã
åå ã¯ãªããªãã§ããããïŒ
ãŸãã解決çã¯ã©ã®ããã«ãªããŸããïŒ
ïŒãšã©ãŒæïŒ
assertion “bNormalizationResult” failed in _dNormalize4() [../../include/ode/odemath.h]
ããã°ã©ã ãèŠãŠããããã°ããããããããšãããã®ã§ããã»ã»ã»ã»
kensei.cpp ãšãleg.cppããåèã«äºè¶³æ©è¡ããããããšããŠããŸãã
ã³ã³ãã€ã«ã¯éãã®ã§ãããå®è¡ãããšä»¥äžã®ãããªãšã©ãŒãåºãŠããŸããŸãã
ã©ã®ãããªããšãåå ãªã®ã§ããããïŒ
解決çã¯ã©ã®ããã«ãªããŸããïŒ
ïŒãšã©ãŒæïŒ
assertion “bNormalizationResult” failed in _dNormalize4() [../../include/ode/odemath.h]
shinããã
ãææããããšãããããŸããæ°å¹Žåã«äœã£ãããã°ã©ã ãªã®ã§äœæ ãã®ãããªãã¹ããããããããŸãããããããã«ããã¢ã³ãããŒã¹ãã§ééããã®ã ãšæããŸãããŸããnearCallback颿°ãã©ãã¿ãŠãããããã®ã§èšæ£ããŸããã
ããã«ãããããã¡ããã®åæäœçœ®STARTX, STARTYã倿Žãããšãã©ãã©äºä»¶ã«ãªããã°ãèšæ£ããŸããã
ãããããŸã§ãããã°ã©ã ãèŠçŽãããšãã§ããŸããããŸããäœããããããšæã£ãããé£çµ¡ãã ããã
ã§ã
ãããã«ããã®ã§ããäžåºŠã
kensei.cppã®nearCallback颿°ã®ãªãã§ã²ãšã€ã®ifæã®äžã«åãæ¡ä»¶ãåºãŠããã®ã¯ãªãã§ããïŒ ||ã§åºåã£ãŠããã®ã§æå³ãæãã®ãçåã«æããŸããã
äŸïŒif ((b1 == rlink[LEFT_UPPER_ARM_DUMMY1].id) || â
ãããã(b1 == rlink[LEFT_UPPER_ARM_DUMMY2].id) || ãã
ãããã(b1 == rlink[LEFT_UPPER_ARM_DUMMY1].id) || â
ãããã(b1 == rlink[LEFT_UPPER_ARM_DUMMY2].id) ||ãã
ãããã(b1 == rlink[LEFT_THIGH_DUMMY1].id) ããã||
ããã (b1 == rlink[LEFT_THIGH_DUMMY2].id) ãã || ããããã
(b1 == rlink[LEFT_THIGH_DUMMY1].id) ||
(b1 == rlink[LEFT_THIGH_DUMMY2].id) ||ãããããã
(b1 == rlink[LEFT_FOOT_DUMMY].id) ||
(b1 == rlink[LEFT_FOOT_DUMMY].id)) return;
ïŒâãéè€ããŠããšãã§ãã
kensei.cppã®nearCallback颿°ã®ãªãã§ã²ãšã€ã®ifæã®äžã«åãæ¡ä»¶ãåºãŠããã®ã¯ãªãã§ããïŒ ||ã§åºåã£ãŠããã®ã§æå³ãæãã®ãçåã«æããŸããã
äŸïŒif ((b1 == rlink[LEFT_UPPER_ARM_DUMMY1].id) || â
ãããã(b1 == rlink[LEFT_UPPER_ARM_DUMMY2].id) || ããâ
ãããã(b1 == rlink[LEFT_UPPER_ARM_DUMMY1].id) || â
ãããã(b1 == rlink[LEFT_UPPER_ARM_DUMMY2].id) ||ãã â
(b1 == rlink[LEFT_THIGH_DUMMY1].id) ããã|| â
ããã (b1 == rlink[LEFT_THIGH_DUMMY2].id) ãã || ããããã â
(b1 == rlink[LEFT_THIGH_DUMMY1].id) || â
(b1 == rlink[LEFT_THIGH_DUMMY2].id) ||ãããããã â
(b1 == rlink[LEFT_FOOT_DUMMY].id) || â
(b1 == rlink[LEFT_FOOT_DUMMY].id)) return; â
ïŒâãéè€ããŠããšãã§ãã
YasuããïŒ
ã©ãããããŸããŠïŒ
ãã®ãµã³ãã«ããã°ã©ã ã®åé¡ç¹ã¯ããããã®ã¢ãã«ãšODEã®ã³ãŒããæ··åšããŠããç¹ã§ãïŒæ¬æ¥ã¯ïŒããããã¢ãã«ã¯äœããã®ïŒæ¬¡å ã¢ãã«ãã©ãŒãããã§è¡šçŸããŠïŒãã以å€ã®ã³ãŒããšå®å šã«åããã¹ãã§ãïŒ
ãã ïŒãããŒã¹ã¿ããã§ã¯ïŒæ¬¡å ã¢ãã«ãã¡ã€ã«ã®ããŒããŒããªãã®ã§ïŒODEã®ã©ã€ãã©ãªã ãã䜿ã£ããµã³ãã«ããã°ã©ã ãšããŠã¯ä»æ¹ããªãããªãšèããŠããŸãïŒ
ã§ã
ããããšãããããŸããã
YasuããïŒ
埡ææããããšãããããŸãïŒ
ãŠã§ããµã€ããªãã¥ãŒã¢ã«ã«äŒŽãïŒãªã³ã¯ãåããŠããŸããïŒ
ODE0.10ã§ãã«ãïŒã³ã³ãã€ã«ã§ããããã«å€æŽããŸããã®ã§ïŒããŠã³ããŒãã³ãŒããŒããããŠã³ããŒãããŠãã ããïŒ
http://demura.net/dl
ã§ã
質åã§ãã
ODEæ¬ã®223ããŒãžèæ³šã«æžãããŠãããkensei.zipãã¯ã©ãããããŠã³ããŒãã§ããã®ã§ããããã
æããŠããã ãããšå©ãããŸãã