ODE質å•ãƒ»è¦æœ›å‹Ÿé›†9!
ã¾ãšï¼Œã“ã“ã«ã‚ã‚‹ODEã®FAQã‚’èªã‚“ã§ã‹ã‚‰ã‚³ãƒ¡ãƒ³ãƒˆãŠé¡˜ã„ã—ã¾ã™ï¼Ž
ODE質å•ãƒ»è¦æœ›8ï¼ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒï¼‘ï¼ï¼ä»¶ã‚’è¶…ãˆã¾ã—ãŸã®ã§ï¼Œæ–°ã—ã„質å•ã‚„è¦æœ›ã¯ã“ã¡ã‚‰ã«ãŠé¡˜ã„ã—ã¾ã™ï¼ã€€ã”質å•ã®å†…容を詳ã—ã説明ã—ã¦é ‚ã‘ã‚‹ã¨çš„確ã«å›žç”ã§ãã¾ã™ã®ã§ï¼Œæ™‚間を節約ã§ãã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
ã¾ãŸã€ç§ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚„ã”自分ã®åŠªåŠ›ã«ã‚ˆã‚Šå•題ãŒè§£æ±ºã•れãŸå ´åˆã«ã€å•題ã®åŽŸå› ãŒã‚ã‹ã‚Œã°æŠ•稿ã—ã¦é ‚ãã¨å¤§å¤‰åŠ©ã‹ã‚Šã¾ã™ã€‚ãã®æƒ…å ±ã¯ODEã®åˆå¿ƒè€…ã«ã¨ã£ã¦é‡è¦ãªã‚‚ã®ã§ã™ã€‚ã‚る程度ãŸã¾ã‚Šã¾ã—ãŸã‚‰FAQã«æŽ² 載ã—ãŸã„ã¨æ€ã„ã¾ã™ã®ã§ã”å”力ã®ã»ã©ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã¾ãŸã¾ãŸè³ªå•ãŒã‚りã¾ã™ã€‚
ヒンジジョイントを用ã„ã¦ï¼’脚ãƒãƒœãƒƒãƒˆã‚’製作ã—ã¦ã„ã¾ã™ã€‚
ヒンジジョイントã®åŠ›åˆ¶å¾¡ãªã‚“ã§ã™ãŒã€è†é–¢ç¯€ã«åŠ›ã‚’åŠ ãˆã¦è†ã‚’曲ã’ã¦ã„ãã€åŠ›ã‚’ä¸€æ°—ã«è§£æ”¾ã™ã‚‹ã“ã¨ã§å‰æ–¹ã«è·³èºã•ã›ãŸã„ã®ã§ã™ãŒã€ã©ã†ã—ãŸã‚‰ã„ã„ã§ã—ょã†ã‹ï¼Ÿ
ã„ã¤ã‚‚ãŠä¸–話ã«ãªã£ã¦ã„ã¾ã™ãŒã€ä»Šå›žã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
æ–°å¹´ã‚ã‘ã¾ã—ã¦ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã¾ãŸãŠèžãã—ãŸã„ã“ã¨ãŒï¼’ã¤ã»ã©ã§ãã¾ã—ãŸã®ã§ï¼Œå‹æ‰‹ãªãŒã‚‰è³ªå•ã•ã›ã¦ã„ãŸã ãã¾ã™ã€‚
1ã¤ç›®ã®è³ªå•ã§ã™ãŒã€
特定ã®ç‰©ä½“ã«åŠ›ã‚’åŠ ãˆãŸã¨ãã®æŒ™å‹•を見るãŸã‚, dBodyAddTorque(body, x, y, z);を使用ã—ãŸã®ã§ã™ãŒï¼Œæ€ã£ã¦ã‚‚ãªã„æ–¹å‘ã«åŠ›ãŒåŠ ã‚ã£ã¦ã—ã¾ã„ã¾ã™ã€‚
地é¢ã®ä¸Šã«ç›´æ–¹ä½“を生æˆã—ã¦ã€ãã®ç›´æ–¹ä½“ã«åŠ›ã‚’åŠ ãˆãŸã®ã§ã™ãŒã€x軸方å‘ã«åŠ›ã‚’åŠ ãˆã‚‹ã¨ãªãœã‹y軸方å‘ã«ç›´æ–¹ä½“ãŒå‹•ã,逆ã«y軸方å‘ã«åŠ›ã‚’åŠ ãˆã‚‹ã¨x軸方å‘ã«å‹•ãã¾ã™ã€‚
ãã—ã¦z軸方å‘ã«åŠ›ã‚’åŠ ãˆã‚‹ã¨æ£è² 関係ãªã地é¢ã«ã¤ã„ãŸçŠ¶æ…‹ã§ã‚†ã£ãりã¨å›žè»¢ã—ã¦ã—ã¾ã„ã¾ã™ã€‚
ï¼’ã¤ç›®ã®è³ªå•ã§ã™ãŒã€
カプセル型ã®ç‰©ä½“ã®ç«¯ã¨åˆ¥ã®ç‰©ä½“ã¨ãƒ’ンジã§å›ºå®šã™ã‚‹ã¨ã€æŒ¯ã‚Šåã®ã‚ˆã†ã«å‹•ãã¾ã™ãŒã€é–¢ç¯€ã«æ‘©æ“¦ãŒå˜åœ¨ã—ãªã„ãŸã‚ã„ã¤ã¾ã§ã‚‚å‹•ãç¶šã‘ã¦ã—ã¾ã„ã¾ã™ã€‚
ãã“ã§è²´æ›¸ã®p33ã®æ‘©æ“¦ãƒ¢ãƒ‡ãƒ«ã‚’使ã„ï¼Œè‡ªç„¶ã«æ¢ã¾ã‚‹ã‚ˆã†ã«ã—ãŸã¯ãšãªã®ã§ã™ãŒã€ä¸€åˆ‡å‹•ãã«å¤‰åŒ–ãŒã‚りã¾ã›ã‚“。kp
ï¼’ã¤ã¨ã‚‚特ã«ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã„ãªã„ã®ã§ã€å•題点ãŒåˆ†ã‹ã‚‰ãšéžå¸¸ã«å›°ã£ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªã“ã¨ãŒèµ·ãã¦ã—ã¾ã†åŽŸå› ã«å¿ƒå½“ãŸã‚ŠãŒã‚りã¾ã—ãŸã‚‰ãœã²ã¨ã‚‚アドãƒã‚¤ã‚¹ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã“ã‚“ã«ã¡ã¯ã€‚
今ã€
ODEを使ã£ã¦è»Šã‚’円軌é“ã€ã‚‚ã—ãã¯æ¥•円軌é“ã‚’æãよã†ã«å‹•ã‹ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚
ãã“ã§ã€ãƒ’ンジ2を使ã£ã¦ã„ã‚‹ã®ã§ã™ãŒã€
Axis1ã®è§’度を変ãˆã¦è»Šã®è»Œé“を曲ã’ã‚‹ã“ã¨ãŒã§ããªãã¦å›°ã£ã¦ã„ã¾ã™ã€‚
具体的ã«ã©ã®ã‚ˆã†ã«è¨å®šã™ã‚Œã°ã„ã„ã®ã§ã—ょã†ã‹ï¼Ÿ
本を見ãŸã®ã§ã™ãŒã€ã¡ã‚‡ã£ã¨è‰¯ã分ã‹ã‚‰ãªã‹ã£ãŸã®ã§ã‚¢ãƒ‰ãƒã‚¤ã‚¹ã„ãŸã ã‘ã‚‹ã¨åŠ©ã‹ã‚Šã¾ã™ã€‚
新年早々ã™ã¿ã¾ã›ã‚“。
ビルドã—ã¦å®Ÿè¡Œã‚’ã—ãŸã¨ã“ã‚ã€ãƒ“ルドã¯ã§ããŸã®ã§ã™ãŒã€ä¸‹è¨˜ã®ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã—ã¾ã„ã€æç”»ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ã©ã†ã™ã‚Œã°è§£æ±ºã§ãã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
ODE INTERNAL ERROR1
assertion”bNormalizationResult” failed in _dNormalize4()[../../include/ode/odemath.h]
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã¯ã˜ã‚ã¾ã—ã¦ã€logmanã¨ç”³ã—ã¾ã™ã€‚
ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã‚„å…ˆç”Ÿã®æœ¬(ç°¡å˜ï¼å®Ÿè·µï¼ãƒãƒœãƒƒãƒˆã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³)ã‚’å‚考ã«ã€ã‚る制御プãƒã‚°ãƒ©ãƒ を書ã„ã¦ã„ã‚‹ã®ã§ã™ãŒã‚‚ã†å°‘ã—ã®ã¨ã“ã‚ã§è¡Œãè©°ã£ã¦ã„ã‚‹ã®ã§è³ªå•ã•ã›ã¦ãã ã•ã„。
ç´°ã„æ£’ã®å…ˆã«ãƒœãƒ¼ãƒ«(çƒä½“)ã‚’ä¹—ã›ã¦ã€ãれをè½ã¨ã•ãªã„よã†ã«æ£’ã‚’ã†ã¾ãå‹•ã‹ã™ã¨ã„ã†åˆ¶å¾¡ãƒ—ãƒã‚°ãƒ©ãƒ を書ã„ã¦ã„ã¾ã™ã€‚(倒立振åã®æ§˜ãªæ„Ÿã˜ã§ã™ã€‚)
ボールã®å§¿å‹¢ã‚’å–å¾—ã™ã‚‹æ™‚ã«ã€dBodyGetRotation(dBodyID, R) ã®å½¢ã§æ›¸ã„ã¦ã„ã‚‹ã®ã§ã™ãŒã€ã“れã ã¨
『’dBodyGetRotation’ : 関数㫠2 個ã®å¼•数を指定ã§ãã¾ã›ã‚“。ã€
ã¨ãªã‚Šã€å§¿å‹¢ã‚’ã†ã¾ãå–å¾—ã§ãã¾ã›ã‚“。
ボールã®X,Y軸方å‘ã®å‚¾ãã«å¯¾ã—ã€æ£’ã‚’å‹•ã‹ã—ã¦åˆ¶å¾¡ã™ã‚‹ã‚ˆã†ã«æ›¸ã„ã¦ã„ã‚‹ã®ã§ã€ãれãžã‚Œã®X,Y軸ã§ã®å‚¾ãΘã€Ï†ã‚’å¾—ã‚‹å¿…è¦ãŒã‚ã‚‹ã®ã§ã™ãŒã€ã“ã®å ´åˆã¯ã©ã®ã‚ˆã†ã«æ›¸ã‘ã°ã‚ˆã„ã§ã—ょã†ã‹ã€‚
ã”æ•™æŽˆãŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
ã“ã‚“ã«ã¡ã¯ã€‚åˆå¿ƒè€…ã§ã™ã€‚
今ã€ç°¡å˜ï¼å®Ÿè£…ï¼ãƒãƒœãƒƒãƒˆã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’èªã¾ã›ã¦ã„ãŸã ã„ã¦ã„ã‚‹ã®ã§ã™ãŒã€ã‚ã‹ã‚‰ãªã„ã¨ã“ã‚ãŒã‚りã¾ã™ã€‚
p33ã®åŠ›åˆ¶å¾¡ã®ã¨ã“ã‚ãªã®ã§ã™ãŒã€ã€Œæ“作é‡uã‹ã‚‰æ‘©æ“¦ãƒˆãƒ«ã‚¯trqを引ã„ãŸå€¤ã‚’ジョイントã«ä¸Žãˆã‚‹ãƒˆãƒ«ã‚¯ã¨ã™ã‚‹ã€ã¨ã‚ã‚‹ã®ã§ã™ãŒã€ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã«ä¸Žãˆã‚‹ãƒˆãƒ«ã‚¯ãŒãªã‚“ã§u-trqã«ãªã‚‹ã®ã‹ãŒã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“。
ã©ã†ã„ã†ã“ã¨ãªã®ã§ã—ょã†ã‹ï¼Ÿã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã¯ã˜ã‚ã¾ã—ã¦ã“ã‚“ã«ã¡ã‚。HAã¨ç”³ã—ã¾ã™ã€‚
質å•ã•ã›ã¦ã„ãŸã ããŸã„ã®ã§ã™ãŒã€
ã‚るベクトルãŒã‚ã£ãŸæ™‚ã€ãã®ãƒ™ã‚¯ãƒˆãƒ«ã‚’法線ベクトルã¨ã™ã‚‹
é¢ã®å§¿å‹¢è¡Œåˆ—(絶対座標系ã§)を算出ã—ãŸã„ã®ã§ã™ãŒã€ã©ã†ã—ãŸã‚‰ã‚ˆã„ã§ã—ょã†ã‹ï¼Ÿ
dRFrom2Axes()を使ã£ã¦ã€å§‹ç‚¹ãƒ™ã‚¯ãƒˆãƒ«ã¨ã€çµ‚点ベクトルã‹ã‚‰ç®—出ã—ãŸ
姿勢行列ã¯çµ¶å¯¾åº§æ¨™ç³»ã§ã¯ãªã„よã†ã§ã™ã€‚
ã”æŒ‡å°Žã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã“ã®é–“ã¯è³ªå•ã«ç”ãˆã¦ã„ãŸã ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ãŠã‹ã’ã§é †èª¿ã«ãƒ—ãƒã‚°ãƒ©ãƒ を作れã¦ã„ãŸã®ã§ã™ãŒã€ã¡ã‚‡ã£ã¨ã—ãŸå•題ãŒã§ã¦ããŸãŸã‚質å•ã•ã›ã¦ã„ãŸã ãã¾ã™ã€‚
demo_buggyã®å ´åˆã€ã‚¿ã‚¤ãƒ¤ã¨åœ°é¢ã®ä½ç½®ã‚’話ã—ãŸçŠ¶æ…‹ã§ãƒã‚®ãƒ¼ã‚’生æˆã—ã¦ã„ãŸã®ã§ã™ãŒã€ãれをタイヤã¨åœ°é¢ãŒã‚®ãƒªã‚®ãƒªã‚ãŸã‚‰ãªã„ä½ç½®ï¼ˆã‚¿ã‚¤ãƒ¤ã¨åœ°é¢ã®è·é›¢ã‚’0.01ã«è¨å®š)ã§ç”Ÿæˆã—ãŸã¨ã“ã‚ã€é–‹å§‹æ™‚ã«ãƒã‚®ãƒ¼ãŒå°‘ã—ã¯ãるよã†ã«ãªã£ã¦ã—ã¾ã„ã¾ã—ãŸã€‚
ã‚る程度離ã›ã°è·³ããªããªã‚‹ã®ã§ã™ãŒã€ã§ãã‚‹ã“ã¨ãªã‚‰åœ°é¢ã«æŽ¥åœ°ã—ãŸçŠ¶æ…‹ã‹ã‚‰å§‹ã‚ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚地é¢ã¨ã‚¿ã‚¤ãƒ¤ã¯æœ€æ‚ªé›¢ã—ã¦ã‚‚ã„ã„ã®ã§ã™ãŒã€é–¢ç¯€ã§ç¹‹ãŒã£ã¦ã¯ã„ãªã„ã‘ã©è§¦ã‚Œã¦ã„る(ãã„ã“ã‚“ã§ã¯ã„ã‘ãªã„ã®ã§ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¯å¿…è¦ï¼‰ç‰©ä½“も後々必è¦ã«ãªã£ã¦ãã‚‹ã®ã§ã€è³ªå•ã•ã›ã¦ã„ãŸã ãã¾ã—ãŸã€‚
物体åŒå£«ã«ç”Ÿã˜ã‚‹å力ã¯ä½•ã«ã‚ˆã£ã¦èµ·ã“ã‚‹ã‚‚ã®ãªã®ã§ã—ょã†ã‹ï¼Ÿãªã«ã‹è§£æ±ºç–ãŒã‚りã¾ã—ãŸã‚‰æ•™ãˆã¦ã„ãŸã ã‘ãŸã‚‰å¹¸ã„ã§ã™ã€‚
åˆã‚ã¾ã—ã¦ã€‚yamã¨ã„ã„ã¾ã™ã€‚
コンピュータ言語ã®åˆå¿ƒè€…ãªã®ã§ã‚¨ãƒ©ãƒ¼ã®å¯¾å‡¦ã«å›°ã£ã¦ã„ã¾ã™ã€‚
ODE本ã®P169~170ã«ã‚るプãƒã‚°ãƒ©ãƒ 6.3ã®50行目ã®dsDrawBoxã«ã¤ã„ã¦ã§ã™ã€‚
ã©ã†ã—ã¦ã‚‚ãã®éƒ¨åˆ†ã ã‘ã€
『1 番目ã®å¼•æ•°ã‚’ ‘const dReal *’ ã‹ã‚‰ ‘const float []‘ ã«å¤‰æ›ã§ãã¾ã›ã‚“。(æ–°ã—ã„æ©Ÿèƒ½ ; ヘルプをå‚ç…§)ã€ã¨ãªã‚Šãƒ“ルドをã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
解決法を教ãˆã¦é ‚ã‘ãªã„ã§ã—ょã†ã‹ã€‚
ã¡ãªã¿ã«visualC++を使ã„ã€ODE0.11.1を使ã£ã¦ã„ã¾ã™ã€‚
ãŠå¿™ã—ã„æ™‚期ã«ç”³ã—訳ã‚りã¾ã›ã‚“ãŒã€
よã‚ã—ããŠããŒã„ã—ã¾ã™ã€‚
今ã¾ã§ã¯å•題ãªã動作ã—ã¦ã„ãŸãƒãƒœãƒƒãƒˆã‚¢ãƒ¼ãƒ ãŒæ€¥ã«çˆ†ç™ºã—ã¦ã—ã¾ã„,ãれ以é™ä½•度デãƒãƒƒã‚°ã—ã¦ã‚‚åŒã˜ç¾è±¡ãŒèµ·ãã¦ã—ã¾ã†ã®ã§ã™ãŒï¼Œã“れã¯ä½•ãŒåŽŸå› ãªã®ã§ã—ょã†ã‹?
(他ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã‚‚commandã‚’å—ã‘付ã‘ãªããªã‚‹ã¨ã„ã£ãŸä¸å…·åˆãŒå‡ºã¦ã„ã¾ã™ï¼Žï¼‰
対処法ãªã©ã”ã–ã„ã¾ã—ãŸã‚‰æ•™ãˆã¦é ‚ããŸã„ã¨æ€ã„ã¾ã™ï¼Ž
ã¾ã£ãŸãã‚ã‹ã‚‰ãªã„ã®ã§æŠ•稿ã•ã›ã¦ã„ãŸã ãã¾ã—ãŸï¼Ž
差動駆動型ã®ãƒãƒœãƒƒãƒˆï¼ˆå‰2輪,後1輪)ã§ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ã—ã¦ã„ã‚‹ã®ã§ã™ãŒ
摩擦ã®è¨å®šãŒã¾ã£ãŸãã‚ã‹ã‚Šã¾ã›ã‚“.
例ãˆã°ï¼Œå³è»Šè¼ªã‚’å‹•ã‹ã—ã¦ï¼ˆå·¦è»Šè¼ªã¯å‹•ã‹ã•ãšï¼‰
車体をãã®å ´ã§å›žè»¢ã•ã›ãŸã„ã®ã«ï¼Œ
左車輪ãŒå›žè»¢ã¯ã—ã¦ã„ãªã„ã®ã§ã™ãŒæ»‘ã£ã¦ã„るよã†ã«å‹•ã„ã¦ã—ã¾ã„ã¾ã™ï¼Ž
ãªã«ã‹æ”¹å–„ç–ã¯ã‚りã¾ã™ã‹ï¼Ÿ
ODEåˆå¿ƒè€…ã§ã™ã€‚ã„ã‚ã„ã‚ã¨ã“ã®ã‚µã‚¤ãƒˆã‚’å‚考ã«ODEをやらã›ã¦ã‚‚らã£ã¦ã„ã¾ã™ãŒã€è³ªå•ãŒã‚りã¾ã™ã€‚
今ã€ï¼–脚ãƒãƒœãƒƒãƒˆã®è·³èºã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ã—よã†ã¨è€ƒãˆã¦ã„ã‚‹ã®ã§ã™ãŒã€ODE上ã§å¯èƒ½ãªã®ã§ã—ょã†ã‹ï¼Ÿ
イメージã¨ã—ã¦ã¯ãƒãƒƒã‚¿ã®ã‚¸ãƒ£ãƒ³ãƒ—ã®ã‚ˆã†ãªå½¢ã§ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã§ããŸã‚‰ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
サンプルプãƒã‚°ãƒ©ãƒ ã«ã¯ãã®å ´ã§ãƒ›ãƒƒãƒ”ングã™ã‚‹ã‚‚ã®ã¯ã‚りã¾ã—ãŸãŒã€å‰æ–¹ã¸è·³èºã§ãるよã†ã«ã—ãŸã„ã®ã§ã™ã€‚
ã¾ã 構想を練ã£ã¦ã„る段階ã§ã€å…·ä½“çš„ãªã¨ã“ã‚を決ã‚ã¦ã„ãªãã¦ã‚¢ãƒã‚¦ãƒˆãªè³ªå•ã«ãªã£ã¦ã—ã¾ã„申ã—訳ãªã„ã®ã§ã™ãŒã€è¿”信よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ODEã§è‰²ã€…シュミレートã•ã›ã¦ã‚‚らã£ã¦ã¾ã™ã€‚
質å•ãªã‚“ã§ã™ãŒã€æ•™ç§‘書ã«ãƒžãƒ‹ãƒ”ュレータã®é‹å‹•å¦ã«ã‚ˆã‚‹ä½ç½®åº§æ¨™ã‚„姿勢表示ã¨ã„ã†ã®ãŒã‚りã¾ã—ãŸãŒã€ãれã®è‰²ã€…ãªãƒ‡ãƒ¼ã‚¿ã‚’å–ã£ã¦å¦ç¿’ã—ã¦ã„ã‚‹ã‚“ã§ã™ãŒã€ã©ã†ã—ã¦ã‚‚ã€ã‚¹ãƒ†ãƒƒãƒ—ãŒæ—©ã™ãŽã¦ï¼Ÿã‹ã‚ã‹ã‚Šã¾ã›ã‚“ãŒã€é‡è¤‡ã—ãŸãƒ‡ãƒ¼ã‚¿ãŒé‡ãªã‚Šã™ãŽã¦ã€ãƒ‡ãƒ¼ã‚¿ãŒè†¨å¤§ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚ã‚ーボードã§å‹•ã‹ã—ãŸé–¢ç¯€è§’分動ã„ãŸéš›ã®ãƒ‡ãƒ¼ã‚¿ã ã‘ã‚’ã¨ã£ã¦ã„ããŸã„ã®ã§ã™ãŒã€è‰¯ã„方法ã‹ã‚¢ãƒ‰ãƒã‚¤ã‚¹ãŠé¡˜ã„ã—ã¾ã™ã€‚
(ã“ã®ã¾ã¾ã§ã¯è’削りãªãƒ‡ãƒ¼ã‚¿ã¨ã‚ã†ã¨ã—ã¦ã‚‚ã‹ãªã‚Šç´°ã‹ããªã‚Šã¾ã™ï¼‰
以å‰ã¯å¤±ç¤¼ã—ã¾ã—ãŸï¼Ž
今回ã¯é•ã†ä»¶ã§ã®è³ªå•ãªã®ã§ã™ãŒï¼Œ
ãƒãƒœãƒƒãƒˆã‚¢ãƒ¼ãƒ ã«æŠ•çƒå‹•作を行ã‚ã›ã¦ãƒœãƒ¼ãƒ«ã‚’投ã’ã•ã›ã¦ã„ã‚‹ã®ã§ã™ãŒï¼Œ
ã“ã®ã‚¢ãƒ¼ãƒ ã«ç‹™ã£ãŸã¨ã“ã‚ã‚’ç‹™ã£ã¦æŠ•ã’ã‚‹ã¨ã„ã†ã“ã¨ã¯å¯èƒ½ã§ã—ょã†ã‹ï¼Ÿ
åˆå¿ƒè€…ã§ã™ã€‚自作ã®ãƒ—ãƒã‚°ãƒ©ãƒ をビルドã—ã¦å®Ÿè¡Œã—ãŸã¨ã“ã‚ã€ãƒ“ルドã«ã¯æˆåŠŸã—ãŸã®ã§ã™ãŒã€ã‚³ãƒžãƒ³ãƒ‰ãƒ—ãƒãƒ³ãƒ—トãŒã§ã¦ãã¦ã€ä»¥ä¸‹ã®ã‚ˆã†ãªã‚¨ãƒ©ãƒ¼ãŒè¡¨ç¤ºã•れã¦ã—ã¾ã„ã€å…ˆã«é€²ã¿ã¾ã›ã‚“。ã©ã†ã„ã—ãŸã‚‰ã‚ˆã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ODE INTERNAL ERRER2
Bad argument(s) in dGeomSetBody()
ã©ãªãŸã‹ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
自分ã§ä½œã£ãŸãƒ—ãƒã‚°ãƒ©ãƒ をビルドã—ã¦ã„ã‚‹ã®ã§ã™ãŒã€ä»¥ä¸‹ã®ã‚ˆã†ãªã‚¨ãƒ©ãƒ¼ãŒãŸãã•ん出ã¦ã—ã¾ã£ã¦ãƒ“ルドã§ãã¾ã›ã‚“。
stray ‘\128′ in program|
stray ‘\128′ in program|
ã©ã†ã™ã‚Œã°è§£æ±ºã§ãã‚‹ã®ã‹ã‚ã‹ã‚‰ãªã„ã®ã§ã€ã©ãªãŸã‹åŠ©ã‘ã¦ãã ã•ã„ï¼ï¼
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
プãƒã‚°ãƒ©ãƒ 自体ã¯ODE本ã®ãƒ—ãƒã‚°ãƒ©ãƒ 6.3ã§
ãã®ãƒ—ãƒã‚°ãƒ©ãƒ ã«æœ¬ã‚µã‚¤ãƒˆã«æŽ²è¼‰ã•れã¦ã„ãŸfeedbackプãƒã‚°ãƒ©ãƒ ã‚’
入れã¦ã„ã‚‹ã ã‘ãªã®ã§ã™ãŒï¼Ž
ã“ã®å ´åˆã¯ç‰¹åˆ¥ãªè¨å®šãªã©ãŒå¿…è¦ãªã®ã§ã—ょã†ã‹ï¼Ÿ
meltdownã•ん,
ã”質å•ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã™ã¿ã¾ã›ã‚“ãŒï¼Œã“ã®æƒ…å ±ã ã‘ã§ã¯åŽŸå› ã‚’ç‰¹å®šã§ãã¾ã›ã‚“.
プãƒã‚°ãƒ©ãƒ ミスã®ã‚ˆã†ãªæ°—ãŒã—ã¾ã™ãŒï¼Žï¼Žï¼Ž
ã§ã‚€
åˆã‚ã¦è³ªå•ã•ã›ã¦ã„ãŸã ãã¾ã™ï¼Ž
ç§ã¯ç¾åœ¨ãƒãƒœãƒƒãƒˆã‚¢ãƒ¼ãƒ ã‚’ODE上ã§ä½œæˆã—ã¦ã„ã‚‹ã®ã§ã™ãŒï¼Œ
ãã®ã‚¢ãƒ¼ãƒ ã®å„関節ã«ã‹ã‹ã‚‹ãƒˆãƒ«ã‚¯ã‚’知るãŸã‚ã«feedback関数を使用ã—
デãƒãƒƒã‚°ã™ã‚‹ã¨feedback->t1[NUM]ã«ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã€Œå¼ãŒè©•価ã§ãã¾ã›ã‚“ã€
ã¨è¡¨ç¤ºã•れã¾ã™ï¼Žã“れã¯ä½•ãŒæ‚ªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ã¯ã˜ã‚ã¾ã—ã¦ï¼ŒODEåˆå¿ƒè€…ã§ã„ã¤ã‚‚サイトをå‚考ã«ã•ã›ã¦ã„ãŸã ã„ã¦ã‚‹è€…ã§ã™ï¼Žã„ããªã‚Šã§ç”³ã—訳ã‚りã¾ã›ã‚“.質å•ãŒã‚ã‚‹ã®ã§ã™ãŒï¼Œã‚¸ã‚ªãƒ¡ãƒˆãƒªã®é€Ÿåº¦ã‚’è¨å®šã—ãŸã„ã®ã§ã™ãŒæ–¹æ³•ãŒåˆ†ã‹ã‚Šã¾ã›ã‚“,何ã‹ã‚ˆã„方法ã¯ã‚りã¾ã›ã‚“ã‹ï¼ŸãŠé¡˜ã„ã—ã¾ã™ï¼Ž
åˆå¿ƒè€…ã§ã™ã¿ã¾ã›ã‚“。下記ã®å†…容ã«ã¤ã„ã¦æ•™ãˆã¦ãã ã•ã„。
ODE0.11.1ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ³• (Visual C++ 2008 EE)ã§â€¢B. ODEã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ ã«ã¤ã„ã¦ã®äº‹ãªã®ã§ã™ãŒã€â– 以下ã®ã‚ˆã†ã«ã‚³ãƒžãƒ³ãƒ‰ã‚’打ã¡è¾¼ã‚€ï¼Žã‚«ãƒƒãƒˆã‚¢ãƒ³ãƒ‰ãƒšãƒ¼ã‚¹ãƒˆ ã®å ´åˆã¯ä»¥ä¸‹ã®æ–‡å—列を使用ã—ï¼Œè‡ªåˆ†ã§æ‰“ã¡è¾¼ã‚€å ´åˆã¯ï¼’個ã®-(マイナス)æ–‡å—ãŒã¤ãªãŒã£ã¦è¦‹ãˆã‚‹ã®ã§ï¼Œä¸‹ç”»åƒã‚’å‚ç…§ã—ã¦æ³¨æ„æ·±ãæ‰“ã¡è¾¼ã‚“ã§ãã ã•ã„.
â– cd c:\ode-0.11.1\build â– premake4 –with-demos åˆã¯ã€ãƒ›ãƒ¼ãƒ ページã®ã‚ˆã†ã«æ‰“ã¡è¾¼ã‚“ã§ã„ã‚‹ã®ã§ã™ãŒã€Visual C++2008用ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒç”Ÿæˆã•れる.
ã¨ãªã£ã¦ã„ã‚‹ã®ã§ã™ãŒã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒç”Ÿæˆã•れã¾ã›ã‚“。
コマンドプãƒãƒ³ãƒ—トã§C:¥Usersï¿¥jun>ã¨ãªã£ã¦ã„ã¦ãƒ›ãƒ¼ãƒ ページã®ã‚ˆã†ã«ï¼£ï¼šï¿¥odeã®ã‚ˆã†ã«æ›¸ãæ›ãˆã‚‹ã“ã¨ãŒå‡ºæ¥ãšã«ã„ã¾ã™ã€‚ã©ã®ã‚ˆã†ã«ã™ã‚Œã°ï½ƒãƒ‰ãƒ©ã‚¤ãƒ–ã®odeã«å¤‰æ›´ã§ãã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿæ•™ãˆã¦ä¸‹ã•ã„。ã“ã‚“ãªåŸºæœ¬çš„ãªã“ã¨ã‚’èžã„ã¦ã™ã¿ã¾ã›ã‚“。
ODE内ã§å¹²æ¸‰æ™‚ã«ç‰©ä½“é–“ã«åƒã力を抜ãå‡ºã™æ–¹æ³•ã¯ã‚りã¾ã™ã‹ï¼Ÿï¼ˆAddForceãªã©ã§ãƒ¦ãƒ¼ã‚¶ãŒåŠ ãˆã‚‹åŠ›ã§ã¯ãªã,シミュレーション内ã§ç‰©ä½“を拘æŸã™ã‚‹ãŸã‚ã«åƒã„ã¦ã„る力ã§ã™ï¼‰
例ãˆã°ï¼ŒåºŠã«ãŠã„ã¦ã‚る物体ãŒåºŠã‹ã‚‰å—ã‘る垂直抗力ãªã©ã§ã™ï¼Ž
ç¾åœ¨dJointGetFeedback()を使ã„ï¼Œå„æŽ¥è§¦ç‚¹ã«åƒã力ã®å’Œã‚’ã¨ã£ã¦ã„ã¾ã™ãŒã†ã¾ãã„ã£ã¦ã„ã¾ã›ã‚“.和をã¨ã‚‹ä»¥å¤–ã®æ–¹æ³•ã¯ã‚りã¾ã™ã‹ï¼Ÿ
3自由度ã®ãƒžãƒ‹ãƒ”ュレータã§ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’色々ã—ã¦ã‚‹ã‚“ã§ã™ãŒã€ã‚µãƒ³ãƒ—ルã‹ã‚‰æ”¹è‰¯ã—ã¦ã¾ã™ãŒã€ã©ã†ã—ã¦ã‚‚マニピュレータãŒã‚°ãƒ«ã‚°ãƒ«å‹æ‰‹ã«å›žã‚Šã ã—ãŸã‚Šã™ã‚‹ã®ã§ã™ãŒã€‚。。
連続ã‹ã‚‰æ€¥ã«ä¸é€£ç¶šã«ãªã£ã¦ã—ã¾ã†ã®ã¯ã‚ã‹ã‚‹ã®ã§ã™ãŒã€ã‚ーボードæ“作ã§ã¯ãªãå…¨è‡ªå‹•ã§æ§˜ã€…ãªå‹•ãを見ãŸã„ã®ã§ã‚ー制御ãªã—ã§ã¯ã©ã†ã—ãŸã‚‰ã„ã„ã§ã—ょã†ã‹
関節ã«ã¤ã„ã¦ã®è³ªå•ã§ã™ã€‚
ヒンジ関節ã¨ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼é–¢ç¯€ã‚’組ã¿åˆã‚ã›ãŸé–¢ç¯€ã‚’作りãŸã„
ã¨æ€ã£ã¦ã„ã¾ã™ã€‚ヒンジ関節ã®axisã¨bodyã®è·é›¢ãŒ
スライダー関節ã§å¤‰åŒ–ã™ã‚‹ã¨ã„ã†ã‚¤ãƒ¡ãƒ¼ã‚¸ã§ã™ã€‚
ODEã§ã¯é–¢ç¯€ã©ã†ã—を拘æŸã™ã‚‹ã“ã¨ãŒã§ããªã„ã®ã§
物体1ï¼ãƒ’ンジ関節-物体2-スライダー関節-物体3
ã¨ã™ã‚‹ã‚Œã°ã‚ˆã„ã“ã¨ã¯ã‚ã‹ã‚‹ã®ã§ã™ãŒï¼Œ
ã“ã®é–¢ç¯€ã‚’1ã¤ã®é–¢ç¯€ã¨ã¿ãŸã„ã®ã§ï¼Œç‰©ä½“2ã¯è³ªé‡ã‚¼ãƒã®ä»®æƒ³çš„物体
ã¨ã—ãŸã„ã®ã§ã™ãŒã€ODEã§ã¯ã§ããªã„よã†ã§ã—ãŸã€‚
何ã‹ã„ã„æ–¹æ³•ã¯ã‚りã¾ã›ã‚“ã‹ï¼Ÿ
ã“ã‚“ã«ã¡ã¯
調ã¹ã¦ã‚‚ãªã‹ãªã‹åˆ†ã‹ã‚‰ãªã„ã®ã§æ•™ãˆã¦ãã ã•ã„.
 ジョイントã®ç¨®é¡žã«é–¢ã‚らãšï¼Œã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®æ•°ãŒï¼”ï¼å€‹ã‚’è¶…ã™ã¨ãƒ“ルドã¯é€šã£ã¦ã‚‚プãƒã‚°ãƒ©ãƒ ãŒå®Ÿè¡Œã§ããªã„よã†ãªæ°—ãŒã—ã¾ã™ï¼Ž
 ODEã«ã¯ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®æ•°ãªã©ã«åˆ¶é™ãŒã‚ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿãれã¨ã‚‚ç§ã®ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ãŒé–“é•ã£ã¦ã„ã¦å®Ÿè¡Œã§ããªã„ã ã‘ã§ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®æ•°ã¯é–¢ä¿‚ãªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
 
ã“ã‚“ã«ã¡ã¯ã€‚kanaã¨ç”³ã—ã¾ã™ã€‚
ã„ã¤ã‚‚ã“ã¡ã‚‰ã®ï¼¨ï¼°ã§å‹‰å¼·ã•ã›ã¦ã„ãŸã ã„ã¦ãŠã‚Šã¾ã™ã€‚
早速質å•ãªã®ã§ã™ãŒï¼Œï¼¯ï¼¤ï¼¥ã§ãƒ—ãƒã‚°ãƒ©ãƒ を実行ã—ãŸéš›ï¼Œã€ŒODE Message 2: zero length vector(c:\ç•¥\src\rotation.cpp:113)ã€ã¨ã„ã†ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºã¦ã—ã¾ã„ã¾ã™ã€‚
dRealåž‹ã®ã¨ã‚る変数ã«0を入れãŸãŸã‚ã«ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºã‚‹ã‚ˆã†ã§ã™ã€‚メッセージãŒå‡ºã¦ã‚‚プãƒã‚°ãƒ©ãƒ 自体ã¯å®Ÿè¡Œã§ãã¾ã™ãŒï¼Œè¡¨ç¤ºã•れãªã„よã†ã«ã™ã‚‹æ–¹æ³•ã¯ãªã„ã®ã§ã—ょã†ã‹ï¼ˆ0以外ã®å€¤ã‚’入れれã°ã„ã„ã¨æ€ã†ã®ã§ã™ãŒï¼Œãƒ—ãƒã‚°ãƒ©ãƒ 上,0ãŒä»£å…¥ã•れるã“ã¨ã‚‚ã‚ã‚‹ã®ã§ãƒ»ãƒ»ãƒ»ï¼‰ï¼Ÿ
ã‚‚ã—ã‹ã—ãŸã‚‰ï¼¯ï¼¤ï¼¥ã«ç›´æŽ¥é–¢ä¿‚ãªã„質å•ã‹ã‚‚ã—れã¾ã›ã‚“ãŒï¼Œã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
LCP internal error s<=0ã«ã¤ã„ã¦
ã“ã®ã‚¨ãƒ©ãƒ¼ãŒèµ·ããŸå¾Œã§ã¯ãŠããªã„å ´åˆã¨æ¯”ã¹ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®çµæžœãŒå¤‰ã‚ã£ã¦ãã¾ã™ã‹ï¼Ÿã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
4脚ãƒãƒœãƒƒãƒˆã®æ©è¡Œã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’æ”¹é€ ã—ã¦6本足ã®èœ˜è››ã®ã‚ˆã†ãªæ„Ÿã˜ã«ã—ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
今ã€è„šã‚’6本ã«ã™ã‚‹ã“ã¨ã¯æˆåŠŸã—ãŸã®ã§ã™ãŒã€æ©è¡ŒãŒã†ã¾ãã„ã‹ãšè„š2本ã®ã²ã–ã®é–¢ç¯€ã‚ˆã‚Šä¸‹ãŒé£›ã‚“ã§ã„ã£ã¦ã—ã¾ã„ã¾ã™ã€‚
解決方法ã€ã‚¢ãƒ‰ãƒã‚¤ã‚¹ãªã©ã‚ã‹ã‚‹äººæ•™ãˆã¦ãã ã•ã„。
度々失礼ã—ã¾ã™, 振りåã«é–¢ã—ã¦ã®ä»¶å†ã³ã”質å•ãŒã‚りã¾ã™.ã“ã®å‰ã®è³ªå•ã§å˜æŒ¯ã‚Šåã«é–¢ã—ã¦ã¯ã‚¹ãƒ†ãƒƒãƒ—æ•°ã‚’å°ã•ãã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ¸›è¡°ã—ãªããªã‚Šã¾ã—ãŸ.
äºŒé‡æŒ¯ã‚Šåã‚‚åŒã˜ã‚ˆã†ã«ã—ã¦ã‚る程度起ã“らãªããªã£ãŸã®ã§ã™ãŒ,30分程度ã§ã¯æ¸›è¡°ã›ãšã«æœ€åˆã¨åŒã˜ã‚ˆã†ã«å¤§ããæŒ¯ã‚Œ, ã‚«ã‚ªã‚¹çš„ãªæ„Ÿã˜ãŒè¦‹ã‚Œã‚‹ã®ã§ã™ãŒ, 3時間ã»ã©çµŒéŽã—ãŸçŠ¶æ…‹ã§ã¯ã‚„ã¯ã‚Šç›®ã«è¦‹ãˆã¦ãµã‚Šå¹…ãŒå°ã•ããªã‚Šæ¸›è¡°ã—ã¦ã—ã¾ã„ã¾ã—ãŸ.
ã‚„ã¯ã‚Š, äºŒé‡æŒ¯ã‚Šåã¨ã„ã†ç‰¹æ®Šçжæ³åŒ–ã§ã¯ã‚る程度ã“ã†ãªã£ã¦ã—ã¾ã†ã®ã¯ä»•æ–¹ã®ãªã„ã“ã¨ãªã®ã§ã—ょã†ã‹, よã‚ã—ããŠé¡˜ã„ã—ã¾ã™.
http://brain.cc.kogakuin.ac.jp/~kanamaru/Chaos/DP/
最åˆã®30分ã»ã©ã¯ã»ã¼ã“ã¡ã‚‰ã¨åŒã˜å‹•ãã‚’ã—ã¾ã™.
ã”自分ã§ä½œæˆã•れãŸãƒ—ãƒã‚°ãƒ©ãƒ ã¨ã„ã†ã“ã¨ã§ï¼Œã©ã®ã‚ˆã†ã«texturepath.hをインクルードã—ã¦ã„ã‚‹ã‹ã‚ã‹ã‚Šã¾ã›ã‚“ãŒï¼Œ
#include “texturepath.h”ã®å ´åˆã¯ï¼Œtexturepath.hã‚’odeã®demoã‹ã‚‰è‡ªåˆ†ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¨åŒã˜ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã„ã¦ãã ã•ã„.
ãªãŠï¼Œtexturepath.hã®ä¸èº«ã‚’ã¿ã‚‹ã¨
パスを ”../../drawstuff/textures”ã§æŒ‡å®šã—ã¦ã„ã‚‹ã®ã§ï¼Œã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®ï¼’ã¤ä¸Šã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªï¼ˆãƒ•ォルダ)ã«drawstuffãŒãªã„ã¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ï¼Ž
ã§ã‚€
ã“ã‚“ã«ã¡ã‚。æ©è¡Œãƒ—ãƒã‚°ãƒ©ãƒ é ‘å¼µã£ã¦ã‚„ã£ã¦ã¿ã‚ˆã†ã¨æ€ã„ã¾ã™ã€‚
ã¨ã€ãã®å‰ã«ã€Žç°¡å˜ï¼Visual C++ 2008 EEを使ã£ãŸè‡ªä½œODE0.11.1プãƒã‚°ãƒ©ãƒ ã®ãƒ“ルド法ã€ã‚’å‚考ã«è‡ªä½œã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’å‹•ã‹ã—ã¦ã¿ãŸã®ã§ã™ãŒã€ã€Žfatal error C1083: include ファイルを開ã‘ã¾ã›ã‚“。’texturepath.h’: No such file or directoryã€ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã—ã¾ã„ã¾ã—ãŸã€‚
ã¡ãªã¿ã«å‚考ã«ã—ãŸãƒ—ãƒã‚°ãƒ©ãƒ ã¯ã€Žamotor.cppã€ã§ã™ã€‚
『簡å˜ï¼â€¦ã€ã®ã»ã†ã¯ã€Žhello.cppã€ã‚’例ã«ã—ã¦ã„ãŸã®ã§ã€Žtexturepath.hã€ã®æ–‡ãŒç„¡ã‹ã£ãŸã‚å‹•ãã¾ã—ãŸã€‚
‘texturepath.h’ã¨ã¯ãªã‚“ã§ã™ã‹ï¼Ÿ
é•·æ–‡ã™ã¿ã¾ã›ã‚“。回ç”ãŠé¡˜ã„ã—ã¾ã™ã€‚
å‰å›žã€2ã¤ã®ãƒœãƒ‡ã‚£ã‚’åˆä½“ã•ã›ã‚‹ä»¶ã«ã¤ã„ã¦è³ªå•ã—ãŸã®ã§ã™ãŒã€
「固定ã€ã¨ã„ã†ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’用ã„ãŸã®ã§ã™ãŒã€ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯è‰¯ããªã„ã¨
本ã«è¨˜è¼‰ã•れã¦ã„ã‚‹ã®ã§ã™ãŒã€ã©ã†è‰¯ããªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ã¾ãŸã€ä»–ã®è‰¯ã„方法ã¯ã‚りã¾ã™ã‹ï¼Ÿ
よã‚ã—ãã€ãŠé¡˜ã„ã—ã¾ã™ã€‚
ã¯ã˜ã‚ã¾ã—ã¦ã€AHã¨ç”³ã—ã¾ã™ã€‚
ジョイントã«ã¤ã„ã¦è³ªå•ãªã®ã§ã™ãŒã€2ã¤ã®ãƒœãƒ‡ã‚£ã‚’åˆä½“ã•ã›ã‚‹ï¼ˆä¾‹ãˆã°ã€ç›´æ–¹ä½“ã¨çƒã‚’åˆä½“ã•ã›ãŸãƒžãƒƒãƒæ£’ã®ã‚ˆã†ãªã‚‚ã®ï¼‰ã¨ãã«ã¯ã©ã®ã‚ˆã†ã«ã—ãŸã‚‰è‰¯ã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ã”æŒ‡å°Žã€ãŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
物体(1cm四方ã®ç«‹æ–¹ä½“)ã«dBodySetForceã§åŠ›ã‚’åŠ ãˆã¦ç‰©ä½“ã®é‹å‹•状態をシミュレートã—ã¦ã„ã‚‹ã®ã§ã™ãŒï¼ŒåŒã˜æ¡ä»¶ã§åŠ›ã‚’åŠ ãˆã¦ã‚‚ä½ç½®ãŒæ¯Žå›žå¤šå°‘ãšã‚Œã¾ã™ï¼ˆ0.3mmã»ã©ï¼‰
ã“ã®ç¨‹åº¦ã®èª¤å·®ã¯ä»•æ–¹ãŒãªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ã‚‚ã—æ£ç¢ºã«ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ãƒˆã‚’行ã†ãƒ‘ラメータãŒã‚ã‚‹ã®ã§ã—ãŸã‚‰æ•™ãˆã¦ãã ã•ã„.
KKã•ん,
物体ãŒç©ºä¸ã«ã‚ã‚‹ã®ã‹ï¼Œãれã¨ã‚‚地é¢ã¨æŽ¥ã—ã¦ã„ã‚‹ã‹ãªã©ã‚‚ã†å°‘ã—具体的ã«èª¬æ˜Žã—ã¦é ‚ã‘ã¾ã›ã‚“ã‹ï¼Ÿ
動力å¦è¨ˆç®—ã¯dWorldStepã®æ–¹ãŒdWorldQuickStepよりæ£ç¢ºã§ã™ï¼Žstepsizeã‚‚å°ã•ãã—ã¦ãã ã•ã„.ã¾ãŸï¼Œå‰›ä½“ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ã™ã‚‹å ´åˆã¯ERP=1.0, CFM=0.0ã«è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
ãªãŠï¼ŒODEã¯ï¼”次ã®ãƒ«ãƒ³ã‚²ã‚¯ãƒƒã‚¿ã§ã¯ãªã1次ã®ã‚ªã‚¤ãƒ©ãƒ¼æ³•を使ã£ã¦ã„る部分ãŒã‚ã‚‹ã®ã§ï¼Œè¨ˆç®—精度ãŒå¿…è¦ãªã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯å‘ãã¾ã›ã‚“.
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ERPã¨CFMã¯
contact[i].surface.soft_erp = 0.8;
contact[i].surface.soft_cfm = 0.02;
ã¨ã—ã¦ã„ã¾ã—ãŸï¼Ž
シミュレートã—ã¦ã„る立方体ã®ä½ç½®ã¯ï¼Œã“ã¡ã‚‰ã®æŒ‡å®šã—ãŸä½ç½®ã¨ã°ããƒ€ãƒ³ãƒ‘ã§æŽ¥ç¶šã•れ追従ã™ã‚‹å½¢ã«ãªã£ã¦ã„ã¾ã™ï¼Žã°ãダンパã§è¨ˆç®—ã—ãŸåŠ›ã‚’dBodySetForceã§ç«‹æ–¹ä½“ã«åŠ ãˆã¦ã„ã¾ã™ï¼Žç«‹æ–¹ä½“ã«ã¯é‡åŠ›ã¯ã‹ã‹ã£ã¦ã„ã¾ã›ã‚“.
記入ã—忘れã¾ã—ãŸï¼Ž
シミュレートã—ã¦ã„ã‚‹ç«‹æ–¹ä½“ã¯æŒ‡å…ˆã‚’模擬ã—ã¦ã„ã¾ã™ï¼Žã“ã®ç«‹æ–¹ä½“ãŒODE内ã«é…ç½®ã•れãŸç®±ã‚’æŒã£ã¦é›¢ã™ã¨ã„ã£ãŸä¸€é€£ã®å‹•作をシミュレートã—ã¦ã„ã¾ã™ï¼Ž
contact[i].surface.soft_erp = 1.0;
contact[i].surface.soft_cfm = 0;
エラーãŒã§ã‚‹å ´åˆã¯ï¼Œsoft_cfmã‚’å°ã•ãªå€¤ï¼ŒãŸã¨ãˆã°1e-10ã¨ã—ã¦ã‚‚åŒã˜çжæ³ã§ã™ã‹ï¼Ÿ
ã°ãダンパã¯ï¼Œsoft_erpã¨soft_cfmを使ã£ã¦å®Ÿç¾ã—ã¦ã„ã‚‹ã®ã§ã™ã‹ï¼Ÿ
ã§ã‚€
・ツール(T)→オプション(O)ã‚’é¸æŠžã—,VC++ディレクトリã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ã™ã‚‹ï¼Ž
・VC++ディレクトリã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ã™ã‚‹ï¼Ž
・myprogã¨ã„ã†ãƒ•ォルダã«è‡ªåˆ†ã§å付ã‘ãŸãƒ•ォルダを作りã€ãã®ä¸ã«template.vcprojã¨è‡ªåˆ†ã§ä½œæˆã—ãŸã‚½ãƒ¼ã‚¹ãƒ•ァイル(今回ã¯amotor.cpp)を入れる。(ã¡ãªã¿ã«åå‰ãŒã‹ã¶ã‚‰ãªã„よã†ã«mot.cppã€mot.vcprojã¨åå‰ã‚’変更ã—ã¾ã—ãŸãŒã€ä¸èº«ã®ã‚½ãƒ¼ã‚¹ã¯ã„ã˜ã£ã¦ã¾ã›ã‚“。)
・ソリューションエクスプãƒãƒ¼ãƒ©ãƒ¼ã®ä¸ã®ãƒ•ォルダåã‚’å³ãƒžã‚¦ã‚¹ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ã€Œåå‰ã®å¤‰æ›´(M)ã€ã‚’é¸æŠžã—ã€motã«åå‰ã‚’変更ã—ãŸã€‚
・「ソースファイルã€ã«ã‚«ãƒ¼ã‚½ãƒ¼ãƒ«ã‚’当ã¦ã€å³ãƒžã‚¦ã‚¹ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ã€ã€Œè¿½åŠ (D)ã€â†’「既å˜ã®é …ç›®(G)ã€â†’「既å˜é …ç›®ã®è¿½åŠ ã€ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ãŒé–‹ãã®ã§mot.cppã‚’é¸æŠžã—ã€è¿½åŠ ã—ãŸã€‚
・「motã®ãƒ“ルド(U)ã€ã‚’é¸æŠžã—ビルドã—ãŸã¨ã“ã‚å…ˆã»ã©ã®ã‚¨ãƒ©ãƒ¼ãŒâ€¦
texturepath.hã®ãƒ‘ã‚¹æŒ‡å®šãŒæ‚ªã„ã®ã§ã‚¨ãƒ©ãƒ¼ã«ãªã£ãŸã®ã ã¨æ€ã„ã¾ã™ï¼Ž
ã¾ãŸï¼Œtexturepath.hã¯ä¸èº«ã‚’見れã°ã‚ã‹ã‚Šã¾ã™ãŒï¼Œtextureã®ãƒ‘ã‚¹ï¼ˆå ´æ‰€ï¼‰ãŒæ›¸ã‹ã‚ŒãŸãƒ˜ãƒƒãƒ€ãƒ¼ãƒ•ァイルã§ã™ï¼Ž
ã§ã‚€
ã¯ã˜ã‚ã¾ã—ã¦AHã•ん,
é…ããªã£ã¦ã™ã¿ã¾ã›ã‚“.出張ãŒå¤šã‹ã£ãŸã‚‚ã®ã§ï¼Žï¼Žï¼Ž
composite objectを作れã°ã‚ˆã„ã§ã™ï¼Ž
odeã®demo_moving_trimesh.cppã®ï¼’31行目ã‹ã‚‰ãã®ã‚³ãƒ¼ãƒ‰ãŒã‚ã‚‹ã®ã§å‚考ã«ã—ã¦ãã ã•ã„.
ã§ã‚€
本ã«ã‚‚ODEã®è‹±èªžãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã«ã‚‚ã‹ã‹ã‚Œã¦ã„ã¾ã™ï¼Ž
ç†ç”±ã¯ï¼Œå›ºå®šã‚¸ãƒ§ã‚¤ãƒ³ãƒˆãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã¯ãã‚ŒãŒæ‹˜æŸæ¡ä»¶ã«ãªã‚Šï¼Œã—ãªãã¦æ¸ˆã‚€è¨ˆç®—ãŒå¿…è¦ã«ãªã‚‹ã‹ã‚‰ã§ã™ï¼Ž
ãŸã ï¼Œå›ºå®šã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’ä½¿ã†æ–¹ãŒç°¡å˜ã§ã™ã.
ã§ã‚€
texturepath.hã®ãƒ‘ス指定ã¯ã©ã“ã§ã§ãã¾ã™ã‹ï¼Ÿ
ãã ã‚“ã•ん,
ODEã¯å¾®åˆ†æ–¹ç¨‹å¼ã®æ•°å€¤è¨ˆç®—ã«ï¼”次ã®ãƒ«ãƒ³ã‚²ã‚¯ãƒƒã‚¿ã§ã¯ãªã1次ã®ã‚ªã‚¤ãƒ©ãƒ¼æ³•を使ã£ã¦ã„ã‚‹ã®ã§ï¼Œè¨ˆç®—精度ã®é«˜ã•ãŒå¿…è¦ãªã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯å‘ãã¾ã›ã‚“.個人的ã«ã¯ãã ã‚“ã•ã‚“ã®ç”¨é€”ã«ã¯å‘ã‹ãªã„ã¨è€ƒãˆã¾ã™ï¼Ž
ã§ã‚€
ï¼‘ï¼Žè„šãƒ¢ãƒ‡ãƒ«ãŒæ£ã—ã„ã‹ç¢ºèªã™ã‚‹ï¼Žç‰¹ã«ï¼Œãƒªãƒ³ã‚¯ã®é…ç½®ã¨é–¢ç¯€ä¸å¿ƒï¼Œå›žè»¢è»¸ãƒ™ã‚¯ãƒˆãƒ«ï¼Ž
2.関節角ã®ç›®æ¨™æŒ‡ä»¤å€¤ãŒæ£ã—ã„ã‹ç¢ºèªã™ã‚‹ï¼Žé–¢ç¯€è§’度ãŒä¸é€£ç¶šã«ãªã‚‹ï¼Žï¼‘78度,179度,18ï¼åº¦ï¼Œï¼ï¼‘79度,ï¼ï¼‘78度ãªã©ã«æ³¨æ„ã™ã‚‹ï¼Ž
ã™ãæ€ã„æµ®ã‹ã¶ã“ã¨ã¯ãã®ãらã„ã§ã™ï¼Ž
ã§ã‚€
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
試ã—ã¦ã¿ã¾ã™ã€‚
ã¾ãŸä½•ã‹ã‚ã£ãŸã‚‰ç›¸è«‡ä¹—ã£ã¦ãã ã•ã„ï¼
ã§ã‚€ã•ん,ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
cfm=0ã§ã¯internal errorãŒé€£ç™ºã—ã¦ã„ãŸã®ã§ã™ãŒ1e-10ã¨ã™ã‚‹ã“ã¨ã§ã‚¨ãƒ©ãƒ¼ãŒèµ·ããªããªã‚Šã¾ã—ãŸï¼Ž
別スレッドを立ã¦ã¦è³ªå•ã‚’ã—ã¦ã—ã¾ã£ãŸã®ã§ã™ãŒï¼Œinternal error s<=0ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ã¯ãƒãƒ¼ãƒ‰ã«ä¾å˜ã—ã¾ã™ã‹ï¼Ÿ
åŒã˜ãƒ—ãƒã‚°ãƒ©ãƒ (åŒã˜ç’°å¢ƒè¨å®šï¼‰ã§ã‚‚マシンã«ã‚ˆã£ã¦ã¯èµ·ããªã‹ã£ãŸã‚Šï¼ŒåŒã˜ãƒžã‚·ãƒ³ã§ã‚‚稼åƒçжæ³ã«ä¾å˜ã™ã‚‹ãªã©ï¼Ž
自分ãŒè¦‹ã¦ã„る範囲ã§ã¯internal error s<=0ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ãŒèµ·ãる時刻もã¾ã¡ã¾ã¡ã§ã‚ã‚‹ã¨æ€ã£ã¦ã„ã‚‹ã®ã§ã™ãŒï¼Œä¸€åº¦ã‚る時刻tã«internal errorãŒèµ·ããŸã‹ã‚‰ã¨ã„ã£ã¦ï¼Œæ¯Žå›žæ™‚刻tã§ãŠãã‚‹ã¨ã¯é™ã‚‰ãªã„ã®ã§ã—ょã†ã‹ï¼Ž
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã“ã®ãƒ–ãƒã‚°ã®FAQ B9ã«ã“ã®ã‚¨ãƒ©ãƒ¼ã«ã¤ã„ã¦ã®èª¬æ˜ŽãŒã‚りã¾ã™ï¼Ž
å„ステップã§LCPã‚’è§£ã„ã¦ã„ã‚‹ã®ã§ï¼Œï¼‘回エラーãŒèµ·ããŸã‹ã‚‰ã¨è¨€ã£ã¦å¾Œã«å°¾ã‚’引ãよã†ãªã“ã¨ã¯ã‚りã¾ã›ã‚“.
ã“ã®ç¨‹åº¦ã®å›žç”ã§ã‚ˆã‚ã—ã‹ã£ãŸã§ã—ょã†ã‹ï¼Ž
ã§ã‚€
9/24ã«ç«‹ã¦ã•ã›ã¦ã„ãŸã ã„ãŸã‚¹ãƒ¬ãƒƒãƒ‰ã«ã‚‚書ã„ãŸã®ã§2é‡æŠ•ç¨¿ã«ãªã‚Šç”³ã—ã‚ã‘ã‚りã¾ã›ã‚“ãŒä¸‹è¨˜ã®ã“ã¨ã‚’æ•™ãˆã¦ã„ãŸã ããŸã„ã§ã™ï¼Ž
internal error s<=0ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ã¯ãƒãƒ¼ãƒ‰ã«ä¾å˜ã—ã¾ã™ã‹ï¼Ÿ
åŒã˜ãƒ—ãƒã‚°ãƒ©ãƒ (åŒã˜ç’°å¢ƒè¨å®šï¼‰ã§ã‚‚マシンã«ã‚ˆã£ã¦ã¯èµ·ããªã‹ã£ãŸã‚Šï¼ŒåŒã˜ãƒžã‚·ãƒ³ã§ã‚‚稼åƒçжæ³ã«ä¾å˜ã™ã‚‹ãªã©ï¼Ž
自分ãŒè¦‹ã¦ã„る範囲ã§ã¯internal error s<=0ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ãŒèµ·ãる時刻もã¾ã¡ã¾ã¡ã§ã‚ã‚‹ã¨æ€ã£ã¦ã„ã‚‹ã®ã§ã™ãŒï¼Œä¸€åº¦ã‚る時刻tã«internal errorãŒèµ·ããŸã‹ã‚‰ã¨ã„ã£ã¦ï¼Œæ¯Žå›žæ™‚刻tã§ãŠãã‚‹ã¨ã¯é™ã‚‰ãªã„ã®ã§ã—ょã†ã‹ï¼Ž
ã¾ãŸï¼Œ
>å„ステップã§LCPã‚’è§£ã„ã¦ã„ã‚‹ã®ã§ï¼Œï¼‘回エラーãŒèµ·ããŸã‹ã‚‰ã¨è¨€ã£ã¦å¾Œã«å°¾ã‚’引ãよã†ãªã“ã¨ã¯ã‚りã¾ã›ã‚“.
ãŒã‚ˆãç†è§£ã§ãã¾ã›ã‚“.ã‚るステップã§è¨ˆç®—ã•れãŸåŠ›ãŒå¤‰åŒ–ã™ã‚Œã°ãã®å¾Œã®ç‰©ä½“é‹å‹•も変ã‚ã‚‹ã¨è€ƒãˆã¦ã„ãŸã®ã§ã™ãŒç†è§£ãŒé•ã†ã®ã§ã—ょã†ã‹ï¼Ž
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã“ã‚“ã«ã¡ã¯ã€€mameta ã•ん.
ãã®ã‚ˆã†ãªåˆ¶é™ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã‚’èžã„ãŸã“ã¨ã¯ã‚りã¾ã›ã‚“.
ã§ã‚€
ベルンã•ん,
質é‡ã‚¼ãƒã«ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã§ï¼Œå•題ã«ãªã‚‰ãªã„程度ã«å°ã•ãã™ã‚Œã°è‰¯ã„ã¨æ€ã„ã¾ã™ï¼Ž
ãªãŠï¼ŒPrismatic and Rotoideã¨ã„ã†ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã¯ãŠæœ›ã¿ã®ã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“ã‹ï¼Ÿ
http://opende.sourceforge.net/wiki/index.php/Manual_(All)#Prismatic_and_Rotoide
ã§ã‚€
自分ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®ãƒŸã‚¹ã§ã—ãŸï¼Žã”迷惑をãŠã‹ã‘ã—ã¾ã—ãŸï¼Ž
junã•ã‚“ã€
ã¤ãã°ãƒãƒ£ãƒ¬ãƒ³ã‚¸ã«å‚åŠ ã—ã¦ã„ã¦è¿”事ãŒé…れã¾ã—ãŸã€‚ã™ã¿ã¾ã›ã‚“。
ã•ã¦ã€ode0.11.1ã‚’Cドライブã®ç›´ä¸‹ã§è§£å‡ã‚½ãƒ•トを使ã£ã¦è§£å‡ã—ã¦ãã ã•ã„。ãã†ã™ã‚‹ã¨C:\ode-0.11.1ã¨ã„ã†ãƒ•ォルダãŒç”Ÿæˆã•れã¾ã™ã€‚
ã§ã‚€
hiroã•ん,
ã¯ã˜ã‚ã¾ã—ã¦ï¼Ž
ジオメトリã¯è¡çªæ¤œå‡ºã®å¯¾è±¡ã¨ãªã‚‹ã‚ªãƒ–ジェクトã§ã™ï¼Žå‹•力å¦è¨ˆç®—ã®å¯¾è±¡ã¯ãƒœãƒ‡ã‚£ã§ã™ï¼Žã‚¸ã‚ªãƒ¡ãƒˆãƒªã®é€Ÿåº¦ã‚’è¨å®šã™ã‚‹ã“ã¨ã‚’考ãˆãŸã“ã¨ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸï¼Ž
ã©ã®ã‚ˆã†ãªã“ã¨ã‚’ã—ãŸã„ã®ã§ã—ょã†ï¼Ÿ
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã‚„ã‚ã†ã¨ã—ã¦ã„ã‚‹ã“ã¨ã¯ï¼ŒåœŸå°ã¨ãªã‚‹ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’空ä¸ã«æµ®ã‹ã—ã¦ãã®å ´ã§å‹•ã‹ã—(楕円é‹å‹•),ãã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªä¸Šã«ç½®ã‹ã‚ŒãŸç‰©ä½“(ジオメトリã¨ãƒœãƒ‡ã‚£ã‚’関連付ã‘ãŸã‚‚ã®)ã®æŒ™å‹•を観察ã™ã‚‹ã¨ã„ã£ãŸã‚‚ã®ã§ã™ï¼ŽåœŸå°ã«ã¯é‡åŠ›ãªã©ã®å‹•力å¦è¨ˆç®—を無視ã—ã¦é‹å‹•を与ãˆãŸã„ã®ã§ã™ãŒï¼Œ
ジオメトリã«é€Ÿåº¦ã‚’è¨å®šã™ã‚‹æ–¹æ³•ãŒã‚ã‹ã‚‰ãšã«å›°ã£ã¦ã„る状æ³ã§ã™ï¼Ž
simLoop関数ã§ã‚¸ã‚ªãƒ¡ãƒˆãƒªã«é€Ÿåº¦ã‚’与ãˆãŸã„ã¨æ€ã£ã¦ã„ã‚‹ã®ã§ã™ãŒï¼Œç„¡ç†ãªã‚“ã§ã—ょã†ã‹ï¼Ÿ
ãŠå¿™ã—ã„ã«ã‚‚é–¢ã‚らãšè¿”信有難ã†ã”ã–ã„ã¾ã™ã€‚度々ã™ã¿ã¾ã›ã‚“ãŒåˆè³ªå•ã•ã›ã¦ä¸‹ã•ã„
â– Visual C++ 2008 Express Editionã‚’èµ·å‹•
■メニューãƒãƒ¼ã‹ã‚‰ã€Œãƒ•ァイル(F)ã€â†’「開ã(O)ã€â†’「プãƒã‚¸ã‚§ã‚¯ãƒˆ/ソリューション(P)ã€ã‚’é¸æŠž
â– c:\ode-0.11.1\build\vs2008\ode.sln
ホームページã®ã‚ˆã†ã«Visual C++ 2008 Express Editionã‚’èµ·å‹•ã‚’èµ·å‹•ã—よã†ã¨ã—ãŸã®ã§ã™ãŒã€ä¸Šè¨˜ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“(ãã®é¸æŠžãã®ã‚‚ã®ãŒã‚りã¾ã›ã‚“)。ãã®å‰æ®µã®å…¥åŠ›ãŒã†ã¾ãã§ãã¦ã„ãªã„よã†ãªã®ã§ã™ãŒä½•ãŒæ‚ªã„ã®ã‹ã‚ã‹ã‚‰ãªã„ã®ã§ã™ã€‚æ•™ãˆã¦ã„ãŸã ã‘ãªã„ã§ã—ょã†ã‹ï¼Ÿã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ジオメトリã®é€Ÿåº¦ã‚„角速度をè¨å®šã™ã‚‹APIã¯ã‚りã¾ã›ã‚“ãŒã€ä½ç½®ã‚„姿勢をè¨å®šã™ã‚‹APIã¯ã‚ã‚‹ã®ã§ã€å„ステップ毎ã«ä½ç½®ã‚„姿勢を変更ã—ã¦ç›®çš„ã‚’é”æˆã§ãã¾ã›ã‚“ã‹ï¼Ÿ
ã§ã‚€
ジオメトリã«é€Ÿåº¦ã‚’与ãˆã‚‹ã“ã¨ã¯ã€ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®æ€§è³ªä¸Šé›£ã—ã„ã¨æ€ã„ã¾ã™ã€‚
土å°ã‚’å°è»Šã«ã—ã¦ã€æ¥•円軌é“を走行ã™ã‚‹ã‚ˆã†ã«ã—ã¦ã¯ã„ã‹ãŒã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€
http://demura.net/9ode/3864.html
ã«ã‚ã‚‹
premake4 –with-demos vs2008
ã¯å®Ÿè¡Œã•れã¾ã—ãŸã‹ï¼Ÿ
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
実ã¯ã‚¹ãƒ†ãƒƒãƒ—毎ã«ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®ä½ç½®ã‚’変更ã™ã‚‹æ–¹æ³•を試ã—ã¦ã¿ãŸã®ã§ã™ãŒï¼Œãれã ã¨ã‚¹ãƒ†ãƒƒãƒ—ã‹ã‚‰ã‚¹ãƒ†ãƒƒãƒ—ã§ã®ç§»å‹•ã®éŽç¨‹ãŒçž¬é–“移動ã®ã‚ˆã†ã«ãªã£ã¦ã„ã„るらã—ãï¼Œç‰©ä½“é–“ã§æ‘©æ“¦ãŒåƒã‹ãšåœŸå°è²ã®ç‰©ä½“ãŒå‹•ã‹ã𿻑ã£ã¦ã—ã¾ã„ã¾ã—ãŸï¼Ž
ステップ間ã®ç§»å‹•プãƒã‚»ã‚¹ãŒè¨å®šã§ãã‚‹ã¨è§£æ±ºã§ãã‚‹ã®ã§ã¯ã¨è€ƒãˆã¦ã„ã‚‹ã®ã§ã™ãŒãƒ»ãƒ»ãƒ»ã€‚
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã”æ„見をå‚考ã«ã•ã›ã¦ã„ãŸã ã,ãã®æ–¹å‘ã§ç›®çš„を実ç¾ã™ã‚‹æ–¹æ³•を考ãˆã¦ã¿ã‚ˆã†ã¨æ€ã„ã¾ã™ï¼Ž
ã¨ã¦ã‚‚助ã‹ã‚Šã¾ã—ãŸï¼Žã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ODE FAQ ã®ï¼¡ï¼‘3番ãŒç”ãˆã§ã™ï¼Ž
http://demura.net/9ode/452.html
ã§ã‚€
dGeomSetBody()ã®å¼•æ•°ãŒãŠã‹ã—ã„å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼Ž
引数ã®bodyã‚„geometryã¯ä½œæˆã•れã¦ã„ã¾ã™ã‹ï¼Ÿ
ã§ã‚€
以下ã®ã‚³ãƒ¼ãƒ‰ã¯dGeomSetBodyã®ã¯ã˜ã‚ã®éƒ¨åˆ†ã§ã™ï¼ŽdAASERT(g)ã§ã‚¨ãƒ©ãƒ¼ã«ãªã£ã¦ã„ã¾ã™ï¼Žã¤ã¾ã‚Šï¼ŒdxGeomã®gã®å€¤ãŒfalseã®ã¨ã,ãã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’åãã¾ã™ï¼ŽdGeomSetBodyã®ä¸€ç•ªç›®ã®å¼•æ•°ã®å€¤ãŒ0ã§ã¯ã‚りã¾ã›ã‚“ã‹ï¼Ÿã€€ç¢ºèªãŠé¡˜ã„ã—ã¾ã™ï¼Ž
void dGeomSetBody (dxGeom *g, dxBody *b)
{
dAASSERT (g);
dUASSERT (b == NULL || (g->gflags & GEOM_PLACEABLE),”geom must be placeable”);
以下 略
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ãŠã‹ã’ã•ã¾ã§ç„¡äº‹ãƒ“ルドã§ãã¾ã—ãŸã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
引数ã®bodyã€geometryã¨ã‚‚ã«ä½œæˆã—ã¦ã„ã¾ã™ã€‚
ä»–ã®åŽŸå› ã®å¯èƒ½æ€§ã¯ãªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
引数ã®å€¤ã¯ï¼ã§ã¯ãªã„ã¨æ€ã„ã¾ã™ã€‚
ã‚‚ã—よã‚ã—ã‘れã°ã€ä»¥ä¸‹ã«ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¸€éƒ¨ã‚’表記ã—ã¾ã™ã®ã§ã€ç¢ºèªã—ã¦ã„ãŸã‘ãªã„ã§ã—ょã†ã‹ï¼Ÿ
å°‘ã—é•·ããªã£ã¦ã—ã¾ã†ã®ã§ã™ãŒã€ï¼”脚ãƒãƒœãƒƒãƒˆã‚’作ã£ã¦ã„ã‚‹ãã®éŽç¨‹ã§ã™ã€‚
ãŸã¶ã‚“大丈夫ã ã¨æ€ã£ã¦ã¯ã„ã‚‹ã‚“ã§ã™ãŒâ€¦
/*** ãƒãƒœãƒƒãƒˆã®ç”Ÿæˆã€€***/
void makeRobo(){
dMass mass; //質é‡ãƒ‘ラメータ
dReal bx = 0.0; //メインフレームã®é‡å¿ƒ
dReal by = 0.0;
dReal bz = 0.140;
dReal bxs = 0.100; //メインフレームã®ã‚µã‚¤ã‚º
dReal bys = 0.200;
dReal bzs = 0.040;
dReal weightm1 = 0.500; //メインフレーム質é‡
//全脚部
dReal x1[4] = {0, 0, 0, 0}; //é‡å¿ƒ x
dReal y1[4] = {-0.165, -0.315, 0.165, 0.315};/é‡å¿ƒ y
dReal z1[4] = {0.110, 0.110, 0.110, 0.110};//é‡å¿ƒ z
dReal sx1 = 0.050; //サイズ指定 x 軸
dReal sy1 = 0.200; //サイズ指定 y 軸
dReal sz1 = 0.030; //サイズ指定 z 軸
dReal weight1 = 0.100; //質é‡
//リンクã®ç”Ÿæˆ
mainb.body = dBodyCreate(world);//ワールドã«ãƒœãƒ‡ã‚£ã‚’作æˆ
dMassSetZero(&mass); //massåˆæœŸåŒ–
dMassSetBoxTotal(&mass, weightm1, bxs, bys, bzs); //æ§‹é€ ä½“massã«è³ªé‡ã€ã‚µã‚¤ã‚ºã®ç›´æ–¹ä½“ã®è³ªé‡ãƒ‘ラメータ
dBodySetMass(mainb.body, &mass); //ボディã«è³ªé‡ãƒ‘ラメータmassã‚’è¨å®š
dBodySetPosition(mainb.body, bx, by, bz); //リンクã®ä½ç½®æ±ºã‚
mainb.geom = dCreateBox(space, bxs, bys, bzs); //スペースã«ã‚µã‚¤ã‚ºx,y,zã®ãƒœãƒƒã‚¯ã‚¹ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®ç”Ÿæˆ
dGeomSetBody(mainb.geom,mainb.body); //ボディã¨ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®é–¢é€£ä»˜ã‘
rlink[0].body = dBodyCreate(world); //ワールドã«ãƒœãƒ‡ã‚£ã‚’作æˆ
dMassSetZero(&mass); //massåˆæœŸåŒ–
dMassSetBoxTotal(&mass,weight1,sx1,sy1,sz1); //æ§‹é€ ä½“massã«è³ªé‡ã€ã‚µã‚¤ã‚ºã®ç›´æ–¹ä½“ã®è³ªé‡ãƒ‘ラメータ
dBodySetMass(rlink[0].body, &mass); //ボディã«è³ªé‡ãƒ‘ラメータmassã‚’è¨å®š
dBodySetPosition(rlink[0].body, x1[0], y1[0], z1[0]);//リンクã®ä½ç½®æ±ºã‚
rlink[0].geom = dCreateBox(space, sx1, sy1, sz1); //スペースã«ã‚µã‚¤ã‚ºx,y,zã®ãƒœãƒƒã‚¯ã‚¹ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®ç”Ÿæˆ
dGeomSetBody(rlink[0].geom, rlink[0].body); //ボディã¨ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®é–¢é€£ä»˜ã‘
rlink[1].body = dBodyCreate(world); //ワールドã«ãƒœãƒ‡ã‚£ã‚’作æˆ
dMassSetZero(&mass); //massåˆæœŸåŒ–
dMassSetBoxTotal(&mass, weight1, sx1, sy1, sz1); //æ§‹é€ ä½“massã«è³ªé‡ã€ã‚µã‚¤ã‚ºã®ç›´æ–¹ä½“ã®è³ªé‡ãƒ‘ラメータ
dBodySetMass(rlink[1].body, &mass); //ボディã«è³ªé‡ãƒ‘ラメータmassã‚’è¨å®š
dBodySetPosition(rlink[1].body, x1[1], y1[1], z1[1]); //リンクã®ä½ç½®æ±ºã‚
rlink[1].geom = dCreateBox(space, sx1, sy1, sz1); //スペースã«ã‚µã‚¤ã‚ºx,y,zã®ãƒœãƒƒã‚¯ã‚¹ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®ç”Ÿæˆ
dGeomSetBody(rlink[1].geom, rlink[1].body); //ボディã¨ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®é–¢é€£ä»˜ã‘
rlink[2].body = dBodyCreate(world); //ワールドã«ãƒœãƒ‡ã‚£ã‚’作æˆ
dMassSetZero(&mass); //massåˆæœŸåŒ–
dMassSetBoxTotal(&mass,weight1, sx1,sy1, sz1); //æ§‹é€ ä½“massã«è³ªé‡ã€ã‚µã‚¤ã‚ºã®ç›´æ–¹ä½“ã®è³ªé‡ãƒ‘ラメータ
dBodySetMass(rlink[2].body, &mass); //ボディã«è³ªé‡ãƒ‘ラメータmassã‚’è¨å®š
dBodySetPosition(rlink[2].body, x1[2], y1[2], z1[2]); //リンクã®ä½ç½®æ±ºã‚
rlink[2].geom = dCreateBox(space, sx1, sy1, sz1); //スペースã«ã‚µã‚¤ã‚ºx,y,zã®ãƒœãƒƒã‚¯ã‚¹ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®ç”Ÿæˆ
dGeomSetBody(rlink[2].geom, rlink[2].body); //ボディã¨ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®é–¢é€£ä»˜ã‘
rlink[3].body = dBodyCreate(world); //ワールドã«ãƒœãƒ‡ã‚£ã‚’作æˆ
dMassSetZero(&mass); //massåˆæœŸåŒ–
dMassSetBoxTotal(&mass,weight1, sx1,sy1, sz1); //æ§‹é€ ä½“massã«è³ªé‡ã€ã‚µã‚¤ã‚ºã®ç›´æ–¹ä½“ã®è³ªé‡ãƒ‘ラメータ
dBodySetMass(rlink[2].body, &mass); //ボディã«è³ªé‡ãƒ‘ラメータmassã‚’è¨å®š
dBodySetPosition(rlink[3].body, x1[3], y1[3], z1[3]); //リンクã®ä½ç½®æ±ºã‚
rlink[2].geom = dCreateBox(space, sx1, sy1, sz1); //スペースã«ã‚µã‚¤ã‚ºx,y,zã®ãƒœãƒƒã‚¯ã‚¹ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®ç”Ÿæˆ
dGeomSetBody(rlink[3].geom, rlink[3].body); //ボディã¨ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®é–¢é€£ä»˜ã‘
以下略;
rlink[i].geomã¨rlink[i].bodyã®å€¤ã‚’表示ã—ã¦ã¿ã¦0ã§ãªã„ã‹ç¢ºèªã—ã¦ãã ã•ã„.iã¯ï¼ã‹ã‚‰ï¼“ã¾ã§ï¼Ž
ãªãŠï¼Œä»¥ä¸‹ç•¥ï¼›ã®ä¸Šï¼“行目ã¯rlink[2]ã§ã¯ãªã,rlink[3]ã®é–“é•ã„ã§ã¯ãªã„ã§ã™ã‹ï¼Ÿ
ã§ã‚€
masaã•ã‚“
ãŠå½¹ã«ç«‹ã¦ã¦ä½•よりã§ã™ï¼Ž
ãªãŠï¼Œã“ã®ã‚ˆã†ãªãƒŸã‚¹ã‚’ãªãã™ãŸã‚ã«åŒã˜ã‚ˆã†ãªã‚³ãƒ¼ãƒ‰ã¯é–¢æ•°åŒ–ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ï¼Ž
今後ã¨ã‚‚demura.netをよã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã§ã‚€
rlink[2]ã¯é–“é•ã„ã§ã€rlink[3]ã«ã—ãŸã‚‰ã†ã¾ãã„ãã¾ã—ãŸï¼
çµæžœã¯è‡ªåˆ†ã®æƒ³åƒã¨ã¯é•ã„æ®‹å¿µã§ã—ãŸãŒâ€¦
ã§ã‚‚ã€ä¸€æ©å‰é€²ã§ãã¾ã—ãŸã€‚
åˆæ©çš„ãªãƒŸã‚¹ã§ã“ã“ã¾ã§ãŠä»˜ãåˆã„ã•ã›ã¦ã—ã¾ã„ã™ã¿ã¾ã›ã‚“。
ãŠå¿™ã—ã„ä¸ã€ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã“ã‚“ã«ã¡ã¯ã€€meltdownã•ん,
ã“れã¯ODEã«é–¢ã™ã‚‹è³ªå•ã§ã™ã‹ï¼Ÿ
ODEã«é–¢ã™ã‚‹è³ªå•ã ã‘ã«ã—ã¦é ‚ã‘ã‚‹ã¨ã‚りãŒãŸã„ã§ã™ï¼Ž
ã§ã‚€
ã‚ã‹ã‚Šã¥ã‚‰ã„質å•ã§ã‚¹ã‚¤ãƒžã‚»ãƒ³ï¼Ž
改ã‚ã¾ã—ã¦ï¼ŒODE上ã§ãƒãƒœãƒƒãƒˆã‚¢ãƒ¼ãƒ ã«æŠ•çƒå‹•作を行ã‚ã›ã¦ã„ã‚‹ã®ã§ã™ãŒï¼Œ
ODEã§ã¯ãƒœãƒ¼ãƒ«ã‚’ç‹™ã£ãŸã¨ã“ã‚ã«æŠ•ã’ã‚‹ã¨ã„ã†æŒ‡ç¤ºã‚’ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã—ょã†ã‹ï¼Ÿ
ã“ã‚“ã«ã¡ã¯ï¼Œãµã†ãŸã•ん,
一定間隔ã®ã‚¹ãƒ†ãƒƒãƒ—毎ã«ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚Œã°è‰¯ã„ã¨æ€ã„ã¾ã™ï¼Ž
ã§ã‚€
ODEã®ï¼¡ï¼°ï¼©ã§ãã®ã‚ˆã†ãªé«˜æ©Ÿèƒ½ãªã‚‚ã®ã¯ã‚りã¾ã›ã‚“.
ã§ã‚€
masaã•ん,
ã‚¢ãƒã‚¦ãƒˆãªã”質å•ãªã®ã§ï¼Œã‚¢ãƒã‚¦ãƒˆã«å¯èƒ½ã§ã™ï¼Ž
ã‚‚ã†å°‘ã—具体的ã«èžã„ã¦é ‚ã‘れã°ï¼Œçš„確ã«ã‚¢ãƒ‰ãƒã‚¤ã‚¹ãŒå¯èƒ½ã ã¨æ€ã„ã¾ã™ï¼Ž
ã§ã‚€
mototyannã•ん,
ã“ã®å°‘ãªã„æƒ…å ±ã ã‘ã§ã¯å›žç”ã™ã‚‹ã“ã¨ã¯é›£ã—ã„ã§ã™ï¼Ž
ODEã®ãƒ‡ãƒ¢ãƒ—ラグラムdemo_buggy.cppã‚„ç§ã®ä½œå‹•駆動型ãƒãƒœãƒƒãƒˆã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ をベースã«ã—ã¦ã‚‚åŒæ§˜ãªç—‡çжãªã®ã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€
å…ˆã»ã©è³ªå•ã—ãŸyamã§ã™ã€‚
ã™ã„ã¾ã›ã‚“。
ODE本ã®ã‚µãƒãƒ¼ãƒˆãƒšãƒ¼ã‚¸ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ をダウンãƒãƒ¼ãƒ‰ã—ã¦ã€
ビルドをã—ãŸã‚‰è§£æ±ºã—ã¾ã—ãŸã€‚
ãŠé¨’ãŒã›ã—ã¦ã™ã„ã¾ã›ã‚“ã§ã—ãŸã€‚
ãれã¯å›°ã‚Šã¾ã—ãŸã.
ã¾ãšï¼ŒODEã®ä»–ã®ãƒ‡ãƒ¢ãƒ—ãƒã‚°ãƒ©ãƒ ã¯å•題ãªãå‹•ãã‹ç¢ºã‹ã‚ã¦ãã ã•ã„.å•題ã®ã‚ã‚‹å ´åˆã¯ï¼ŒODEã‚’å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã®ãŒè§£æ±ºã®æ—©é“ã ã¨æ€ã„ã¾ã™ï¼Ž
ã§ã‚€
ã¨ã‚Šã‚ãˆãšï¼Œä»–ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã«ã‚‚åŒæ§˜ã®ç—‡çжãŒå‡ºã¦ã„ãŸã®ã§ä¸ã®ãƒ•ァイルã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’ã¨ã‚Šï¼ŒODEファイルをå†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã—ãŸï¼Ž
å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚‚ã®ã¯æ£å¸¸ã«å‹•ã„ã¦ã„るよã†ãªã®ã§ã“れã‹ã‚‰ã‚‚åŒæ§˜ã®ç—‡çжãŒå‡ºãŸå ´åˆã¯å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹æ§˜ã«ã—ã¦ã„ã“ã†ã¨æ€ã„ã¾ã™ï¼Ž
melã•ん,
é †èª¿ã«é€²ã‚“ã§ä½•よりã§ã™ï¼Ž
ã•ã¦ï¼Œç‰©ä½“åŒå£«ã«ç”Ÿã˜ã‚‹å力ã®ã‚ˆã†ã«è¦‹ãˆã‚‹åŠ›ã¯ï¼Œè¡çªæ¤œå‡ºã«èµ·å› ã™ã‚‹ã‚‚ã®ã§ã™ï¼Žå…·ä½“çš„ã«ã¯ï¼ŒæŽ¥è§¦ç‚¹ã®ãšã‚Œã‚’ä¿®æ£ã™ã‚‹ã‚ˆã†ã«åŠ›ã‚’åŠ ãˆã¦ã„ã¾ã™ï¼Žãれを調整ã™ã‚‹ãƒ‘ラメータãŒERPã§ã™ï¼Ž
ERPを調整ã™ã‚‹ã¨è·³ãる挙動ãŒå¤‰ã‚ã‚‹ã¨æ€ã„ã¾ã™ï¼Žã•らã«ï¼ŒCFMも使ã†ã¨ãƒãƒãƒ»ãƒ€ãƒ³ãƒ‘モデルをシミュレートã§ãã‚‹ã®ã§ï¼ŒãŠå¥½ã¿ã®æŒ™å‹•を実ç¾ã§ãã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
ã¾ãŸï¼ŒæŽ¥è§¦ç‚¹ãŒãƒœãƒ‡ã‚£ã«æ·±ãã‚りã“ã¾ãªã„よã†ã«dWorldSetContactSurfaceLayer(dWorldID, dReal depth)ã®depthã‚’å°ã•ã„値ã«è¨å®šã™ã‚‹ã¨æŽ¥è§¦ãŒé »ç¹ã«ç¹°ã‚Šè¿”ã™æŒ™å‹•を改善ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼Ž
ã§ã‚€
返信ãŒé…れã¦ã—ã¾ã„ã¾ã—ãŸã€‚申ã—訳ã”ã–ã„ã¾ã›ã‚“。
ERPã‚„CFMを調整ã™ã‚‹ã¨ä»Šåº¦ã¯é‡ã„ã‚‚ã®ãŒåœ°é¢ã«æ²ˆã‚“ã りã—ã¦ã—ã¾ã†å•題ãŒèµ·ããŸãŸã‚ã€dWorldSetContactSurfaceLayerã®å€¤ã‚’è¨å®šã—ãŸã¨ã“ã‚è·³ãã®å•題を解決ã™ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸã€‚ã»ã‹ã«ã‚‚dWorldSetContactMaxCorrectingVelを使用ã™ã‚‹ã“ã¨ã§ã‚‚è·³ãを抑ãˆã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ãŒåˆ†ã‹ã‚Šã¾ã—ãŸã€‚
質å•ã«ãŠç”ãˆã„ãŸã ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ODEã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã¯æ‘©æ“¦ãŒãªã„ã®ã§åŠ›åˆ¶å¾¡ã‚’ã™ã‚‹ã¨æŒ¯å‹•ã—ã¾ã™ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã«ç°¡å˜ãªæ‘©æ“¦ãƒ¢ãƒ‡ãƒ«ã‚’入れるã“ã¨ã«ã‚ˆã‚ŠæŒ¯å‹•を防ããŸã‚ã§ã™ï¼Ž
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ãªã‚“ã¨ãªãã§ã¯ã‚りã¾ã™ãŒç†è§£ã§ãã¾ã—ãŸã€‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
話ã¯å¤‰ã‚りé•ã†è³ªå•ã«ãªã£ã¦ã—ã¾ã†ã®ã§ã™ãŒã€ä»¥ä¸‹ã®ã‚ˆã†ãªã‚¨ãƒ©ãƒ¼ãŒã§ã¦ã—ã¾ã„ã©ã†ã™ã‚Œã°ã„ã„ã®ã‹ã‚ã‹ã‚Šã¾ã›ã‚“。
error: cannot convert `const dReal*’ to `const float*’ for argument `1′ to `void dsDrawCapsule(const float*, const float*, float, float)’|
ã©ã†ã™ã‚Œã°è§£æ±ºã§ãã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
#define dsDrawCapsule dsDrawCasuleD
ãŒãªã‘れã°ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¸Šã«æŒ¿å…¥ã—ã¦ãã ã•ã„.
ã‚ã‚‹å ´åˆã¯ï¼ŒODEã‚’å˜ç²¾åº¦ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼Ž
ã§ã‚€
HAã•ん,
ã¯ã˜ã‚ã¾ã—ã¦ï¼Žè‰¯ã„ã”質å•ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã•ã¦ï¼Œä»¥ä¸‹ã«è»¢è¼‰ã—ãŸdRFrom2Axesã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’èªã‚€ã¨ï¼Œæ‹™è‘—ODE本147ページã«ã‚る回転行列ã®å®šç¾©ã‚’実装ã—ã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ï¼Žã¾ãšï¼Œçµ¶å¯¾åº§æ¨™ç³»ã¨ç›¸å¯¾åº§æ¨™ç³»ãŒä¸€è‡´ã—ã¦ã„ã‚‹ã¨ã—ã¾ã™ï¼Žå›žè»¢å¾Œï¼Œx軸→a軸,y軸→b軸,z軸→a軸ã¨b軸ã®å¤–ç©ã«ãªã£ãŸã¨ãã®å›žè»¢è¡Œåˆ—ãŒRã§ã™ï¼Ž
aベクトル(ax,ay,az),bベクトル(bx,by,bz)ã®è¨å®šãŒæ‚ªã„ã®ã§ã¯ãªã„ã§ã—ょã†ã‹ï¼Ÿaã¨bベクトルã¯ç›´äº¤ã—ã¦ã„ãªã‘れã°ãªã‚Šã¾ã›ã‚“.
ã§ã‚€
—-
void dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az,
dReal bx, dReal by, dReal bz)
{
dReal l,k;
dAASSERT (R);
l = dSqrt (ax*ax + ay*ay + az*az);
if (l <= REAL(0.0)) {
dDEBUGMSG (“zero length vector”);
return;
}
l = dRecip(l);
ax *= l; ay *= l; az *= l;
k = ax*bx + ay*by + az*bz;
bx -= k*ax; by -= k*ay; bz -= k*az;
l = dSqrt (bx*bx + by*by + bz*bz);
if (l <= REAL(0.0)) {
dDEBUGMSG (“zero length vector”);
return;
}
l = dRecip(l);
bx *= l; by *= l; bz *= l;
_R(0,0) = ax; _R(1,0) = ay; _R(2,0) = az;
_R(0,1) = bx; _R(1,1) = by; _R(2,1) = bz;
_R(0,2) = – by*az + ay*bz; _R(1,2) = – bz*ax + az*bx; _R(2,2) = – bx*ay + ax*by;
_R(0,3) = REAL(0.0); _R(1,3) = REAL(0.0); _R(2,3) = REAL(0.0);
}
demuã•ã‚“
ã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
aベクトルã¨bベクトルã¯ç›´äº¤ã—ã¦ã„ãªã‹ã£ãŸã§ã™ã€‚
ã‚ã¾ã‚Šã€ç†è§£ã§ãã¦ãªã‹ã£ãŸã‚‰ç”³ã—訳ã‚りã¾ã›ã‚“。
ä»»æ„ã®ä¸‰ç‚¹A,B,CãŒã‚ã£ãŸã¨ã—ã¦ã€ACベクトルを法線ã¨ã™ã‚‹å¹³é¢ã®å§¿å‹¢è¡Œåˆ—Rを求ã‚ãŸã„å ´åˆã¯ã€ABベクトル+BCベクトルï¼ACベクトル(ABã¨BCã¯ç›´äº¤)ã¨ãªã‚‹ã‚ˆã†ãªABベクトルã¨BCベクトルをdRFrom2Axes()ã®å¼•æ•°ã«ä¸Žãˆã‚Œã°
解決ã™ã‚‹ã¨ã„ã†ã“ã¨ã§ã—ょã†ã‹ï¼Ÿ
具体的ã«ã¯ç‚¹A(ï¼ï¼Œï¼ï¼Œï¼ï¼‰ã€ç‚¹C(1,1,1)ãŒã‚ã£ãŸã¨ã—ã¦ã€ãƒ™ã‚¯ãƒˆãƒ«ACを法線ã¨ã™ã‚‹é¢ã®å§¿å‹¢ã‚’求ã‚よã†ã¨ã™ã‚‹ã¨ã€ç‚¹Bã‹ã‚‰åž‚線を下ã—ã€ç‚¹B(1,1,0)を定義ã—ã¦ã€ãƒ™ã‚¯ãƒˆãƒ«ABã¨ãƒ™ã‚¯ãƒˆãƒ«BCã‚’dRFrom2Axes()ã®å¼•æ•°ã«ä¸Žãˆã‚‹ã¨ã„ã£ãŸæ‰‹æ³•ã§ã‚ˆã‚ã—ã„ã®ã§ã—ょã†ã‹ï¼Ÿ
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
#define dsDrawCapsule dsDrawCasuleD
ãŒè¨˜è¿°ã•れã¦ã„ãªã‹ã£ãŸã®ãŒåŽŸå› ã§ã—ãŸã€‚
ã„ã¤ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã™ã¿ã¾ã›ã‚“。上記ã®å•題ã«ã¤ã„ã¦ã‚る程度自己解決ã—ãŸã®ã§ã€å°‘ã—質å•を変ãˆã•ã›ã¦ãã ã•ã„。
dbodyGetRotation(dBodyID)
printf(4×3ã®è¡Œåˆ—æˆåˆ†)
ã§å›žè»¢è¡Œåˆ—ã®å„æˆåˆ†ã‚’å–å¾—ã€è¡¨ç¤ºã•ã›ã‚‹ã“ã¨ã¯ã§ãã¾ã—ãŸã€‚
ã—ã‹ã—ã€åˆ¶å¾¡ã™ã‚‹ãŸã‚ã«X,Yæˆåˆ†ã®2ã¤ã®ã‚ªã‚¤ãƒ©ãƒ¼è§’ã‚’å–å¾—ã—ãŸã„ã¨è€ƒãˆã¦ã„ã‚‹ã®ã§ã™ãŒã€ã“ã®éƒ¨åˆ†ã«ã¤ã„ã¦æœªè§£æ±ºã§ã™ã€‚
logmanã•ん,
ã¯ã˜ã‚ã¾ã—ã¦ï¼Ž
ã©ã®ã‚ˆã†ã«è§£æ±ºã—ãŸã‹æ•™ãˆã¦é ‚ã‘れã°ã‚りãŒãŸã„ã§ã™ï¼Ž
ãªãŠï¼Œï¼¯ï¼¤ï¼¥ã®ã‚ªã‚¤ãƒ©ãƒ¼è§’ã«ã¤ã„ã¦ã¯ä»¥ä¸‹ã«èª¬æ˜Žã—ã¦ã„ã¾ã™ï¼Žãƒãƒœãƒƒãƒˆé–¢ä¿‚ã®æ•™ç§‘書ã¨ã¯é•ã†ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„.
http://demura.net/9ode/452.html#b10
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ボールã®å§¿å‹¢ã‚’å–å¾—ã™ã‚‹ã¨ã„ã†äº‹ã«é–¢ã—ã¦ã¯ã€
const dReal *b=dBodyGetRotation(dBodyID);
printf(“|%f %f %f|\n”,b[0],b[4],b[8]);
printf(“|%f %f %f|\n”,b[1],b[5],b[9]);
printf(“|%f %f %f|\n”,b[2],b[6],b[10]);
printf(“|%f %f %f|\n”,b[3],b[7],b[11]);
ã¨æ›¸ã„ã¦ã€ï½ºï¾ï¾ï¾„゙プロï¾ï¾Œï¾Ÿï¾„上ã§è¡¨ç¤ºã™ã‚‹ã“ã¨ã¯ã§ãã¾ã—ãŸã€‚
ODEã§ã¯ã€dRFromEulerAngles ã§ã‚ªã‚¤ãƒ©ãƒ¼è§’ã‹ã‚‰å›žè»¢è¡Œåˆ—ã‚’å–å¾—ã™ã‚‹APIã¯ã‚るよã†ã§ã™ãŒã€é€†ã«å›žè»¢è¡Œåˆ—ã‹ã‚‰ã‚ªã‚¤ãƒ©ãƒ¼è§’ã‚’å–å¾—ã™ã‚‹æ–¹æ³•ã¯ã‚りã¾ã™ã§ã—ょã†ã‹ã€‚
色々探ã—ã¦ã‚‚見当ãŸã‚‰ãªã‹ã£ãŸã®ã§ã€è‡ªåˆ†ã§å®Ÿè£…ã™ã‚‹ã—ã‹ãªã„ã®ã‹ãªã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
HAã•ん,
ã”質å•ã‚’å†ç¢ºèªã•ã›ã¦ãã ã•ã„.
å¹³é¢ã¯ãã®æ³•ç·šã‚’ä¸å¿ƒã«å›žè»¢ã§ãã‚‹ã®ã§å›žè»¢è¡Œåˆ—を一æ„ã«æ±ºã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“.
ã†ã™ã¹ã£ãŸã„直方体ãªã‚‰ä¸€æ„ã«æ±‚ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒï¼Ž
ãªãŠï¼ŒODE講座20ã®è¨˜äº‹ãŒå‚考ã«ãªã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
http://demura.net/9ode/457.html
ã§ã‚€
ã‚りã¾ã›ã‚“.
ãªãŠï¼ŒODEã®ã‚ªã‚¤ãƒ©ãƒ¼è§’ã¯ä¸€èˆ¬çš„ã§ã¯ãªã„ã®ã§ï¼Œã”自分ã§å®Ÿè£…ã•ã‚ŒãŸæ–¹ãŒè‰¯ã„ã¨æ€ã„ã¾ã™ï¼Ž
ã§ã‚€
demuã•ã‚“
返信é…ããªã‚Šç”³ã—訳ã‚りã¾ã›ã‚“。
言ã‚れã¦ã¿ã‚Œã°ç¢ºã‹ã«ä¸€æ„ã«ã¯æ±ºã‚られãªã„ã§ã™ã。姿勢行列をå˜ä½è¡Œåˆ—ã«åˆæœŸåŒ–ã—ã€æ³•ç·šã«åž‚ç›´ã«ãªã‚‹ã‚ˆã†ã«å›žè»¢ã—ãŸå¾Œã€æ³•ç·šæ–¹å‘ã¸ã®å›žè»¢ã‚’行ã‚ãªã„å§¿å‹¢ãŒæ¬²ã—ã‹ã£ãŸã‚ã‘ã§ã™ã€‚(ã“ã®èª¬æ˜Žã‚‚ã¾ãšã‹ã£ãŸã‚‰ã™ã„ã¾ã›ã‚“)
ã”紹介ã„ãŸã ã„ãŸè¨˜äº‹ã¯ä»¥å‰ã‹ã‚‰å˜ã˜ã¦ãŠã‚Šå‚考ã«ã•ã›ã¦é ‚ã„ã¦ã„ã¾ã—ãŸã€‚ãã“ã§ç´¹ä»‹ã•れã¦ã„ãŸdRFrom2Axes()ã‚’ä½¿ã†æ‰‹æ³•ãŒæ€ã£ã¦ã„ãŸçµæžœã¨é•ã£ãŸã®ã§è³ªå•ã•ã›ã¦é ‚ã„ãŸã®ã§ã™ãŒã€åˆ¥ã®ã‚¢ãƒ—ãƒãƒ¼ãƒã§ç§ãŒè¡Œã„ãŸã„ã“ã¨ã¯å®Ÿç¾ã§ãã¾ã—ãŸã€‚ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã“れã‹ã‚‰ã‚‚ã“ã®ã‚µã‚¤ãƒˆã«ãŠä¸–話ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ãªã«ã¨ãžå®œã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
masaã•ん,
明ã‘ã¾ã—ã¦ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼Žä»Šå¹´ã‚‚コメントãã ã•ã„.
ã•ã¦ï¼Œã“ã®ã‚¨ãƒ©ãƒ¼ã¯ODEã®å†…部計算時ã«ç™ºç”Ÿã—ã¾ã™ï¼Ž
具体的ã«ã¯ï¼Œãƒ™ã‚¯ãƒˆãƒ«ã‚’æ£è¦åŒ–ã™ã‚‹é–¢æ•°dNormalize4()ã«ï¼ãƒ™ã‚¯ãƒˆãƒ«ãŒæ¸¡ã•れã¦ã„ã‚‹ã¨ãã«ç™ºç”Ÿã—ã¾ã™ï¼ŽdNormalize4()ã¯ode.cppã®dBodySetRotation(), dBodySetQuaternion(), stepfast.cppã®moveAndRotateBody(), util.cppã®dxStepBody()ã®ä¸ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ï¼Ž
エラーã®åŽŸå› ã¯ï¼Œæ•°å€¤è¨ˆç®—ã«ã‚ˆã‚‹èª¤å·®ã¨ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ãƒ¢ãƒ‡ãƒ«ãŒæ‚ªã„å ´åˆãŒã‚りã¾ã™ï¼Ž
å‰è€…ã®èª¤å·®ã‚’減らã™ãŸã‚ã«ã¯ï¼ŒODEã‚’å€ç²¾åº¦ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ï¼Œæœ€æ–°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’使ã†ï¼Œstepsizeã‚’å°ã•ãã™ã‚‹ï¼ŒdWorldQuickStepを使ã£ã¦ã„ãŸã‚‰dWorldStepã«ã™ã‚‹ï¼ŒERPã‚„CFMã®å€¤ã‚’ãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã™ã‚‹ãªã©ãŒã‚りã¾ã™ï¼Ž
後者ã§è€ƒãˆã‚‰ã‚Œã‚‹ã®ã¯ï¼Œç‰©ä½“ã«éŽå¤§ãªåŠ›ã‚’åŠ ãˆãŸã‚Šï¼Œè³ªé‡ã‚’極端ã«å°ã•ãã—ãŸã‚Šï¼Œç‰©ä½“ã®é€Ÿåº¦ãŒå¤§ãã™ãŽã‚‹å ´åˆã§ã™ï¼Ž
解決ã—ãŸã‚‰æ•™ãˆã¦ãã ã•ã„.
ã§ã‚€
ã¾ãšèª¤å·®ã‚’減らã™ãŸã‚ã«ã¨ã„ã†ã“ã¨ã§ã€stepsizeã‚’ã‹ãªã‚Šå°ã•ãã—ã€ã•らã«ERPã¨CFMã‚’ã¨ã‚‚ã«ãƒ‡ãƒ•ォルト値ã«ã—ãŸã¨ã“ã‚ã€ä¸€å¿œæç”»ã¯ã•れã¾ã—ãŸã€‚(ODEã¯å€ç²¾åº¦ã§ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã€æœ€æ–°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’使用ã—ã¦ã„ã¦ã€dWorldStepを使ã£ã¦ã„ãŸã®ã§ã“ã®ï¼“点ã¯å¤‰æ›´ã—ã¦ã„ã¾ã›ã‚“)
ãŸã ã€æç”»ã•れãŸã‚‚ã®ã®ç‰©ä½“ãŒã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³å†…ã§ç©ºä¸åˆ†è§£ã—ã¦ã—ã¾ã„ã¾ã™ã€‚ãªãœç©ºä¸åˆ†è§£ã—ã¦ã—ã¾ã™ã®ã§ã—ょã†ã‹ï¼Ÿ
åˆæœŸçŠ¶æ…‹ãŒç‰¹ç•°å§¿å‹¢ã ã‹ã‚‰ã„ã‘ãªã„ã®ã‹ã€ã‚‚ã—ãã¯ã€ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å–り付ã‘ã®ä½ç½®ãŒã„ã‘ãªã„ã®ã‹ã€ã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“。
ã¾ãŸã€ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ãƒ¢ãƒ‡ãƒ«ãŒæ‚ªã„å ´åˆã§ã™ãŒã€ã¾ã åŠ›ã‚’åŠ ãˆãŸã‚Šã€é€Ÿåº¦ã‚’æŒãŸã›ãŸã‚Šã—ã¦ã„ãªã„ã®ã§ã€ã“ã®ï¼’ã¤ã¯ãªã„ã¨æ€ã„ã¾ã™ã€‚ã¾ãŸã€æ¥µç«¯ã«è³ªé‡ãŒå°ã•ã„ã“ã¨ã‚‚ãªã„ã¨æ€ã„ã¾ã™ï¼ˆãƒœãƒ‡ã‚£ãŒ20.0ã€è„šãŒ5.0×4ã¤ã§ã™ï¼‰ã€‚
ã¡ãªã¿ã«ãƒ—ãƒã‚°ãƒ©ãƒ ã¯ã€è·³èºã™ã‚‹ï¼’脚ãƒãƒœãƒƒãƒˆã‚’作ã‚ã†ã¨ã—ã¦ã„ã‚‹ã¨ã“ã‚ã§ã€ç›´æ–¹ä½“ã®ãƒœãƒ‡ã‚£ã«ã‚«ãƒ—セルã®è„šã‚’ãã£ã¤ã‘ã¦ã€ãƒœãƒ‡ã‚£ã¨è„šã®éƒ¨åˆ†ã¨è†é–¢ç¯€ã®éƒ¨åˆ†ã«ãƒ’ンジジョイントを使用ã—ãŸï¼’脚ãƒãƒœãƒƒãƒˆã‚’ã¨ã‚Šã‚ãˆãšæç”»ã—ã¦ã¿ãŸæ®µéšŽã§ã™ã€‚ï¼ˆåˆæœŸå§¿å‹¢ãŒç‰¹ç•°å§¿å‹¢ï¼‰
ã“れã‹ã‚‰åˆ¶å¾¡éƒ¨ã®ãƒ—ãƒã‚°ãƒ©ãƒ を書ã„ã¦ã€è·³èºã•ã›ãŸã„ã¨æ€ã£ã¦ã„ã‚‹ã®ã§ã™ãŒã€å…ˆã«åˆ¶å¾¡ã®ãƒ—ãƒã‚°ãƒ©ãƒ ç‰ã‚‚組ã¿è¾¼ã‚“ã§ã—ã¾ã£ã¦ã‹ã‚‰ã®ã»ã†ãŒã„ã„ã®ã§ã—ょã†ã‹ï¼Ÿ
é•·æ–‡ã«ãªã£ã¦ã—ã¾ã„申ã—訳ã‚りã¾ã›ã‚“ãŒã€ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
masaã•ん,
パラメータを変ãˆã¦ã‚‚空ä¸åˆ†è§£ã™ã‚‹ã®ã¯ãƒ¢ãƒ‡ãƒ«ãŒæ‚ªã„å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ï¼Žstepsizeã®å€¤ã‚’æ•™ãˆã¦ãã ã•ã„.
以下を試ã—ã¦çµæžœã‚’æ•™ãˆã¦ãã ã•ã„.
1. ERPã¯0.2ã‹ã‚‰0.9, CFMã¯ãƒ‡ãƒ•ォルト値より大ãã1e-2ã‹ã‚‰1e-4ã«å¤‰æ›´
2. dWorldSetContactSurfaceLayer, dWorldSetContactMaxCorrectingVelã‚’è¨å®šã™ã‚‹ï¼Ž
3. dWorldQuickStepã«å¤‰æ›´ã™ã‚‹ï¼Žè¨ˆç®—精度ã¯dWorldStepã®æ–¹ãŒé«˜ã„ã®ã§ã™ãŒã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®å®‰å®šæ€§ãŒå¢—ã™ã¨ã„ã†å ±å‘ŠãŒã‚りã¾ã™ï¼Ž
4. ジョイントã§çµåˆã•れã¦ã„ã‚‹ï¼’ã¤ã®ãƒœãƒ‡ã‚£ãŒå¹²æ¸‰ã—ã¦ã„ãªã„ã‹ï¼Žãƒœãƒ‡ã‚£ãŒå¹²æ¸‰ã—ã¦ãŠäº’ã„ã«ã‚りã“ã‚€ã¨å¼·ã„力ãŒåƒããƒãƒ©ãƒãƒ©ã«ãªã‚‹å ´åˆãŒã‚りã¾ã™ï¼Žå¹²æ¸‰ã—ã¦ã„ã‚‹å ´åˆã¯ï¼Œãã®ï¼’ã¤ã®ãƒªãƒ³ã‚¯ã¯è¡çªæ¤œå‡ºã—ãªã„よã†ã«ã—ã¾ã—ょã†ï¼Ž
ã§ã‚€
masaã•ん,
ソースコードをæ‹è¦‹ã—ã¾ã—ãŸï¼Ž
dCreateCapsuleã‚’dCreateCylinderã«å¤‰æ›´ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ãŒç›´ã‚Šã¾ã™ï¼Žãªãœã§ã—ょã†ï¼Ÿ
ヒント:カプセルã¯å††æŸ±ã®ä¸¡ç«¯ã«åŠçƒã‚’ã¤ã‘ãŸã‚‚ã®ã§ã™ï¼Žè„šã®é•·ã•ã‚’0.8mã¨ã—ã¦ã„ã¾ã™ãŒï¼Œã‚«ãƒ—セルã®é«˜ã•ã¯0.8+カプセルã®ç›´å¾„ã«ãªã‚Šã¾ã™ï¼Ž
ã§ã‚€
カプセルã®é•·ã•ãŒ0.8+カプセルã®ç›´å¾„ã¨ãªã‚‹ã¨ã“ã‚ã‚’0.8ã§è€ƒãˆã€ãƒœãƒ‡ã‚£ã®ä½ç½®ã‚„ジョイントã®ä½ç½®ç‰ã‚’è¨å®šã—ã¦ã„ãŸã‹ã‚‰ã§ã—ょã†ã‹ï¼Ÿãã®ãŸã‚dCreateCapsuleã‚’dCreateCylinderã«å¤‰æ›´ã™ã‚‹ã“ã¨ã§ã€è¦‹ãŸç›®ã¯ã‚«ãƒ—セルã§ã‚‚ジオメトリãŒã‚·ãƒªãƒ³ãƒ€ãƒ¼ãªã®ã§ã€ãƒœãƒ‡ã‚£ãŒãŠäº’ã„ã«ã‚りã“ã¾ãšã«ã™ã‚“ã§ã‚¨ãƒ©ãƒ¼ã«ãªã‚‰ãªã‹ã£ãŸã¨ã„ã†ã“ã¨ã§ã—ょã†ã‹ï¼Ÿ
ã²ã¨ã¤æ€ã£ãŸã®ã§ã™ãŒã€ã“ã®çŠ¶æ…‹ã ã¨ãƒœãƒ‡ã‚£ã¨ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®å½¢çжãŒé•ã„ã¾ã™ãŒãれã§ã‚‚大丈夫ãªã®ã§ã—ょã†ã‹ï¼Ÿ
よã‚ã—ããŠããŒã„ã—ã¾ã™ã€‚
melã•ん,
コメントを4階層ã®å…¥ã‚Œåã«å¤‰æ›´ã—ã¾ã—ãŸã®ã§è¡¨ç¤ºãŒå¤‰ã‚りã¾ã—ãŸï¼Ž
ã•ã¦ï¼ŒODEã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚‚実際ã®ãƒãƒœãƒƒãƒˆã‚’作るã“ã¨ã‚’考ãˆã¦ãƒ¢ãƒ‡ãƒ«ã‚’作るã¹ãã ã¨è€ƒãˆã¾ã™ï¼Ž
ã¤ã¾ã‚Šï¼Œå›žè»¢ã—ã¦ã‚‚ãŠäº’ã„ã®è„šã¯ã¶ã¤ã‹ã‚‰ãªã„よã†ã«ã™ã¹ãã§ã™ï¼Žmelã•ã‚“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ä¸‹è„šãŒåœ°é¢ã«ã‚り込んã§ã„ã¾ã™ï¼Ž
ãªãŠï¼ŒåŸºæœ¬çš„ã«ã¯ãƒœãƒ‡ã‚£ã¨ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¯åŒã˜ã«ã™ã¹ãã ã¨æ€ã„ã¾ã™ï¼Ž
カプセルを使ã„ãŸã„å ´åˆã¯ï¼Œè„šãŒäº’ã„ã«ã¶ã¤ã‹ã‚‰ãªã„よã†ã«ä½ç½®ã‚’変更ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
今回ã®è³ªå•ã§ã¨ã¦ã‚‚勉強ã«ãªã‚Šã¾ã—ãŸã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã¾ãŸã€é•ã†è³ªå•ãŒã‚ã‚‹ã®ã§ã™ãŒã€ãれã¯ã¾ãŸæ–°ãŸã«è³ªå•ã•ã›ã¦ã„ãŸã ãã¾ã™ã®ã§ã€ãã¡ã‚‰ã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ERPã‚’0.2ã€CFMã‚’1e-2ã§ã€stepsizeãŒ1e-8ã§ç©ºä¸åˆ†è§£ã—ã¾ã›ã‚“ã§ã—ãŸã€‚
CFMã‚’1e-4ã«ã—ãŸå ´åˆstepsizeã‚’ã‚‚ã£ã¨å°ã•ãã™ã‚Œã°ç©ºä¸åˆ†è§£ã—ã¾ã›ã‚“ã§ã—ãŸã€‚
ç¶šã„ã¦ä¸Šè¨˜ã«æŒ™ã’ã¦ã„ãŸã ã„ãŸï¼’ã€ï¼“ã€ï¼”ã‚‚ã‚„ã£ã¦ã¿ãŸã»ã†ãŒã„ã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ã¾ãŸã€ãƒ¢ãƒ‡ãƒ«ãŒæ‚ªã„å ´åˆã¨ã„ã†ã®ã¯å„ç‰©ä½“ã®æŽ¥ç¶šãŒæ‚ªã„ã¨ã„ã†ã“ã¨ãªã®ã§ã—ょã†ã‹ï¼Ÿ
masaã•ん,
stepsizeã‚’1e-8ã«ã—ãªã‘れã°ç©ºä¸åˆ†è§£ã™ã‚‹ã®ã¯ï¼Œãƒ¢ãƒ‡ãƒ«ãŒæ‚ªã„å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼Ž
4番をやã£ãŸæ–¹ãŒè‰¯ã„ã¨æ€ã„ã¾ã™ï¼Žãƒ¢ãƒ‡ãƒ«ãŒæ‚ªã„ã¨ã„ã†æ„味ã¯ï¼Œç¾å®Ÿã«ã¯ã‚り得ãªã„モデルã®ã“ã¨ã§ã™ï¼Žãƒœãƒ‡ã‚£ãŒé‡ãªã£ã¦ã„ãŸã‚Šï¼Œé–¢ç¯€ã®ä½ç½®ã¨ãƒœãƒ‡ã‚£ã®ä½ç½®é–¢ä¿‚ã«çŸ›ç›¾ãŒã‚ã‚‹å ´åˆã§ã™ï¼Ž
ã“れを直ã™ã“ã¨ã¯ï¼Œãƒ¢ãƒ‡ãƒ«ã‚’作ã£ãŸæœ¬äººã—ã‹ã§ãã¾ã›ã‚“.ボディをåŠé€æ˜Žã«ã—ã¦ï¼ŒæŽ¥è§¦ç‚¹ã‚„ジョイントä¸å¿ƒç‚¹ã‚’表示ã™ã‚‹ã¨é–“é•ã„ãŒã‚ã‹ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“.
ã§ã‚€
ãŸã³ãŸã³ã™ã¿ã¾ã›ã‚“。
何度もãƒã‚§ãƒƒã‚¯ã¯ã—ã¦ã¿ãŸã‚‚ã®ã®åŽŸå› ãŒã„ã¾ã„ã¡ã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“。
関節ã¨ãƒœãƒ‡ã‚£ã®ä½ç½®é–¢ä¿‚やジョイントã®ä¸å¿ƒç‚¹ã¯é–“é•ã£ã¦ã¯ã„ãªã„ã¨æ€ã†ã®ã§ã™ãŒâ€¦
一部プãƒã‚°ãƒ©ãƒ を載ã›ã¾ã™ã®ã§ã€ãŠå¿™ã—ã„䏿œ¬å½“ã«ç”³ã—訳ã‚りã¾ã›ã‚“ãŒè¦‹ã¦ã‚‚らãˆãªã„ã§ã—ょã†ã‹ï¼Ÿ
typedef struct { // MyObjectæ§‹é€ ä½“
dBodyID body; // ボディ(剛体)ã®ID番å·ï¼ˆå‹•力å¦è¨ˆç®—用)
dGeomID geom; // ジオメトリã®ID番å·(è¡çªæ¤œå‡ºè¨ˆç®—用)
double l,r,m;  //é•·ã•[m],åŠè»½[m],質é‡[kg]
} MyObject;
static MyObject torso,leg[2],leg2[2]; // leg[0]:上脚, leg[1]:下脚
static dJointID h_joint[4];
dReal lx=0.72,ly=0.4,lz=0.1; //body sides
(コールãƒãƒƒã‚¯é–¢æ•°ã¯çœç•¥ï¼‰
// ãƒãƒœãƒƒãƒˆã®æç”»
static void drawMonoBot()
{
const dReal *pos1,*R1,*pos2,*R2;
dVector3 sides;
// 胴体部(直方体)ã®æç”»
dsSetColorAlpha(1.0,0.0,0.0,0.2); // 赤色
dGeomBoxGetLengths(torso.geom,sides);
pos1 = dBodyGetPosition(torso.body);
R1 = dBodyGetRotation(torso.body);
dsDrawBox(pos1,R1,sides);
// 脚部(ã‚«ãƒ—ã‚»ãƒ«ï¼‰ã®æç”»
for (int i = 0; i < 2; i++) {
pos2 = dBodyGetPosition(leg[i].body);
R2 = dBodyGetRotation(leg[i].body);
if(i==0){
dsSetColorAlpha(0.0,0.0,1.0,0.9); // é’色
dsDrawCapsule(pos2,R2,leg[i].l,leg[i].r);
dsDrawCapsule(dBodyGetPosition(leg2[i].body),dBodyGetRotation(leg2[i].body),leg2[i].l,leg2[i].r);
}
else{
dsSetColorAlpha(1.0,1.0,1.0,0.3);
dsDrawCapsule(pos2,R2,leg[i].l,leg[i].r);
dsDrawCapsule(dBodyGetPosition(leg2[i].body),dBodyGetRotation(leg2[i].body),leg2[i].l,leg2[i].r);
}
}
}
// ãƒãƒœãƒƒãƒˆã®ç”Ÿæˆ
void createMonoBot() {
dMass mass;
dReal x0 = 0.0, y0 = 0.0, z0 = 1.65; //ボディã®ä¸å¿ƒç‚¹
// 胴体(直方体)
torso.m = 7.0; //胴体ã®è³ªé‡
torso.body = dBodyCreate(world); //胴体ã®ãƒœãƒ‡ã‚£
dMassSetZero(&mass);
dMassSetBoxTotal(&mass,torso.m,lx,ly,lz);
dBodySetMass(torso.body,&mass);
dBodySetPosition(torso.body, x0, y0, z0);
torso.geom = dCreateBox(space,lx,ly,lz);
dGeomSetBody(torso.geom,torso.body);
// 脚(カプセル)
for (int i = 0; i < 2; i++)
{
leg[i].l = 0.80; //é•·ã•
leg2[i].l = 0.80;
leg[i].r = 0.06; //åŠå¾„
leg2[i].r = 0.06;
leg[i].m = 5.0; //é‡ã•
leg2[i].m = 5.0;
leg[i].body = dBodyCreate(world);
leg2[i].body = dBodyCreate(world);
dMassSetZero(&mass);
dMassSetCapsuleTotal(&mass,leg[i].m,3,leg[i].r,leg[i].l);
dBodySetMass(leg[i].body,&mass);
dMassSetCapsuleTotal(&mass,leg2[i].m,3,leg2[i].r,leg2[i].l);
dBodySetMass(leg2[i].body,&mass);
if(i == 0){
dBodySetPosition(leg[i].body, 0.33, y0, 1.2);
dBodySetPosition(leg2[i].body, -0.33, y0, 1.2);
}
else{
dBodySetPosition(leg[i].body, 0.33, y0, 0.4);
dBodySetPosition(leg2[i].body, -0.33, y0, 0.4);
}
leg[i].geom = dCreateCapsule(space,leg[i].r,leg[i].l);
dGeomSetBody(leg[i].geom,leg[i].body);
leg2[i].geom = dCreateCapsule(space,leg2[i].r,leg2[i].l);
dGeomSetBody(leg2[i].geom,leg2[i].body);
}
// ヒンジジョイントã®ç”Ÿæˆã¨å–り付ã‘
for(int i=0; i<4; i++)
{
h_joint[i] = dJointCreateHinge(world, 0);
if(i == 0){
dJointAttach(h_joint[i], torso.body,leg[0].body);
dJointSetHingeAnchor(h_joint[i], 0.33, y0, 1.6);
dJointSetHingeAxis(h_joint[i], 1, 0, 0);
}
if(i == 1){
dJointAttach(h_joint[i], leg[0].body,leg[1].body);
dJointSetHingeAnchor(h_joint[i], 0.33, y0, 0.8);
dJointSetHingeAxis(h_joint[i], 1, 0, 0);
}
if(i == 2){
dJointAttach(h_joint[i], torso.body,leg2[0].body);
dJointSetHingeAnchor(h_joint[i], -0.33, y0, 1.6);
dJointSetHingeAxis(h_joint[i], 1, 0, 0);
}
else{
dJointAttach(h_joint[i], leg[0].body,leg2[1].body);
dJointSetHingeAnchor(h_joint[i], -0.33, y0, 0.8);
dJointSetHingeAxis(h_joint[i], 1, 0, 0);
}
}
}
本当ã«ç”³ã—訳ã‚りã¾ã›ã‚“ãŒãªã‚“ã¨ã‹ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã¡ã‚‡ã£ã¨æ–‡ç« ãŒè¶³ã‚Šãªã‹ã£ãŸã®ã§ã™ãŒ
車輪ã¨èƒ´ä½“をヒンジ2ã§ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã—ã¦ã„ã¾ã™ã€‚
å°‘ã—ã„ã˜ã£ã¦ã¦ã€
dParamVelã¨dParamVel2を使ã„分ã‘ã‚‹ã“ã¨ã§è§£æ±ºã§ããã†
ã ã¨è¨€ã†ã“ã¨ãŒåˆ†ã‹ã£ãŸã®ã§ã‚„ã£ã¦ã¿ã¾ã—ãŸã€‚
ãã“ã§ã€
dParamVelã§é€²ã‚€æ–¹å‘を決ã‚る角度をè¨å®šã—ã€
dParamVel2ã§è»Šè¼ªã®å›žè»¢ã‚’決ã‚ã‚‹ã®ã ã¨æ€ã£ã¦ã‚„ã£ã¦ã¿ãŸã®ã§ã™ãŒ
ãªãœã‹ã€dParamã®æ–¹ãŒè»Šè¼ªã®å›žè»¢ã«ãªã‚Šã€
dParam2ã®æ–¹ã«æ•°å€¤ã‚’è¨å®šã—ã¦ã‚‚上手ãå‹•ã„ã¦ãれã¾ã›ã‚“ã§ã—ãŸã€‚
ç¾åœ¨åŽŸå› ã‚’æŽ¢ã—ã¦ã‚‹ã®ã§ã™ãŒã€ãƒ—ãƒã‚°ãƒ©ãƒ 書ãä¸Šã§æ³¨æ„ã—ãªã‘れã°
ã„ã‘ãªã„点ãªã©ã‚りã¾ã—ãŸã‚‰ãŠé¡˜ã„ã—ã¾ã™ã€‚
ã™ãŒãŸã‚ã†ã•ん,
返事ãŒé…ããªã‚Šã™ã¿ã¾ã›ã‚“.ã“ã®æƒ…å ±ã ã‘ã§ã¯ã‚ˆãã‚ã‹ã‚‰ãªã„ã®ã§å¤–ã—ã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒï¼ŒdJointAttach(dJointID joint, dBodyID body1, dBodyID body2);
ã®body1ã¨body2を逆ã«ã—ã¦ã¿ã¦ãã ã•ã„.
ソースコードãŒã‚ã‚‹ã¨ã‚‚ã†å°‘ã—ã‚ã‹ã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
ã§ã‚€
返事ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ソースコードを良ã確èªã—ã¦ã¿ãŸã‚‰ã€
回転軸ã®è¨å®šãŒé–“é•ã£ã¦ã¾ã—ãŸã€‚
ãŠé¨’ãŒã›ã—ã¦ã€ã™ã¿ã¾ã›ã‚“ã§ã—ãŸã€‚
連投ã™ã¿ã¾ã›ã‚“。
ヒンジ2を使ã£ã¦è»Šè¼ªã®å›žè»¢ã«ã¤ã„ã¦ã¯æ¬¡ã®ã‚ˆã†ã«æ›¸ã„ã¦ã§ããŸã®ã§ã™ãŒã€
è»ŠãŒæ›²ãŒã‚‹ãŸã‚ã«å¿…è¦ãªè»Šè¼ªã®è§’度ãŒä¸Šæ‰‹ãå‹•ã„ã¦ãれã¾ã›ã‚“。
æ›¸ãæ–¹ãŒæ‚ªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
dReal fMax = 0.2;
dReal fMax2 = 1000;
dReal v;
for( int k = 0; k < car; k++){
for( int i = 0; i < NUM ;i++){
dJointSetHinge2Param(joint[k][i], dParamVel2, 500);
dJointSetHinge2Param(joint[k][i], dParamFMax2, fMax2);
//dJointSetHinge2Param(joint[k][i], dParamFudgeFactor,0.1);
if(i%2 == 0){
v = 0.5;
dJointSetHinge2Param(joint[k][i], dParamVel, v); //å‰è¼ª
dJointSetHinge2Param(joint[k][i], dParamFMax, fMax);
dJointSetHinge2Param (joint[k][i],dParamLoStop,-0.75);
dJointSetHinge2Param (joint[k][i],dParamHiStop,0.75);
}
else{ //後輪
dJointSetHinge2Param (joint[k][i],dParamLoStop,0);
dJointSetHinge2Param (joint[k][i],dParamHiStop,0);
}
}
}
1ã¤ç›®ã®è³ªå•ã§ã™ãŒdBodyAddForceを使ã£ãŸã¨ã“ã‚æœ›ã‚“ã§ã„ãŸæŒ™å‹•ã‚’ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸã€‚
よãよã考ãˆã‚Œã°dBodyAddTorqueã¯ãƒˆãƒ«ã‚¯ã®ã‚ã‘ã§ã™ã‹ã‚‰æŒ‡å®šã—ãŸè»¸ã‚’ä¸å¿ƒã«å›žè»¢ã™ã‚‹ã®ã¯å½“ç„¶ã§ã™ã^^;
ã™ãã«åˆ†ã‹ã‚‹è³ªå•ã‚’ã—ã¦ã—ã¾ã„申ã—訳ã”ã–ã„ã¾ã›ã‚“。2ã¤ç›®ã®è³ªå•ã¯è‡ªåˆ†ã§è‰²ã€…弄ã£ã¦ã¿ãŸã®ã§ã™ãŒã†ã¾ãã„ã‹ãªã‹ã£ãŸã®ã§ï¼Œã‚¢ãƒ‰ãƒã‚¤ã‚¹ã—ã¦ã„ãŸã ã‘ã‚‹ã¨å¹¸ã„ã§ã™ã€‚
melã•ん,
ï¼’ã¤ç›®ã®ã”質å•ã§ã™ãŒï¼Œè§’é€Ÿåº¦ã«æ¯”例ã—ãŸåŠ›ã‚’ç¾åœ¨å›žè»¢ã—ã¦ã„ã‚‹æ–¹å‘ã¨é€†ã«ã‹ã‘ã‚Œã°æŒ¯å‹•ã¯æ¸›è¡°ã™ã‚‹ã¯ãšã§ã™ï¼Ž
æ“作é‡ã¨æ‘©æ“¦ãƒˆãƒ«ã‚¯ã®ç¬¦å·ã¨å¤§ãã•ã‚’ãƒã‚§ãƒƒã‚¯ã—,摩擦トルクãŒå°ã•ã„å ´åˆã¯ä¿‚æ•°ã‚’ã‹ã‘ã¦å¤§ããã—ã¦ã¿ã¦ãã ã•ã„.
ã§ã‚€
ã™ãŒãŸã‚ã†ã•ん,
ã“ã®ã‚³ãƒ¼ãƒ‰ã ã‘ã§ã¯è‰¯ãã‚ã‹ã‚Šã¾ã›ã‚“ãŒï¼Œã‚¹ãƒ†ã‚¢ãƒªãƒ³ã‚°ãŒä¸€å®šã®è§’åº¦ã§æ¢ã¾ã‚‰ãšå›žè»¢ã—ã¾ã›ã‚“ã‹ï¼Ÿ
ã¾ãŸï¼Œå‰è¼ªã¨è»Šä½“ãŒã¶ã¤ã‹ã£ã¦ï¼ˆå¹²æ¸‰ã—ã¦ï¼‰ã‚¹ãƒ†ã‚¢ãƒªãƒ³ã‚°ãŒå›žè»¢ã—ãªã„ã¨ã†ã“ã¨ã¯ãªã„ã§ã—ょã†ã‹ï¼Ÿ
ãªãŠï¼Œhinge2ã¯ODEデモプãƒã‚°ãƒ©ãƒ demo_buggy.cppãŒå‚考ã«ãªã‚Šã¾ã™ï¼Ž
ã§ã‚€
返事ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ステアリングã®è§’度ã«ã‚‚å•題ãŒã‚り一定ã®è§’度ã«ãªã‚‹ã‚ˆã†ã«ã—ã¾ã—ãŸã€‚
ãã—ã¦ã€
地é¢ã®è¨å®šã§slipã‚’è¨å®šã™ã‚‹ã¨ä¸Šæ‰‹ã曲ãŒã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚
ODE質å•ãƒ»è¦æœ›å‹Ÿé›†ï¼‘ï¼ï¼ã«æŠ•稿願ã„ã¾ã™ï¼Ž
ã§ã‚€