é»’ã„人ã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€ã‚³ãƒ¡ãƒ³ãƒˆã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ ラグランジェ法ã®ä¸€ç¨®ã‚’使ã£ã¦ã„ã¾ã™ã€‚詳細ã¯ã€Œã‚ˆãã‚る質å• B.16ã€ã«æ›¸ãã¾ã—ãŸã®ã§ã”覧ãã ã•ã„。
ã§ã‚€
ODE 本体ãŒå¾®ç©åˆ†ã‚’計算ã—ã¦ã„る方法ãŒã€ä½•ã‹æ•™ãˆã¦ãã ã•ã„。ニュートン法やオイラー法ãªã©ã®åå‰ãŒåˆ¤ã‚‹ã ã‘ã§ã‚‚大変助ã‹ã‚Šã¾ã™ã€‚
大和ã•ã‚“ã€
ãŠåŠ›ã«ãªã‚Œãšã™ã¿ã¾ã›ã‚“。 ã‚‚ã—ã€ã‚ˆã‹ã£ãŸã‚‰è§£æ±ºæ–¹æ³•を投稿ã—ã¦é ‚ã‘れã°ã€åŒã˜ã‚ˆã†ãªå•é¡Œã«æ‚©ã‚“ã§ã„ã‚‹æ–¹ã®å‚考ã«ãªã‚‹ã¨æ€ã„ã¾ã™ã€‚
>>ODE FAQã®A.11ã«å›žç”ã—ã¾ã—ãŸã€‚ ã‚ã‹ã‚Šã¥ã‚‰ã„箇所ãŒã‚ã‚Œã°æ•™ãˆã¦ãã ã•ã„。
ã§ã‚€ã•ã‚“ã€éžå¸¸ã«ã‚ã‹ã‚Šã‚„ã™ã„説明ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼ï¼ 大変助ã‹ã‚Šã¾ã™ï¼ï¼
回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ ã„ã‚ã„ã‚ã¨è‡ªåˆ†ã§ã„ã˜ã£ã¦ãŸã‚‰ãªã‚“ã¨ã‹ã†ã¾ã行ãã¾ã—ãŸï¼ˆï¼¾ï¼¾ï¼›
ドåˆå¿ƒè€…ã•ã‚“ã€
ODE FAQã®A.11ã«å›žç”ã—ã¾ã—ãŸã€‚ ã‚ã‹ã‚Šã¥ã‚‰ã„箇所ãŒã‚ã‚Œã°æ•™ãˆã¦ãã ã•ã„。
>>ã”質å•ã®æ„味をå–りé•ãˆã¦ã„ã‚‹ã‹ã‚‚ã—れãªã„ã®ã§ç¢ºèªã•ã›ã¦ãã ã•ã„。 自分自身ã§ä½œæˆã™ã‚‹æ–¹æ³•ã¨ã„ã†ã®ã¯ã€ã‚³ãƒ³ãƒ‘イラーã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®ä½¿ã„æ–¹ãªã©ã®é–‹ç™ºç’°å¢ƒã«é–¢ã™ã‚‹ã“ã¨ã§ã—ょã†ã‹ï¼Ÿ
より具体的ã«èžã„ã¦ãã ã•ã„。
質å•ãŒã‚ã‹ã‚Šã«ããã¦ç”³ã—訳ã”ã–ã„ã¾ã›ã‚“。
å…ˆã»ã©ã®è›‡ãƒãƒœãƒƒãƒˆã®è©±ã‚’例ã«ã™ã‚‹ã¨ã€ 「snakeroboã¨ã„ã†ãƒ•ォルダをã©ã“ã©ã“ã«ä½œã£ã¦ã€ãã“ã«è‡ªåˆ†ã§ä½œæˆã—ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰snakerobo.cppファイルをã„れã¾ã™ã€‚ ãã—ã¦ã€ã©ã†ã‚³ãƒ³ãƒ‘イルã—ã€ã©ã†å®Ÿè¡Œã•ã›ã¾ã™ã€‚〠ã£ã¨ã„ã£ãŸå…·åˆã§ã™ã€‚ ã‚ã‹ã‚Šã«ãã„ã§ã™ã・・・。(^^;) ã‚‚ã†å°‘ã—ã“ã†ã„ã£ãŸçŸ¥è˜ãŒã‚れã°ã†ã¾ã説明ã§ãã‚‹ã®ã§ã™ãŒã€‚
è¦ã¯ã§ã‚€ã•ã‚“ã®è¨€ã†é€šã‚Šé–‹ç™ºç’°å¢ƒã«é–¢ã™ã‚‹å†…容ã ã¨æ€ã„ã¾ã™ã€‚
ドåˆå¿ƒè€…様
ã”質å•ã®æ„味をå–りé•ãˆã¦ã„ã‚‹ã‹ã‚‚ã—れãªã„ã®ã§ç¢ºèªã•ã›ã¦ãã ã•ã„。 自分自身ã§ä½œæˆã™ã‚‹æ–¹æ³•ã¨ã„ã†ã®ã¯ã€ã‚³ãƒ³ãƒ‘イラーã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®ä½¿ã„æ–¹ãªã©ã®é–‹ç™ºç’°å¢ƒã«é–¢ã™ã‚‹ã“ã¨ã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€ã•ã‚“ã€ã”è§£ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
>>ã•ã¦ã€ã”è‡ªåˆ†ã§æ–°ã—ãプãƒã‚°ãƒ©ãƒ を作æˆã•ã‚Œã‚‹å ´åˆã€ã‚ˆãã‚ã‹ã‚‰ãªã„ã†ã¡ã¯ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ をベースã«ä½œæˆã•れる方ãŒåŠ¹çŽ‡ã¦ãã§ã™ã€‚
ã¯ã„ã€ç¢ºã‹ã«ãれãŒä¸€ç•ªæ‰‹ã£å–ã‚Šæ—©ã„æ–¹æ³•ã ã¨æ€ã„ã¾ã™ã€‚ ã—ã‹ã—ã€ã“れã‹ã‚‰è‡ªåˆ†è‡ªèº«ã§ã‚‚自作ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’ã„ã‚ã„ã‚作æˆã—ã¦ã„ããŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã®ã§ã€ãŠæ‰‹æ•°ã§ã™ãŒæ•™ãˆã¦ã„ãŸã ã‘ãªã„ã§ã—ょã†ã‹ã€‚申ã—訳ã”ã–ã„ã¾ã›ã‚“。
>>ãªãŠã€ãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®è§£ç”例(プãƒã‚°ãƒ©ãƒ )を公開ã™ã‚‹äºˆå®šã¯ã‚りã¾ã›ã‚“。基本的ãªè€ƒãˆæ–¹ã‚„サンプルプãƒã‚°ãƒ©ãƒ を本文ä¸ã§èª¬æ˜Žã—ã¦ã„ã‚‹ã®ã§ã€ãれを元ã«è‡ªåˆ†ã§è€ƒãˆã¦ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚¹ã‚ルã®å‘上を図るã“ã¨ãŒãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®ç›®çš„ã§ã™ã€‚æ£è§£ã¯ï¼‘ã¤ã§ã¯ãªã„ã®ã§ã€è§£ç”例を掲載ã™ã‚‹ã“ã¨ã¯èªè€…ã®è‡ªç”±ãªç™ºæƒ³ã‚„コーディングを妨ã’ã‚‹ã“ã¨ã«æˆã‚Šã‹ããªã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
ãã†ã‚†ã†ã“ã¨ã§ã—ãŸã‹ã€ç†è§£ã„ãŸã—ã¾ã—ãŸã€‚
æ‹™è‘—ã‚’è³¼å…¥é ‚ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ ã“ã®æœ¬ã¯åˆå¿ƒè€…ã‚’å¯¾è±¡ã«æ›¸ã„ãŸã‚‚ã®ãªã®ã§ã€ã‚ã‹ã‚‰ãªã„箇所ãŒã‚れã°è³ªå•ã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚
ã•ã¦ã€ã”è‡ªåˆ†ã§æ–°ã—ãプãƒã‚°ãƒ©ãƒ を作æˆã•ã‚Œã‚‹å ´åˆã€ã‚ˆãã‚ã‹ã‚‰ãªã„ã†ã¡ã¯ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ をベースã«ä½œæˆã•れる方ãŒåŠ¹çŽ‡ã¦ãã§ã™ã€‚例ãˆã°ã€è›‡ãƒãƒœãƒƒãƒˆã‚’ä½œã‚‹å ´åˆã¯ã€P24 プãƒã‚°ãƒ©ãƒ 1.3 monoBot.cppã®ï¼‘本脚ã«ã€å††æŸ±ã‚’ヒンジジョイントã§çµåˆã—ã¦ã„ã‘ã°æ¯”較的簡å˜ã«ä½œã‚‹ã“ã¨ãŒã§ãã‚‹ã¨æ€ã„ã¾ã™ã€‚
ãªãŠã€ãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®è§£ç”例(プãƒã‚°ãƒ©ãƒ )を公開ã™ã‚‹äºˆå®šã¯ã‚りã¾ã›ã‚“。基本的ãªè€ƒãˆæ–¹ã‚„サンプルプãƒã‚°ãƒ©ãƒ を本文ä¸ã§èª¬æ˜Žã—ã¦ã„ã‚‹ã®ã§ã€ãれを元ã«è‡ªåˆ†ã§è€ƒãˆã¦ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚¹ã‚ルã®å‘上を図るã“ã¨ãŒãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®ç›®çš„ã§ã™ã€‚æ£è§£ã¯ï¼‘ã¤ã§ã¯ãªã„ã®ã§ã€è§£ç”例を掲載ã™ã‚‹ã“ã¨ã¯èªè€…ã®è‡ªç”±ãªç™ºæƒ³ã‚„コーディングを妨ã’ã‚‹ã“ã¨ã«æˆã‚Šã‹ããªã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
Microsoftã®é–‹ç™ºç’°å¢ƒã‚’使ã£ãŸã“ã¨ãŒãªã„ã®ã§ã€ç§ã«ã¯ã‚ã‹ã‚Šã¾ã›ã‚“。ã”ã‚ã‚“ãªã•ã„。
ã©ãªãŸã‹ã€ã”è¦ªåˆ‡ãªæ–¹ãŒå›žç”ã—ã¦ãã ã•れã°è‰¯ã„ã®ã§ã™ãŒï¼Žï¼Žï¼Ž
ã“ã‚“ã«ã¡ã‚ã€ãƒ‰åˆå¿ƒè€…ã¨ç”³ã—ã¾ã™ã€‚ 本を購入ã—ãƒãƒœãƒƒãƒˆã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®å¦ç¿’ã‚’ã—ã¦ãŠã‚Šã¾ã™ã€‚
今ç¾åœ¨ã€Pï¼’ï¼—ã¾ã§å¦ç¿’ã—ã¾ã—ãŸã€‚ãã“ã§ã„ãã¤ã‹ã‚ã‹ã‚‰ãªã„ã“ã¨ãŒã‚ã£ãŸã®ã§è³ªå•ã—ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ã€‚
1.6ã®ãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’å–り組んã§ã„ã‚‹ã®ã§ã™ãŒã€ä»Šã¾ã§ã¯ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã‹ã‚‰ãƒ—ãƒã‚°ãƒ©ãƒ をダウンãƒãƒ¼ãƒ‰ã—コンパイルã—ã¦å®Ÿè¡Œã—ã¦ã„ãŸã®ã§ã™ãŒã€ã¾ã£ãŸãæ–°ã—ã„プãƒã‚°ãƒ©ãƒ (プãƒãƒ—ãƒï¼‘.1蛇ãƒãƒœãƒƒãƒˆï¼‰ã‚’ç«‹ã¡ä¸Šã’ã‚‹ã«ã¯ã©ã†ã—ãŸã‚‰ã‚ˆã‚ã—ã„ã§ã—ょã†ã‹ã€‚
ã¾ãŸã€ãƒ—ãƒãƒ—ãƒã®è§£ç”ãªã©è¼‰ã›ã¦ã„ãŸã ã‘ã¾ã›ã‚“ã§ã—ょã†ã‹ã€‚(ã™ã”ã„æ°—ã«ãªã£ã¦å…ˆã«é€²ã‚ã¾ã›ã‚“苦笑)
本当ã«ç´ 人ã§ç”³ã—訳ã”ã–ã„ã¾ã›ã‚“
åˆã‚ã¾ã—ã¦ã€€å¤§å’Œã¨ã„ã„ã¾ã™ã€‚ ãƒãƒœãƒƒãƒˆã‚·ãƒ¥ãƒŸãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®æœ¬ã‚’å‚考ã«ODEã«ãƒãƒ£ãƒ¬ãƒ³ã‚¸ã—ã¦ã„ã‚‹ã®ã§ã™ãŒ ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã¯æˆåŠŸã™ã‚‹ã®ã«å®Ÿè¡Œã™ã‚‹ã¨ä»¥ä¸‹ã®ã‚ˆã†ãªã‚¨ãƒ©ãƒ¼ã§å®Ÿè¡ŒãŒã†ã¾ãã„ãã¾ã›ã‚“。
アセンブリ ‘odetest, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ ã‹ã‚‰åž‹ ‘dxWorld’ ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“。
ã‚‚ã—ã‹ã—ã¦ã€€ODEã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«è‡ªä½“ãŒã†ã¾ãã„ã£ã¦ã„ãªã„ã‚“ã§ã—ょã†ã‹ï¼Ÿ 開発環境ã¯Visual Studio.Net 2003 を使ã£ã¦ã„ã¾ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã§ã‚€ã•ã‚“ 早速ã®ã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
解決ã—ã¾ã—ãŸã€‚ ODEã®ã‚µãƒ³ãƒ—ルã«ä¼¼ãŸã‚ˆã†ãªä¾‹ãŒã‚ã‚‹ã®ã‚’見è½ã¨ã—ã¦ã„ã¾ã—ãŸã€‚
「ã‚る一定以上ã®åŠ›ãŒåŠ ã‚ã£ãŸã¨ãã«ã€å›ºå®šã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’無効化ã™ã‚‹ã€ ã®ã‚’実ç¾ã™ã‚‹ãŸã‚ã€dJointDestroyを使ã£ã¦å¤±æ•—ã—ã¦ã„ã¾ã—ãŸãŒã€ dJointAttach(Joint, 0, 0)ã¨ã™ã‚‹ã“ã¨ã§ã€ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’無効化ã™ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸã€‚ ã‚‚ã†ä¸€åº¦dJointAttach(Joint, body1,body2 )を使ã†ã“ã¨ã§ã€ç„¡åŠ¹åŒ–ã—ãŸã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’復活ã•ã›ã‚‹ã“ã¨ã‚‚ã§ãã¾ã—ãŸã€‚
今回ジオメトリã®ã‚¯ãƒ©ã‚¹ã¯ç”¨ã„ã¾ã›ã‚“ã§ã—ãŸãŒã€ä¾¿åˆ©ãã†ãªã®ã§ä½¿ã£ã¦ã¿ã‚ˆã†ã¨æ€ã£ã¦ã„ã¾ã™ã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
Beganã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ã•ã¦ã€ï¼’ã¤ã®ãƒœãƒ‡ã‚£ã‚’1ã¤ã®è¤‡åˆãƒœãƒ‡ã‚£ã¨ã—æ‰±ã†æ–¹æ³•ã¯ã€http://www.ode.org/ode-latest-userguide.html ã®10.7.7 Geometry Transform Classを使ã„ã¾ã™ã€‚
æ£ç¢ºã«ã¯ï¼’ã¤ã®ãƒœãƒ‡ã‚£ã‚’1ã¤ã®è¤‡åˆãƒœãƒ‡ã‚£ã§ã¯ãªãã€ï¼’ã¤ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’1ã¤ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ã§ã‚‚ã€å½¢çŠ¶ã‚’ç¶æŒã—ã¾ã™ã®ã§ãƒãƒ©ãƒãƒ©ã«ã¯ãªã‚Šã¾ã›ã‚“。ODEã«ä»˜å±žã—ã¦ã„るテストプãƒã‚°ãƒ©ãƒ test_boxstack.cppã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’èªã‚€ã¨ä½¿ã„æ–¹ãŒã‚ã‹ã‚Šã¾ã™ã€‚ODE本ã§ã¯è¤‡é›‘ã«ãªã‚Šé›£ã—ããªã‚‹ã®ã§èª¬æ˜Žã—ã¦ã„ã¾ã›ã‚“。
Beganã•ã‚“ã®ã‚ˆã†ãªã‚¢ãƒ—リケーションを作ã£ãŸã“ã¨ãŒãªã„ã®ã§è©¦ã—ãŸã¯ã‚りã¾ã›ã‚“ãŒã€fixedジョイントã§ã§ãるよã†ãªæ°—ãŒã—ã¾ã™ã€‚ERPã‚„CFMã®å€¤ã‚’変更ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ãŒæ¶ˆãˆã‚‹ã®ã§ã¯ãªã„ã‹ã¨æ€ã„ã¾ã™ã€‚ãれã§ã„ã‚ã„ã‚試ã—ã¦ã‹ã‚‰Transform Classを試ã—ã¦ã¿ã‚‹ã¨æ™‚é–“ã®ç¯€ç´„ã«ãªã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
ã¯ã˜ã‚ã¾ã—ã¦ã€‚ ODE本を使ã£ã¦ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®å‹‰å¼·ã‚’ã—ã¦ã„ã¾ã™ã€‚ ã¨ã¦ã‚‚å‚考ã«ãªã‚Šã€ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®è£½ä½œãŒã•ãã•ã進ã¿ã¾ã™ã€‚ ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
質å•ã§ã™ã€‚ p90㫠「2ã¤ã®ãƒœãƒ‡ã‚£ã‚’固定ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã¯ã€ãれを1ã¤ã®è¤‡åˆãƒœãƒ‡ã‚£ã¨ã™ã‚‹æ–¹æ³•ãŒè‰¯ã„〠ã¨ã„ã†è¨˜è¿°ãŒã‚りã¾ã™ã€‚ ODE本ã§ã¯è§¦ã‚Œã‚‰ã‚Œã¦ã„ãªã„ã®ã§ã™ãŒã€å…·ä½“çš„ã«ã¯ã©ã®ã‚ˆã†ãªé–¢æ•°ã‚’使ãˆã°è‰¯ã„ã®ã§ã—ょã†ã‹ã€‚
実ç¾ã—ãŸã„機能ã¯ã€ã¯ã˜ã‚ã¯å›ºå®šã•れã¦ã„ãŸ2物体ãŒã€ã‚る一定以上ã®åŠ›ãŒåŠ ã‚ã‚‹ã¨ãƒãƒ©ãƒãƒ©ã«ãªã‚‹ã€ã¨ã„ã†ã‚‚ã®ã§ã™ã€‚ dBodyDisableãªã©ã‚’組ã¿åˆã‚ã›ã‚Œã°æ¨¡æ“¬çš„ã«å®Ÿç¾ã§ããã†ã§ã™ãŒã€ ä»Šå¾Œã®æ‹¡å¼µæ€§ã‚’考ãˆã¦ã€2ã¤ã®ãƒœãƒ‡ã‚£ã‚’固定ã™ã‚‹æ–¹æ³•を勉強ã—ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
以下ã®ã‚ˆã†ãªã“ã¨ã‚’試ã—ã¾ã—ãŸãŒã€ã†ã¾ãã„ãã¾ã›ã‚“ã§ã—ãŸã€‚ 固定ジョイントを作ã£ã¦ãŠã„ã¦ã€ã‚る一定以上ã®åŠ›ã§dJointDestroyã§ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’ç ´å£Šã™ã‚‹ã€‚ ã—ã‹ã—実行ã™ã‚‹ã¨ã€dJointDestroyã®ã¨ã“ã‚ã§ã€ 「å•題ãŒç™ºç”Ÿã—ãŸãŸã‚〖.exeを終了ã—ã¾ã™ã€‚ã”ä¸ä¾¿ã‚’ãŠã‹ã‘ã—ã¦ç”³ã—訳ã‚りã¾ã›ã‚“。〠ã¨ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¦çµ‚了ã•れã¦ã—ã¾ã„ã¾ã—ãŸã€‚ ãã“ã§å›ºå®šã‚¸ãƒ§ã‚¤ãƒ³ãƒˆä»¥å¤–ã§ã®æ–¹æ³•ã§ä½œã£ã¦ã¿ã‚ˆã†ã¨è€ƒãˆãŸæ¬¡ç¬¬ã§ã™ã€‚
ã©ã®ã‚ˆã†ãªé–¢æ•°ã‚’使ãˆã°ã‚ˆã„ã‹ã•ãˆã‚ã‹ã‚Œã°ã€ã‚ã¨ã¯è‡ªåˆ†ã§æ¤œç´¢ã‚‚ã§ãã‚‹ã¨æ€ã„ã¾ã™ã®ã§ã€ ç°¡å˜ã§ã‚ˆã„ã®ã§ã”解説ã„ãŸã ã‘ãªã„ã§ã—ょã†ã‹ã€‚ よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
Jagurã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦
ã•ã¦ã€å˜æŒ¯å‹•や楕円振動を実ç¾ã™ã‚‹APIã¯ã‚りã¾ã›ã‚“ã®ã§ã€è‡ªåˆ†ã§ä½œã‚‹ã—ã‹ã‚りã¾ã›ã‚“ã。
直線上ã«é‹å‹•ãŒæ‹˜æŸã•れる振動ã®å ´åˆã¯ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’使ãˆã‚‹ã¨æ€ã„ã¾ã™ã€‚変ä½é‡ã«å¿œã˜ã¦ã€å¿…è¦ãªå‘¨æœŸã‚„振幅ã«ãªã‚‹ã‚ˆã†ã«å‰›ä½“ã«åŠ›ã‚’åŠ ãˆã‚Œã°å®Ÿç¾ã§ãã‚‹ã®ã§ã¯ãªã„ã§ã—ょã†ã‹ã€‚
ã¯ã˜ã‚ã¾ã—㦠最近ODEを使ã„å§‹ã‚〠ãƒãƒœãƒƒãƒˆã‚·ãƒ¥ãƒŸãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®æœ¬ã‚‚購入㗠ã“ã®ã‚µã‚¤ãƒˆã‚‚よãå‚考ã«ã•ã›ã¦ã„ãŸã ã„ã¦ãŠã‚Šã¾ã™ã€‚
ãã“ã§è³ªå•ãªã®ã§ã™ãŒ 物体をãã®å ´ã§æŒ¯å‹•ã•ã›ã‚‹ã«ã¯ã©ã®ã‚ˆã†ã«ã™ã‚Œã°ã‚ˆã„ã®ã§ã—ょã†ã‹ï¼Ÿ 実ç¾ã—ãŸã„振動ã¨ã—ã¦ã¯ ï¼‘ï¼Žç›´ç·šçš„ãªæŒ¯å‹• 2.楕円振動 ç‰ã§ã€ã¤ã¾ã‚Šãã®å ´ã§ä¸€å®šã®å‹•ãã‚’ã—ç¶šã‘るよã†ãªã‚‚ã®ã§ã™ã€‚ æŒ¯å‹•æ•°ã‚„ã€æŒ¯å¹…ã®ãƒ‘ラメーターをæŒã¦ã‚‹ã¨ã„ã„ã®ã§ã™ãŒã€‚ ãã®æ§˜ãªé–¢æ•°ãŒã‚ã‚‹ã¨ã‚ˆã„ã®ã§ã™ãŒã€‚ サンプルプãƒã‚°ãƒ©ãƒ ç‰ãŒã‚りã¾ã—ãŸã‚‰å¹¸ã„ã§ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
ODE2joyã•ん,
大ããªãƒãƒªã‚´ãƒ³ã‚’ODEã§æ‰±ã£ãŸã“ã¨ãŒãªã„ã®ã§ã‚ã‹ã‚Šã¾ã›ã‚“.本家ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã§ãŠèžãã«ãªã‚‰ã‚Œã‚Œã°è‰¯ã„ã¨ã‹ã¨æ€ã„ã¾ã™ï¼Ž
Demuraã•ã¾
ä¸å¯§ãªè§£èª¬ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚ ã¾ãŸä½•ã‹ã‚りã¾ã—ãŸã‚‰ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ODEã®æŽ¥è§¦è§£æžæ©Ÿèƒ½ã«èˆˆå‘³ãŒã‚ã£ã¦ã€ODE0.8ã«å«ã¾ã‚Œã¦ã„ãŸã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ (test_moving_trimesh.cpp)ã®ã‚’触ã£ã¦ã¿ãŸã®ã§ã™ãŒã€å·¨å¤§ãªtrimeshを表示ã—よã†ã¨ã€ä¸‹è¨˜å¤‰æ•°ã‚’大ãã‚ã«ã¨ã‚‹ã¨ãƒ—ãƒã‚°ãƒ©ãƒ ã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒæ‚ªããªã‚Šã¾ã™ã€‚ static float Vertices[NUM_VERTEX*3]; static int Indices[NUM_POLYGON][3];
20万ãƒãƒªã‚´ãƒ³vs20万ãƒãƒªã‚´ãƒ³ã®æŽ¥è§¦ã‚’やりãŸã„ã®ã§ã™ãŒã€é›£ã—ãã†ã§ã—ょã†ã‹ã€‚
Takã•ã‚“ã€
dWorldSetERP()ãŠã‚ˆã³dWorldSetCFM()を変更ã™ã‚‹ã¨ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ä¸ã®å…¨ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã«åйã„ã¦ãã¾ã™ã€‚nearCallback()ã®ä¸ã® contact[i].surface.soft_erpãŠã‚ˆã³contact[i].surface.soft_cfmを変更ã™ã‚‹ã¨æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã ã‘ã«åйã„ã¦ãã¾ã™ã€‚Takã•ã‚“ã®å ´åˆã¯ã€å¾Œè€…を変更ã™ã‚Œã°è‰¯ã„ã¨æ€ã‚れã¾ã™ã€‚
ãªãŠã€å€ç²¾åº¦ã§ODEをインストールã—ãŸå ´åˆCFMã®ãƒ‡ãƒ•ォルト値ãŒ1e-10ãªã®ã§ã€CFMã‚’è¨å®šã—ãªã„ã¨ãã®å€¤ã«ãªã‚Šã¾ã™ã€‚CFM=1/(h Kp + kd)ã€ã“ã“ã§hã¯ã‚¹ãƒ†ãƒƒãƒ—サイズã€kpã¯ãƒãƒå®šæ•°ã€kdã¯ãƒ€ãƒ³ãƒ‘定数ãªã®ã§hãŒå分å°ã•ã„å ´åˆã€CFMã¯ãƒ€ãƒ³ãƒ‘定数ã®é€†æ•°ã«ãªã‚Šã¾ã™ã€‚ã¤ã¾ã‚Šã€CFMã‚’å°ã•ãã™ã‚‹ã“ã¨ã¯ãƒ€ãƒ³ãƒ‘定数ãŒå¤§ãããªã‚‹ã®ã§ã€æŒ¯å‹•を抑ãˆã‚‹ã“ã¨ãŒã§ããŸã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
ã¾ãŸã€ERPã¨CFMã®å€¤ã‚’変更ã—ã¦ã‚‚計算時間ã«ã¯ã•ã»ã©å½±éŸ¿ã‚’与ãˆã¾ã›ã‚“。一般的ã«ã¯ã€CFMを大ããã™ã‚‹ã¨ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ã®å®‰å®šæ€§ãŒå‘上ã—ã¾ã™ã€‚ODEã®å†…部エラーãŒå‡ºã‚‹ã¨ãã¯ãã®å€¤ã‚’大ããã™ã‚‹ã¨å›žé¿ã§ãã‚‹å ´åˆãŒã‚りã¾ã™ã€‚
demuraã•ã¾
takã§ã™ã€‚出張ä¸ã«ã‚ã–ã‚ã–ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ 指摘ã®é€šã‚Šä»¥ä¸‹ã‚’é †ã«è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚
1. Stepsizeã‚’å°ã•ãã™ã‚‹ã€‚  Stepsizeã‚’0.005 -> 0.001ã¸å¤‰æ›´ã—ã¦ã¿ãŸã®ã§ã™ãŒã€é€²è¡Œé€Ÿåº¦ãŒ1/5ã«ãªã£ãŸåˆ†ã€æ»‘りã®ã‚¹ãƒ”ードも1/5ã«ãªã£ãŸã¨ã„ã†å°è±¡ã§ã—ãŸã®ã§ã€å…ƒã«æˆ»ã—ã¾ã—ãŸã€‚
2. ERPã®å€¤ã‚’å°ã•ãã™ã‚‹ã€‚  0.8 -> 0.2ã‚ãŸã‚Šã¾ã§å°ã•ãã—ã¦ã¿ã¾ã—ãŸãŒå¤‰åŒ–ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚
3. CFMã®å€¤ã‚’大ããã™ã‚‹ã€‚  「å°ã•ãã™ã‚‹ã€ã¨èªã¿é•ãˆã¦10e-4 -> 10e^-10ã¨ã—ã¦ã¿ãŸæ‰€ã€æ»‘りç¾è±¡ãŒè§£æ±ºã—ã¾ã—ãŸã€‚
ï¼’ã¨ï¼“ã§ã™ãŒã€ã‚°ãƒãƒ¼ãƒãƒ«ãªå€¤ã®æ–¹ï¼ˆdWorldSetERP()ãŠã‚ˆã³dWorldSetCFM())を変更ã—ãŸã®ã§ã™ãŒã€ã“れã¯nearCallback()ã®ä¸ã®contact[i].surface.soft_erpãŠã‚ˆã³contact[i].surface.soft_cfmを変更ã™ã‚‹ã®ã¨ã©ã†é•ã†ã®ã§ã—ょã†ã‹ï¼Ÿç§ã®è§£é‡ˆã§ã¯ã€åŸºæœ¬ã¯ã‚°ãƒãƒ¼ãƒãƒ«ã®å€¤ã«å¾“ã†ãŒã€ç‰¹å®šã®ã‚ªãƒ–ジェクトåŒå£«ã®ã¨ãã®ã¿å¤‰æ›´ã—ãŸã„ã¨ãã«å¾Œè€…を用ã„ã¦å€‹åˆ¥ã«ä¸Žãˆã‚‹ã¨æ€ã£ã¦ã„ãŸã®ã§ã™ãŒé–“é•ã„ãªã®ã§ã—ょã†ã‹ï¼Ÿ
別ã®è©±ã«ãªã‚Šã¾ã™ãŒã€ï¼‘ã¯å°ã•ãã™ã‚Œã°ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®è² æ‹…ãŒå¤§ãããªã‚Šã¾ã™ãŒã€ï¼’ã€ï¼“ã®å€¤ã¯ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®è² è·ã«å¤§ãã影響ã—ã¦ãã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
ç¾åœ¨ã€æœå¹Œå‡ºå¼µä¸ã§ã™ã€‚æœ¬å ´ã®ã‚¸ãƒ³ã‚®ã‚¹ã‚«ãƒ³ã¯ãŠã„ã—ã„ã§ã™ã€‚
ã•ã¦ã€ODEã§ã¯å„ステップã§è¡çªæ¤œå‡ºã®è¨ˆç®—ã‚’ã—ã€æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®ä½ç½®ã‚’ä¿®æ£ã—ã¦ã„ã‚‹ã®ã§ã€Stepsizeã®å¤§ãã•ã‚„ERPã®å€¤ã«ã‚ˆã‚Šå¾®å°æŒ¯å‹•ã™ã‚‹ã‚±ãƒ¼ã‚¹ãŒã‚りã¾ã™ã€‚StepsizeãŒå¤§ãã„ã¨ç‰©ä½“ãŒåœ°é¢ã«ã‚り込ã¿ã€ERPãŒå¤§ãã„ã¨ãã®ä¿®æ£é‡ãŒå¤§ãã„ã®æŒ¯å‹•ãŒå¤§ãããªã‚Šã¾ã™ã€‚ä»¥ä¸‹ã‚’é †ç•ªã«è©¦ã—ã¦ã¿ã¦ãã ã•ã„。
1. Stepsizeã‚’å°ã•ãã™ã‚‹ã€‚ 2. ERPã®å€¤ã‚’å°ã•ãã™ã‚‹ã€‚ 3. CFMã®å€¤ã‚’大ããã™ã‚‹ã€‚
ãªãŠã€ERPã¨CFMã§ãƒãƒãƒ»ãƒ€ãƒ³ãƒ‘システムをシミュレーションã§ãã¾ã™ã€‚詳ã—ãã¯ODE本をã”覧ãã ã•ã„。
上記ã§ç—‡çŠ¶ãŒæ”¹å–„ã—ãªã„å ´åˆã¯ä»¥ä¸‹ã®APIを利用ã—ã¦ãã ã•ã„。 void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel); void dWorldSetContactSurfaceLayer (dWorldID, dReal depth);
ç—‡çŠ¶ãŒæ”¹å–„ã—ãŸã‚‰ã€ã©ã®ãƒ‘ラメータをã©ã†å¤‰ãˆãŸã‚‰ã†ã¾ãã„ã£ãŸã‹é€£çµ¡é ‚ã‘れã°ã‚りãŒãŸã„ã§ã™ã€‚
takã¨ç”³ã—ã¾ã™ã€‚以å‰ã€Macã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã§ãŠä¸–話ã«ãªã£ãŸè€…ã§ã™ã€‚
今ã¾ã§ã»ã¨ã‚“ã©æç”»ã•ã›ãšã«ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’行ã£ã¦ãŠã‚Šã¾ã—ã¦ã€æœ€è¿‘確èªã®ãŸã‚ã«æç”»ã•ã›ã¦ã¿ã¦æ°—ã¥ã„ãŸã®ã§ã™ãŒã€ä½•ã®åŠ›ã‚‚åƒã„ã¦ã„ãªã„地é¢ã«é™æ¢ã—ã¦ã„る物体ãŒå¾®å¦™ã«æ»‘ã£ã¦å‹•ã„ã¦ã„るよã†ãªã®ã§ã™ã€‚摩擦係数をInfinityã«ã—ã¦ã‚‚症状ã¯å¤‰ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚何ã‹è¨å®šã—ãªã‘れã°ã„ã‘ãªã„ã®ã§ã—ょã†ã‹ï¼Ÿ ã‚ã‚‹ã„ã¯åœ°é¢ã¨å›ºå®šã™ã‚‹ãŸã‚ã®è¨å®šæ–¹æ³•ã¿ãŸã„ãªã‚‚ã®ãŒã‚ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
Mommaã•ん,
よãã‚る質å•ã®ã€ŒA.6 Visual C++ Express Editionã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹æ–¹æ³•ã‚’æ•™ãˆã¦ãã ã•ã„.ã€ã«ãƒªãƒ³ã‚¯ã‚’ã¯ã‚Šã¾ã—ãŸï¼Ž
ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼Ž
コメントã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼ ã”æŒ‡æ‘˜ã®ç®‡æ‰€ã€å¤‰æ›´ã—ã¾ã—ãŸã€‚ ã¾ãŸã€ç’°å¢ƒæ§‹ç¯‰ã«ã¤ã„ã¦ã‚‚ãƒˆãƒ”ãƒƒã‚¯ã«æŽ²è¼‰ã—ã¦ã¾ã™ã®ã§ã€å®œã—ã‹ã£ãŸã‚‰ãƒªãƒ³ã‚¯ã‚’å¼µã£ã¦ã„ãŸã ã‘れã°ã¨æ€ã„ã¾ã™ã€‚
Mommaã•ã¾ï¼Œ
æ‹è¦‹ã—ã¾ã—ãŸï¼Žé¢ç™½ãã†ã§ã™ã.ãŠç›†ã®ä¸ã‚’è¿·è·¯ã«ã—ã¦å³æ‰‹æ³•ã§è§£ã‘ã°è‡ªå‹•çš„ã«å‡ºå£ã«è¡Œã‘ãã†ã§ã™ï¼Ž
Visual C++ã‚’ãŠä½¿ã„ã¨ã®ã“ã¨ãªã®ã§ï¼Œç’°å¢ƒè¨å®šãªã©ã‚’書ã„ã¦é ‚ã‘れã°ç§ã®FAQã‹ã‚‰ãƒªãƒ³ã‚¯ã‚’ã¯ã‚Šã¾ã™ï¼Žå¤šãã®æ–¹ã®å‚考ã«ãªã‚‹ã¨æ€ã„ã¾ã™ï¼Žç§ã¯Visual C++ã¯ä½¿ã£ãŸã“ã¨ãŒãªã„ã®ã§ã‚ã‹ã‚Šã¾ã›ã‚“.
ã¾ãŸï¼Œãƒªãƒ³ã‚¯ã‚’ã¯ã£ã¦é ‚ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼Ždemura.netã¯å€‹äººçš„ãªã‚µã‚¤ãƒˆãªã®ã§å‡ºæ‘教授ã§ã¯ãªã「出æ‘ã•ã‚“ã€ã¾ãŸã¯ã€Œã§ã‚€ã•ã‚“ã€ãらã„ã«ã—ã¦é ‚ã‘ã‚‹ã¨ã‚りãŒãŸã„ã§ã™ï¼Ž
公開許å¯ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ ODEã«é–¢ã—ã¦ã¯æ‰‹æŽ¢ã‚Šã®çŠ¶æ…‹ã§ã€ODE本を片手ã«1ã¤ä½œæˆã§ããŸã¨ã“ã‚ã§ã™ã€‚ ãŠç›†ã®ä¸èº«ã‚’è¿·è·¯ã«ã—ã¦ã‚‚é¢ç™½ã„ã‹ãªã¨æ€ã£ã¦ã„ã¾ã™ã€‚
æ‹™ã®Webã¯URL欄ã«è¨˜è¼‰è‡´ã—ã¾ã—ãŸã€‚ ソースã¯è§£èª¬ã‚’å«ã‚ã¦å¾ã€…ã«è¨˜è¼‰ã—ã¦ã„ã予定ã§ã™ã€‚ 開発ã¯Visual C++ 2005 EEã¨Ubuntuã§è¡Œãªã£ã¦ã„ã¾ã™ã®ã§ã€å‚™å¿˜éŒ²ã‚’å…¼ãã¦ç’°å¢ƒæ§‹ç¯‰ã‚’掲載ã—ã¦ã„ã¾ã™ã€‚
是éžã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’公開ã—ã¦ãã ã•ã„.楽ã—ã¿ã«ã—ã¦ã„ã¾ã™ï¼Ž URLã‚’æ•™ãˆã¦ãã ã•ã„.
ã¾ãŸï¼Œdemura.netã¸ãƒªãƒ³ã‚¯ã‚’ã¯ã£ã¦é ‚ã‘ã‚‹ã¨ã‚りãŒãŸã„ã§ã™ï¼ŽODEを盛り上ã’ã¦ã„ãã¾ã—ょã†ï¼Ž
ã§ã¯
Lynã•ã‚“
ãŠå½¹ã«ç«‹ã¦ã¦è‰¯ã‹ã£ãŸã§ã™ï¼Ž 今後ã¨ã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã¯ã˜ã‚ã¾ã—ã¦ã€‚ ODE本をå‚è€ƒã«æ¥½ã—ã¾ã›ã¦é ‚ã„ã¦ã„ã¾ã™ã€‚ AMotorã®ã‚½ãƒ¼ã‚¹ã‚’å…ƒã«ã€è¡çªåˆ¤å®šç‰ã‚’è¿½åŠ ã—ã¦ã€ä¸Šã«ãŠç›†ã‚’載ã›ã¦çŽ‰ã‚’ã‚´ãƒã‚´ãƒè»¢ãŒã™éŠã³ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’作ã£ãŸã®ã§ã™ãŒã€æ”¹å¤‰ã—ãŸã‚½ãƒ¼ã‚¹ã®å…¬é–‹ã‚’ã—ã¦ã‚‚宜ã—ã„ã§ã—ょã†ã‹ã€‚ソースã®ã‚³ãƒ¡ãƒ³ãƒˆã‚„Webã§ã®è§£èª¬ã«è»¢ç”¨ã®æ—¨ã‚’記載ã™ã‚‹äºˆå®šã§ã™ã€‚
Demura ã•ん〠é©åˆ‡ãªã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚ æ•™ãˆã¦ã„ãŸã ã„ãŸãƒ†ã‚ストエディタã«ã‚ˆã‚Šhello.cppã®é‡åŠ›ã‚µã‚¤ãƒ³ã‚’å¤‰æ›´ã—上書ãä¿å˜ã—ãŸã¨ã“ã‚ upwardã«ãƒœãƒ¼ãƒ«ãŒè½ä¸‹(?) 出æ¥ã¾ã—ãŸã€‚ å†ç¾æ€§ã‚’確èªã™ã‚‹ãŸã‚NOTEPADã§å†åº¦ã‚³ãƒ³ãƒ‘イルã—ãŸã¨ã“ã‚å†ç¾ã—ã¾ã—ãŸã®ã§å‚考ã¾ã§ã« エラーメッセージを書ã„ã¦ãŠãã¾ã™ã€‚ $ make g++ -Wall -fno-exceptions -fno-rtti -g -DWIN32 -c hello.cpp -L../../drawstuff/src -L../../ode/src -L/usr/local/lib -I. -I../../include -I/usr/include hello.cpp:1: error: stray ‘\239′ in program hello.cpp:1: error: stray ‘\187′ in program hello.cpp:1: error: stray ‘\191′ in program make: *** [hello.o] Error 1
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼ ã“れã‹ã‚‰æœ€é©è»Œé“計画ã®ãƒ—ãƒã‚°ãƒ©ãƒ を作るã®ã§ã™ãŒã€é•·ã„é“ã®ã‚Šã«ãªã‚Šãã†ã§ã™ã€‚
Lynã•ん,
エラーメッセージを教ãˆã¦ãã ã•ã„. 全角ã®ç©ºç™½æ–‡å—ãŒå…¥ã£ãŸã‹ã‚‚ã—れã¾ã›ã‚“.全角文å—ãŒå…¥ã‚‹ã¨ã‚³ãƒ³ãƒ‘イルã«å¤±æ•—ã—ã¾ã™ï¼Ž
notepadã§ã¯ãªã,もã†å°‘ã—é«˜ã„æ©Ÿèƒ½ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚’ãŠä½¿ã„ã«ãªã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ï¼Ž ç§ã®æŽˆæ¥ã§ã¯ãƒ•リーソフトTeraPad (http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html) を使ã£ã¦ã„ã¾ã™ï¼Ž
TeraPadã‚’ãŠä½¿ã„ã«ãªã‚‰ã‚Œã‚‹å ´åˆã¯ï¼Œè¡¨ç¤º(V)→オプション→表示ã§å…¨è§’空白ã«ãƒã‚§ãƒƒã‚¯ã‚’ã„れ,全角文å—ã‚’å…¨ã¦è¡¨ç¤ºã™ã‚‹ã‚ˆã†è¨å®šã—ã¦ãã ã•ã„.
demuraã•ã‚“
åˆæ©è³ªå•ã§æç¸®ãªã®ã§ã™ãŒã€ã‚µãƒ³ãƒ—ルã§ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ãŸhello.cpp file ã®ã‚³ãƒ³ãƒ‘イル・実行ã¯å¯èƒ½ãªã®ã§ã™ãŒã€é‡åŠ›åŠ é€Ÿåº¦ã‚’notepadを使用㗠変更後(ex1.3)ã€Makeコマンドã§ã‚³ãƒ³ãƒ‘イルãŒå‡ºæ¥ã¾ã›ã‚“。 ã“れã¯ãƒ•リーソフトã«ã‚ˆã‚‹åˆ¶é™ãªã®ã§ã—ょã†ã‹ï¼Ÿ
Kogasakã•ã‚“ã€
ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ã€‚
Windows XP + MinGW + MSys環境ã§ã¯å¤šãã®å®Ÿç¸¾ãŒã‚りã€ä»Šã¾ã§æŽˆæ¥ã§50å程度ã®å¦ç”ŸãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã¾ã—ãŸãŒå•題ã¯ã»ã¨ã‚“ã©ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ãã®ãŸã‚ã€ä¸å…·åˆã‚’å ±å‘Šã•れるã¨ãŠæ‰‹ä¸Šã’状態ã«ãªã‚Šã¾ã™ã€‚
何らã‹ã®ç†ç”±ã§ã‚·ã‚¹ãƒ†ãƒ ãŒæ£å¸¸ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã‹ã£ãŸã€ç’°å¢ƒå¤‰æ•°ãŒä»–ã®ã‚½ãƒ•トウェアã¨ã¶ã¤ã‹ã£ã¦ã„ã‚‹ã€ã‚ã‚‹ã„ã¯ã‚¦ã‚¤ãƒ«ã‚¹ã«æ„ŸæŸ“ã—ã¦ã„ã‚‹ãªã©ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ãŒã€åŽŸå› ãŒã¯ã£ãりã—ã¾ã›ã‚“。ãã®å ´åˆã€kogasakã•ã‚“ã®ã‚ˆã†ã«ã‚·ã‚¹ãƒ†ãƒ リカãƒãƒªã™ã‚‹ã—ã‹ä»–ã«æ‰‹æ®µã¯ã‚りã¾ã›ã‚“。ãれãŒä¸€ç•ªæ™‚間を節約ã™ã‚‹æ–¹æ³•ãªã®ã‹ã‚‚ã—れã¾ã›ã‚“。
ã¾ãŸã€ä½•ã‹å•題ãŒã‚れã°ã‚³ãƒ¡ãƒ³ãƒˆã‚’ãã ã•ã„。
ã”ä¸å¯§ãªã”指導ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚ ãã®å¾Œã€ä¸€é€±é–“ã‚’ã‹ã‘ã¦ã€ãƒ‘ソコンユーザカウント新è¨å®šã€ã‚·ã‚¹ãƒ†ãƒ リカãƒãƒªã€å¸¸é§ãƒ—ãƒã‚°ãƒ©ãƒ åœæ¢ã€Lhaplusã®è¨å®šå¤‰æ›´ç‰è€ƒãˆã‚‰ã‚Œã‚‹æ‰‹ã‚’æ¬¡ã€…ã«æ‰“ã£ã¦ã¿ã¾ã—ãŸã€‚ (ã”å‚考ã«ã€ä½¿ç”¨ã‚·ã‚¹ãƒ†ãƒ ã¯ã€Microsoft Windows XP, Home Edition V. 2002ã€Service Pack 2ã§ã™ã€‚) ãã®çµæžœã€ä¸€éƒ¨æ‰‹é †æ›¸ã¨ç•°ãªã‚‹å¿œç”ãŒã‚ã‚‹ã‚‚ã®ã®ã€ä¸€å¿œä½œå‹•ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚ 何ãŒåŽŸå› ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ãるよã†ã«ãªã£ãŸã®ã‹ã€å¤šãã®ã“ã¨ã‚’やりã™ãŽã¦ã‚ˆãã‚ã‹ã‚‰ãªã„ã®ãŒæ®‹å¿µã§ã™ã€‚ ã„ãšã‚Œã«ã›ã‚ˆã“ã“ã¾ã§ã“れãŸã®ã¯ã€å¾¡åŠ©è¨€ã«åбã¾ã•れãŸã“ã¨ã«ã‚ˆã‚‹ã‚‚ã®ã¨æ„Ÿè¬ã—ã¦ãŠã‚Šã¾ã™ã€‚ 今後ã¨ã‚‚ã€ã‚ˆã‚ã—ããŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚ kogasak
ã§ã‚€ã§ã™ï¼Ž
Kogasakã•ã‚“ã‹ã‚‰ä»¥ä¸‹ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’é ‚ãã¾ã—ãŸï¼Ž 拙著をã”è³¼å…¥é ‚ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã•ã¦ï¼ŒODE講座2ã§ã¯ãªã,以下ã®URLã®æ‰‹é †ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ã—ã¦é ‚ã‘ã¾ã™ã‹ï¼Ÿ 授æ¥ã®éš›ï¼Œï¼’5å程度ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã¨ãã¯å•題ãªãã§ãã¾ã—ãŸï¼Ž http://demura.net/archives/9ode/odewindows-1.html
ãã®ã¨ã,mingwã¨msysã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯æŒ‡ç¤ºã®ã¨ãŠã‚Šã—ã¦ãã ã•ã„.新ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™ã¨å‹•ã‹ãªã„å ´åˆãŒã‚りã¾ã—ãŸï¼Ž
ã¾ãŸï¼Œcygwinã®ç’°å¢ƒã¨æ··åœ¨ã—ã¦ã„ãªã„ã§ã—ょã†ã‹ï¼Ÿ
ã¡ãªã¿ã«ç§ã®ç’°å¢ƒã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™ï¼Ž Windows XP Professional SP2 MinGW 5.1.0 MSYS 1.0.10
ã”é¢å€’ã§ã‚‚今一度,上ã®URLã®ã¨ãŠã‚Šä½œæ¥ã‚’ã—,cygwinã®ç’°å¢ƒã¨æ··åœ¨ã—ã¦ã„ã‚‹å ´åˆã¯ä¸€æ™‚çš„ã«c:\cygwinã®åå‰ã‚’c:\cygwin1ãªã©ã¨ã—,å‚考ã¾ã§ã«ç’°å¢ƒã‚’æ•™ãˆã¦ãã ã•ã„.
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ODEã®å…¥ã‚Šå£ã§ã¤ã¾ãšã„ã¦ã„ã¾ã™ã€‚ 出æ‘先生ã®â€™ãƒãƒœãƒƒãƒˆã‚·ãƒ¥ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³â€™ã‚’購入ã—ã€ï¼¯ï¼¤ï¼¥äºŒæŒ‘戦ã—よã†ã¨ã—ã¦ã„ã¾ã™ãŒã€ã“ã®10æ—¥ã»ã©ï¼ï½‰ï½Žï¼§ï¼·é–‹ç™ºç’°å¢ƒã‚’インストールã—よã†ã¨ã‚らゆる考ãˆã‚‰ã‚Œã‚‹æ‰‹ã‚’å°½ãã—ã¦ã„ã¾ã™ãŒæ¯ãŒç«‹ã¡ã¾ã›ã‚“。 OSã¯ã€WindowsXPã§ã™ã€‚ ODE講座2ã«ç¤ºã•れã¦ã„ã‚‹æ‰‹é †ã‚’å¿ å®ŸãŸã©ã£ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä½œæ¥ã‚’ã—ã¦ã„ã¾ã™ãŒã€makeã®æ®µéšŽã§æ¯Žå›žã‚¹ãƒˆãƒƒãƒ—ã—ã¾ã™ã€‚ ストップã®ãŸã³ã«ãƒ—ãƒã‚°ãƒ©ãƒ ã®å‰Šé™¤ãŠã‚ˆã³å¿…è¦ãƒ•ァイルã®å†ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã‹ã‚‰ã‚„り直ã—ã¦ã„ã¾ã™ãŒã€æ¯Žå›žmakeã®æ®µéšŽã§ã¤ãŽã®ã„ãšã‚Œã‹ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒã§ã¾ã™ã€‚  *** No rule to make target ‘../configure in’ needed by ‘Makefile.in’. Stop *** No targets specified and no makefile found. Stop
ode-src-0.8.zip ã®è§£å‡ã¯ï¼¬ï½ˆï½ï½ï½Œï½•sã®è¨å®šã‚’サブフォルダã¾ã§è§£å‡ã™ã‚‹ã‚ˆã†ã«ã—ã€ã¾ãŸã‚¦ã‚¤ãƒ«ã‚¹ã‚½ãƒ•ãƒˆã‚‚åœæ¢çŠ¶æ…‹ã«ã—ãŸã‚Šã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’トライã—ã¦ã„ã¾ã™ãŒå‰é€²ã—ã¾ã›ã‚“。 以上ã§ã™ãŒã€è§£æ±ºæ³•ã‚’ã”æŒ‡å°Žã„ãŸã ã‘ã¾ã›ã‚“ã§ã—ょã†ã‹ã€‚     kogasak
Partizansã•ん,
返事ãŒå¤§å¤‰é…ããªã‚Šã”ã‚ã‚“ãªã•ã„.ãƒãƒœã‚«ãƒƒãƒ—,å¦ä¼šï¼ŒODE本ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ç·¨é›†ä½œæ¥ã¨ã„ã‚ã„ã‚ã‚りã¾ã—ãŸï¼Ž
先週,講義ã§ã“ã®ã‚¦ã‚§ãƒ–ã‚µã‚¤ãƒˆã«æ›¸ã„ã¦ã‚ã‚‹ã¨ãŠã‚Šã«å¦ç”Ÿã«ã‚„ã£ã¦ã‚‚らã„ã¾ã—ãŸãŒï¼Œç´„3ï¼åã¨ã‚‚å•題ãªãインストールã§ãã¾ã—ãŸï¼ŽMinGW,MSYSãŒä½•らã‹ã®ç†ç”±ã§ã†ã¾ãインストールã•れãªã‹ã£ãŸã¨æ€ã‚れã¾ã™ãŒï¼Œå…¨ã¦å‰Šé™¤ã—,å†èµ·å‹•ã—ã¦ã‹ã‚‰å†åº¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚‚状態ãŒå¤‰ã‚らãªã„よã†ãªã‚‰é•ã†ç†ç”±ã‚‚考ãˆã‚Œã‚‰ã‚Œã¾ã™ï¼Ž
ã“れ以上ã¯ã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“.解決ã•れã¦ã„れã°ã‚ˆã„ã®ã§ã™ãŒï¼Ž
Partizansã•ã‚“ã€
解決ã§ãã‚‹ã‹ã§ãã‚‹ã‹ã©ã†ã‹ã‚ã‹ã‚Šã¾ã›ã‚“ãŒã€ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚講義ã§ã‚‚使ã£ã¦ã„ã¾ã™ãŒã€ã“ã®ã‚ˆã†ãªç—‡çжã¯åˆã‚ã¦ã§ã™ã€‚
ã•ã¦ã€ç§ã«ã¯mingwã«ãªã‚“らã‹ã®å•題ãŒã‚ã‚‹ã¨æ€ã‚れã¾ã™ã€‚ç§ã®ç’°å¢ƒã¯ã€Partizansã•ã‚“ã¨å…¨ãåŒã˜ã§ã™ã‹ã‚‰ã€‚
ãŠæ‰‹æ•°ã§ã™ãŒä»¥ä¸‹ã‚’試ã—ã¦é ‚ã‘ã¾ã™ã‹ï¼Ÿ 1. ç°¡å˜ãªC言語ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’mingw+msys環境ã§ã‚³ãƒ³ãƒ‘イルã§ãã‚‹ã‹ï¼Ÿ 2./bin/shã¯ã‚ã‚‹ã‹ï¼Ÿ 2.ode-0.8/config.logã‚’é€ã£ã¦ãã ã•ã„。 3.æ€ã„切ã£ã¦ã€mingwã¨msysを完全ã«å‰Šé™¤ã—ã€ã¾ãŸå…¥ã‚Œç›´ã™ã€‚Cドライブã®ç›´ä¸‹ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚
å¾¡è¿”äº‹ã‚’é ‚ã„ã¦ã‚‚ã€ãƒãƒœã‚«ãƒƒãƒ—ジャパンオープン直å‰ã§ã€ã¦ã‚“ã¦ã“舞ãªã®ã§å›žç”ãŒé…れるã‹ã‚‚ã—れã¾ã›ã‚“。ã”ã‚ã‚“ãªã•ã„。
ãŠä¸–話ã«ãªã‚Šã¾ã™ã€Partizansã§ã™ã€‚ ç§ã¯ãƒãƒœãƒƒãƒˆã®ãƒã®å—も知らãªã„ã—ã€ä»•事ã¨ã‚‚ã¾ã£ãŸã関係ãªã„ã§ã™ãŒã€ C言語ã§ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°å‡ºæ¥ã‚‹ãƒãƒœãƒƒãƒˆãŒã‚ã‚‹ã®ã‚’知りã€ãれを検索ã—ã¦ã„ãŸã¨ã“ã‚ODEã¨ã„ã†ã®ãŒã²ã£ã‹ã‹ã‚Šã¾ã—ãŸã€‚ã¨ã„ã†ã‹ã€è²´ã‚µã‚¤ãƒˆãŒè¦‹ã¤ã‹ã£ãŸè¨³ã§ã™ï¼¾ï¼¾ã€‚ODEã ã‘ã§ã¯ãªãã€MinGW+Msysã•ãˆåˆè€³ã§ã™ã€ã€ã€ï¼ï¼ï¼› ã§ã™ã®ã§ã€ä¸€é€£ã®ä½œæ¥ã¯ã€è²´ã‚µã‚¤ãƒˆã®ODEã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã‚’å‚ç…§ã—ã¾ã—ãŸã€‚ ä»¥ä¸‹ã®æ‰‹é †ã§ã™ã€‚ 1.MinGWã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« ã€€â‘ å ´æ‰€ï¼šD:/MinGW  ②Version:5.1.3 2.Msysã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« ã€€â‘ å ´æ‰€ï¼šD:/msys  ②Version:1.0 ã“ã“ã¾ã§ã¯æ£å¸¸ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸã¨æ€ã„ã¾ã™ï¼ˆMsysãŒæ£å¸¸ã«å‹•ã„ãŸã®ã§ï¼‰ã€‚最åˆã¯ã€Cドライブã®ç›´ä¸‹ã§ã¯ãªã„ã¨ã¾ãšã„ã¨æ€ã£ãŸã®ã§ã™ãŒã€ä¸Šè¨˜ã®2ã¤ã‚’Cドライブã®ç›´ä¸‹ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚‚åŒã˜ã§ã—ãŸã€‚ 3.ODE-0.8 ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«  ①ODE-src-0.8ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰  ②+Lhacaã§è§£å‡å¾Œã€ç”Ÿæˆã•れãŸODE-0.8をフォルダã”ã¨ã€   D:\msys\1.0\home\ユーザå\src\ã«ã‚³ãƒ”ー  以下msysã§å®Ÿè¡Œ…  ③$cd src(return) ⇒$cd ODE-0.8(return),ã§ODE-0.8フォルダã«ç§»å‹•  ④$./configure –enable-double-precision(return)   ã¨ã™ã‚‹ã¨ã€è¨³ã®åˆ†ã‹ã‚‰ãªã„メッセージãŒã„ã£ã±ã„出ã¦ãã‚‹. ã“ã“ã§ã‚„ãŸã‚‰ã«æ°—ã«ãªã‚‹ã®ã¯ã€   configure : error : can not run /bin/sh ./config.sub ã¨ã„ã†ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ã€‚  ⑤プãƒãƒ³ãƒ—ãƒˆã«æˆ»ã£ãŸã‚‰ã€$make(return) を実施ã—ã¾ã—ãŸãŒã€çµæžœã¯ã”å˜çŸ¥ã®é€šã‚Šã§ã™ã€‚ ã”質å•ã®ï¼‘ã§ã™ãŒã€ODE-0.7も試ã—ãŸã»ã©ã§ã™ã‹ã‚‰ã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã®ä¸å分ã•ã¯ãªã„ã¨æ€ã„ã¾ã™ã€‚è§£å‡ã«é–¢ã—ã¦ã¯å†åº¦è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚ ã”質å•ã®ï¼’ã§ã™ãŒã€ä¸Šè¨˜ã®æ‰‹é †é€šã‚Šã‚„りã¾ã—ãŸã®ã§å•題ãªã„ã¯ãšã§ã™ã‚ˆã? OSã¯ã€Windows XP professionalã§ã™ã€‚ ãŠå¿™ã—ã„ã¨ã“ã‚申ã—訳ã‚りã¾ã›ã‚“ãŒã€ã”è¿”äº‹é ‚ã‘ã‚Œã¨æ€ã„ã¾ã™ã€‚ よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
partizansã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚何ãŒãã£ã‹ã‘ã§ODEを知られãŸã®ã§ã™ã‹ï¼Ÿ オープンソースã§ã™ã—ã€ãŠæ‰‹è»½ã«ä½¿ãˆã‚‹ã®ã§ã€è¦šãˆã‚‹ã¨é‡å®ã™ã‚‹ã¨æ€ã„ã¾ã™ã€‚
ã•ã¦ã€Windowã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨å®Ÿéš›ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’詳ã—ãæ•™ãˆã¦ãã ã•ã„。
ã¾ãŸã€ã‚¨ãƒ©ãƒ¼ã‚’ã¿ã‚‹ã¨makefileãŒãªã„よã†ã§ã™ã。
1. ODEソースファイルã®è§£å‡ã«å¤±æ•—ã€ã¾ãŸã¯å®Œå…¨ã«ã—ã¦ã„ãªã„。ã¾ãŸã¯ã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ãã®ã‚‚ã®ãŒä¸å®Œå…¨ã€‚   ダウンãƒãƒ¼ãƒ‰ã‚’å†åº¦ã—ã€è§£å‡ãŒå®Œå…¨ã«ã•れã¦ã„ã‚‹ã‹ç¢ºèªã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚ 2.makeコマンドを入力ã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒé•ã†ã€‚   ode-0.8ã®ã™ã下ã§å®Ÿè¡Œã—ã¾ã—ãŸã‹ï¼Ÿ
ã¯ãšã˜ã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ä¸Šã®ï¼’点ãŒè€ƒãˆã‚‰ã‚Œã‚‹ã®ã§ç¢ºã‹ã‚ã¦ãã ã•ã„。
ã“ã‚“ã«ã¡ã¯ã€ 先週ODEã¨ã„ã†ã‚‚ã®ã‚’知ã£ãŸã°ã‹ã‚Šã§ã™ã€ã€ã€ï¼ˆï¼ï¼ï¼›ï¼‰ 興味ãŒã‚ã„ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—よã†ã¨ã—ã¦ã‚‹ã‚“ã§ã™ãŒã€ã†ã¾ãã„ã£ã¦ã¾ã›ã‚“。 Windowsã®MinGW+Msysã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¾ã§ã¯OK。 ODE0.8ã®Configurationã‹ã‚‰ã†ã¾ãã„ã£ã¦ãªã„よã†ã§ã€ makeã—よã†ã¨ã™ã‚‹ã¨ã€ No targets specified and no makefile fonund.Stop ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¾ã™ã€‚ ã©ã†ã™ã‚Œã°ã„ã„ã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€ã•ん,
ã¨ã¦ã‚‚ä¸å¯§ãªå›žç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
質å•1ã§ã™ãŒï¼Œå›žç”ã©ãŠã‚Šã«ãƒœãƒ‡ã‚£ã‚’è¨å®šã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ï¼Œ 解決ã™ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸï¼Ž 質å•ï¼’ã§ã™ãŒï¼ŒæŒ¯å‹•を回é¿ã™ã‚‹ã‚ˆã†ã«æ‘©æ“¦ã‚’入れるãªã©ã®å‡¦ç†ã‚’ã‚„ã£ã¦ã¿ã¾ã™ï¼Ž
ODE本ãŒå‡ºç‰ˆã•れるã®ã‚’å¾…ã¡æœ›ã‚“ã§ã„ã¾ã™ï¼Ž 大変ã ã¨æ€ã„ã¾ã™ãŒï¼Œé ‘å¼µã£ã¦ãã ã•ã„.
sagaã•ん,
「ODEよãã‚る質å•ã€ãŒå‚考ã«ãªã‚‹ã¨ã„ã†æ„見,ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Žä½œã£ãŸç”²æ–ãŒã‚ã£ãŸã¨ã„ã†ã‚‚ã®ã§ã™ï¼ŽæŽˆæ¥ã§ODEã‚’æ•™ãˆã¦ã„ã‚‹ã®ã§åˆå¿ƒè€…ã®è³ªå•ã¯ã¨ã¦ã‚‚è²´é‡ã§ã™ï¼Žé æ…®ãªãèžã„ã¦ãã ã•ã„.
ã•ã¦ï¼Œã”質å•ã«å›žç”ã—ã¾ã™ï¼Ž 1.ODEã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆï¼ˆé–¢ç¯€ï¼‰ã¯å˜ãªã‚‹åˆ¶ç´„ãªã®ã§ç‰©ç†çš„ãªå®Ÿä½“ã¯ã‚りã¾ã›ã‚“ã®ã§ï¼Œè³ªé‡ã‚’è¨å®šã™ã‚‹APIã¯ã‚りã¾ã›ã‚“.ãŸã ã—,ジョイントã®ã‚ã‚‹ä½ç½®ï¼ˆã‚¢ãƒ³ã‚«ãƒ¼ï¼‰ã«ãƒœãƒ‡ã‚£ï¼ˆå‰›ä½“)を作り,ãã®ãƒœãƒ‡ã‚£ã¯éš£æŽ¥ã—ãŸãƒœãƒ‡ã‚£ã¨æŽ¥è§¦åˆ¤å®šã‚’ã—ãªã„ã¨ã„ã†ã‚ˆã†ã«ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã™ã‚Œã°ç›®çš„ã¯é”æˆã§ãã‚‹ã¨æ€ã„ã¾ã™ï¼Žã“ã®ç¨‹åº¦ã®å›žç”ã§è§£æ±ºã§ãã¾ã™ã‹ï¼Ÿã€€ä¸å分ãªå ´åˆã¯æ ¡æ£ãŒçµ‚ã‚ã£ãŸã‚‰è¨˜äº‹ã‚’書ãã¾ã—ょã†ï¼Ž
2.トルク制御ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ を掲載ã—よã†ã¨ã—ã¦ã„ã¾ã—ãŸãŒï¼Œæœ¬ã®æ ¡æ£ãŒå¤§è©°ã‚を迎ãˆã¦ã„ã‚‹ã®ã§ã‚µãƒœã£ã¦ã„ã¾ã™ï¼ŽODE講座16ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã®ä»¥ä¸‹ã®éƒ¨åˆ†ã®ä¸‹ã‹ã‚‰ï¼“,4行目ã«ã‚る,dJointSetHingeParam(joint[j], dParamVel, k1*z); // 角速度ã®è¨å®š dJointSetHingeParam(joint[j], dParamFMax, fMax); // 最大トルクã®è¨å®š ã®ï¼’行を消ã—ã¦ï¼Œä»£ã‚りã«ä»¥ä¸‹ã®è¡Œã‚’挿入ã—ã¦ãã ã•ã„.ãªãŠï¼Œå¿…è¦ãªãƒˆãƒ«ã‚¯ã®å€¤ã¯ã”自分ã§è¨å®šã—ã¦ãã ã•ã„. dJointAddHingeTorque(joint[j], å¿…è¦ãªãƒˆãƒ«ã‚¯ã®å€¤);
// P制御 void control() { static int step = 0; // シミュレーションã®ã‚¹ãƒ†ãƒƒãƒ—æ•° double k1 = 10.0, fMax = 100.0; // k1:比例ゲイン, fMax:最大トルク[Nm] printf(“\r%6d:”,step++); for (int j = 1; j < NUM; j++) { double tmpAngle = dJointGetHingeAngle(joint[j]); // ç¾åœ¨ã®é–¢ç¯€è§’[rad] double z = THETA[j] – tmpAngle; // z: 残差=目標関節角ï¼ç¾åœ¨é–¢ç¯€è§’ dJointSetHingeParam(joint[j], dParamVel, k1*z); // 角速度ã®è¨å®š dJointSetHingeParam(joint[j], dParamFMax, fMax); // 最大トルクã®è¨å®š } }
ãŸã ã—,ã“れã ã‘ã§ã¯æŒ¯å‹•ã—ã¾ã™ã®ã§ï¼Œå›žé¿ã™ã‚‹ãŸã‚ã«ã¯é–¢ç¯€ã«æ‘©æ“¦ã‚’入れるãªã©ã®å‡¦ç†ãŒå¿…è¦ã§ã™ï¼Žæ ¡æ£ä½œæ¥ãŒçµ‚ã‚ã£ãŸã‚‰ã‚¢ãƒƒãƒ—ã—ã¾ã™ã.
ã¯ã˜ã‚ã¾ã—ã¦ã€‚sagaã¨ç”³ã—ã¾ã™ã€‚ 最近ODEã‚’ã¯ã˜ã‚ã¾ã—ãŸã€‚ ã“ã®ã‚µã‚¤ãƒˆã‚’å‚考ã«ã•ã›ã¦ã‚‚らã£ã¦ã„ã¾ã™ï¼ˆç‰¹ã«ã€ŒODEよãã‚る質å•ã€ã¯å‚考ã«ãªã‚Šã¾ã™ï¼‰ã€‚
以下ã®ï¼’ã¤ã®è³ªå•ãŒã‚りã¾ã™ã€‚ ・ジョイントã«è³ªé‡ã‚’è¨å®šã—ãŸã„ã®ã§ã™ãŒã€ã©ã†ã‚„ã£ãŸã‚‰ã§ãã‚‹ã®ã§ã—ょã†ã‹ã€‚ ・トルク制御をã—ãŸã„ã¨æ€ã£ã¦ã„ã¾ã™ã€‚dJointAddHingeTorque()を使ã†ã¨ã„ã†ã“ã¨ã§ã™ãŒã€ プãƒã‚°ãƒ©ãƒ 例ãŒã‚ã‚Œã°æ•™ãˆã¦ã‚‚らãˆãªã„ã§ã—ょã†ã‹ã€‚
ゆã†ã•ん,
解決ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼Ž Gimpactã¯å˜ç²¾åº¦ã§ãªã„ã¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ããªã„ã®ã§ï¼Œã¾ã 試ã—ã¦ã„ã¾ã›ã‚“ï¼Žã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ã‚„ã‚‰ã‚Œã‚‹å ´åˆã¯ï¼Œç²¾åº¦ã®é«˜ã„å€ç²¾åº¦ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ï¼Ž
ã¾ãŸï¼Œãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã«ã‚ˆã‚‹ã¨è¡çªæ¤œå‡ºè¨ˆç®—ã«é–¢ã—ã¦ã¯Bulletã®ãƒ©ã‚¤ãƒ–ラリã¨çµ±åˆã™ã‚‹è©±ã‚‚ã§ã¦ãã¦ãŠã‚Šï¼Œä»Šå¾Œå¤§ãã変ã‚ã‚‹ã¨ã“ã‚ã ã¨æ€ã„ã¾ã™ï¼Ž
ã¾ãŸï¼Œä½•ã‹ã‚ã£ãŸã‚‰æŠ•稿ã—ã¦ãã ã•ã„.
ã“ã‚“ã«ã¡ã¯ã€‚ 固定ジョイントã«ã—ãŸæ‰€ã€ç„¡äº‹å‹•ãã¾ã—ãŸï¼ 最åˆGIMPACTを使ã£ã¦ã„ãŸã®ã§ã™ãŒã€ã™ãã«é›¢ã‚Œã¦ã—ã¾ã£ãŸã‚Šã—ã¦ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦é•ã†ã®ã§ãªã‹ãªã‹é›£ã—ã„ã§ã™ã。
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚ ã“れã‹ã‚‰ã‚‚ï¼¯ï¼¤ï¼¥è¬›åº§é ‘å¼µã£ã¦ãã ã•ã„ï¼
地é¢ã¨åŒæ§˜ã«nearCallBack関数を作æˆã—ã¦ã‚‚,ãã£ã¤ã‹ãªã„ã¨æ€ã„ã¾ã™ï¼Ž ãã“ã§ã¯æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’使ã£ã¦ã„ã¾ã™ã‹ã‚‰ï¼Ž
以下ã¯ã©ã†ã§ã—ょã†ã‹ï¼Ÿ
ãŸã ã—,ã“れã¯åœ°é¢ãŒé³¥ã‚‚ã¡çŠ¶æ…‹ã§ã™ï¼Žãƒãƒƒãƒˆã«ãã£ã¤ã‘ãŸã„ãªã‚‰groundã‚’ãƒãƒƒãƒˆã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªIDã«å¤‰æ›´ã—ã¦ãã ã•ã„.
試ã—ãŸã‚‰çµæžœã‚’æ•™ãˆã¦ãã ã•ã„ã.
static void nearCallback(void *data, dGeomID o1, dGeomID o2) { const int N = 10; dContact contact[N];
int isGround = ((ground == o1) || (ground == o2));
int n = dCollide(o1,o2,N,&contact[0].geom,sizeof(dContact)); if (isGround) { for (int i = 0; i < n; i++) { contact[i].surface.mode = dContactBounce|dContactSoftERP|dContactSoftCFM; contact[i].surface.bounce = 1.0; // (0.0~1.0) contact[i].surface.bounce_vel = 0.0; contact[i].surface.soft_erp = 1.0; contact[i].surface.soft_cfm = 0.0; //dJointID c = dJointCreateContact(world,contactgroup,&contact[i]); // dJointAttach (c,dGeomGetBody(contact[i].geom.g1),    // dGeomGetBody(contact[i].geom.g2)); fixed[i] = dJointCreateFixed(world,contactgroup); dJointAttach (fixed[i],dGeomGetBody(contact[i].geom.g1), dGeomGetBody(contact[i].geom.g2)); dJointSetFixed(fixed[i]); } } }
ã“ã‚“ã°ã‚“ã¯ã€‚ ã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚ ボールãŒãƒãƒƒãƒˆã«ãã£ã¤ãã¨ã„ã†ã®ã¯ã€ã§ã‚€ã•ã‚“ãŒãŠã£ã—ゃるよã†ã« 両者をfixedジョイントã‹ä½•ã‹ã§å®Œå…¨ã«çµåˆã•ã›ã‚‹ã¨ã„ã†æ„味ã§ã™ã€‚ 地é¢ã¨åŒã˜ã‚ˆã†ã«ã‚„ã£ã¦ã„ã‚‹ã¤ã‚‚りãªã®ã§ã™ãŒã€‚ よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
é»’ã„人ã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€ã‚³ãƒ¡ãƒ³ãƒˆã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ラグランジェ法ã®ä¸€ç¨®ã‚’使ã£ã¦ã„ã¾ã™ã€‚詳細ã¯ã€Œã‚ˆãã‚る質å• B.16ã€ã«æ›¸ãã¾ã—ãŸã®ã§ã”覧ãã ã•ã„。
ã§ã‚€
ODE 本体ãŒå¾®ç©åˆ†ã‚’計算ã—ã¦ã„る方法ãŒã€ä½•ã‹æ•™ãˆã¦ãã ã•ã„。ニュートン法やオイラー法ãªã©ã®åå‰ãŒåˆ¤ã‚‹ã ã‘ã§ã‚‚大変助ã‹ã‚Šã¾ã™ã€‚
大和ã•ã‚“ã€
ãŠåŠ›ã«ãªã‚Œãšã™ã¿ã¾ã›ã‚“。
ã‚‚ã—ã€ã‚ˆã‹ã£ãŸã‚‰è§£æ±ºæ–¹æ³•を投稿ã—ã¦é ‚ã‘れã°ã€åŒã˜ã‚ˆã†ãªå•é¡Œã«æ‚©ã‚“ã§ã„ã‚‹æ–¹ã®å‚考ã«ãªã‚‹ã¨æ€ã„ã¾ã™ã€‚
>>ODE FAQã®A.11ã«å›žç”ã—ã¾ã—ãŸã€‚
ã‚ã‹ã‚Šã¥ã‚‰ã„箇所ãŒã‚ã‚Œã°æ•™ãˆã¦ãã ã•ã„。
ã§ã‚€ã•ã‚“ã€éžå¸¸ã«ã‚ã‹ã‚Šã‚„ã™ã„説明ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼ï¼
大変助ã‹ã‚Šã¾ã™ï¼ï¼
回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™
ã„ã‚ã„ã‚ã¨è‡ªåˆ†ã§ã„ã˜ã£ã¦ãŸã‚‰ãªã‚“ã¨ã‹ã†ã¾ã行ãã¾ã—ãŸï¼ˆï¼¾ï¼¾ï¼›
ドåˆå¿ƒè€…ã•ã‚“ã€
ODE FAQã®A.11ã«å›žç”ã—ã¾ã—ãŸã€‚
ã‚ã‹ã‚Šã¥ã‚‰ã„箇所ãŒã‚ã‚Œã°æ•™ãˆã¦ãã ã•ã„。
ã§ã‚€
>>ã”質å•ã®æ„味をå–りé•ãˆã¦ã„ã‚‹ã‹ã‚‚ã—れãªã„ã®ã§ç¢ºèªã•ã›ã¦ãã ã•ã„。
自分自身ã§ä½œæˆã™ã‚‹æ–¹æ³•ã¨ã„ã†ã®ã¯ã€ã‚³ãƒ³ãƒ‘イラーã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®ä½¿ã„æ–¹ãªã©ã®é–‹ç™ºç’°å¢ƒã«é–¢ã™ã‚‹ã“ã¨ã§ã—ょã†ã‹ï¼Ÿ
より具体的ã«èžã„ã¦ãã ã•ã„。
質å•ãŒã‚ã‹ã‚Šã«ããã¦ç”³ã—訳ã”ã–ã„ã¾ã›ã‚“。
å…ˆã»ã©ã®è›‡ãƒãƒœãƒƒãƒˆã®è©±ã‚’例ã«ã™ã‚‹ã¨ã€
「snakeroboã¨ã„ã†ãƒ•ォルダをã©ã“ã©ã“ã«ä½œã£ã¦ã€ãã“ã«è‡ªåˆ†ã§ä½œæˆã—ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰snakerobo.cppファイルをã„れã¾ã™ã€‚
ãã—ã¦ã€ã©ã†ã‚³ãƒ³ãƒ‘イルã—ã€ã©ã†å®Ÿè¡Œã•ã›ã¾ã™ã€‚ã€
ã£ã¨ã„ã£ãŸå…·åˆã§ã™ã€‚
ã‚ã‹ã‚Šã«ãã„ã§ã™ã・・・。(^^;)
ã‚‚ã†å°‘ã—ã“ã†ã„ã£ãŸçŸ¥è˜ãŒã‚れã°ã†ã¾ã説明ã§ãã‚‹ã®ã§ã™ãŒã€‚
è¦ã¯ã§ã‚€ã•ã‚“ã®è¨€ã†é€šã‚Šé–‹ç™ºç’°å¢ƒã«é–¢ã™ã‚‹å†…容ã ã¨æ€ã„ã¾ã™ã€‚
ドåˆå¿ƒè€…様
ã”質å•ã®æ„味をå–りé•ãˆã¦ã„ã‚‹ã‹ã‚‚ã—れãªã„ã®ã§ç¢ºèªã•ã›ã¦ãã ã•ã„。
自分自身ã§ä½œæˆã™ã‚‹æ–¹æ³•ã¨ã„ã†ã®ã¯ã€ã‚³ãƒ³ãƒ‘イラーã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®ä½¿ã„æ–¹ãªã©ã®é–‹ç™ºç’°å¢ƒã«é–¢ã™ã‚‹ã“ã¨ã§ã—ょã†ã‹ï¼Ÿ
より具体的ã«èžã„ã¦ãã ã•ã„。
ã§ã‚€
ã§ã‚€ã•ã‚“ã€ã”è§£ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
>>ã•ã¦ã€ã”è‡ªåˆ†ã§æ–°ã—ãプãƒã‚°ãƒ©ãƒ を作æˆã•ã‚Œã‚‹å ´åˆã€ã‚ˆãã‚ã‹ã‚‰ãªã„ã†ã¡ã¯ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ をベースã«ä½œæˆã•れる方ãŒåŠ¹çŽ‡ã¦ãã§ã™ã€‚
ã¯ã„ã€ç¢ºã‹ã«ãれãŒä¸€ç•ªæ‰‹ã£å–ã‚Šæ—©ã„æ–¹æ³•ã ã¨æ€ã„ã¾ã™ã€‚
ã—ã‹ã—ã€ã“れã‹ã‚‰è‡ªåˆ†è‡ªèº«ã§ã‚‚自作ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’ã„ã‚ã„ã‚作æˆã—ã¦ã„ããŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã®ã§ã€ãŠæ‰‹æ•°ã§ã™ãŒæ•™ãˆã¦ã„ãŸã ã‘ãªã„ã§ã—ょã†ã‹ã€‚申ã—訳ã”ã–ã„ã¾ã›ã‚“。
>>ãªãŠã€ãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®è§£ç”例(プãƒã‚°ãƒ©ãƒ )を公開ã™ã‚‹äºˆå®šã¯ã‚りã¾ã›ã‚“。基本的ãªè€ƒãˆæ–¹ã‚„サンプルプãƒã‚°ãƒ©ãƒ を本文ä¸ã§èª¬æ˜Žã—ã¦ã„ã‚‹ã®ã§ã€ãれを元ã«è‡ªåˆ†ã§è€ƒãˆã¦ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚¹ã‚ルã®å‘上を図るã“ã¨ãŒãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®ç›®çš„ã§ã™ã€‚æ£è§£ã¯ï¼‘ã¤ã§ã¯ãªã„ã®ã§ã€è§£ç”例を掲載ã™ã‚‹ã“ã¨ã¯èªè€…ã®è‡ªç”±ãªç™ºæƒ³ã‚„コーディングを妨ã’ã‚‹ã“ã¨ã«æˆã‚Šã‹ããªã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
ãã†ã‚†ã†ã“ã¨ã§ã—ãŸã‹ã€ç†è§£ã„ãŸã—ã¾ã—ãŸã€‚
ドåˆå¿ƒè€…ã•ã‚“ã€
æ‹™è‘—ã‚’è³¼å…¥é ‚ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã“ã®æœ¬ã¯åˆå¿ƒè€…ã‚’å¯¾è±¡ã«æ›¸ã„ãŸã‚‚ã®ãªã®ã§ã€ã‚ã‹ã‚‰ãªã„箇所ãŒã‚れã°è³ªå•ã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚
ã•ã¦ã€ã”è‡ªåˆ†ã§æ–°ã—ãプãƒã‚°ãƒ©ãƒ を作æˆã•ã‚Œã‚‹å ´åˆã€ã‚ˆãã‚ã‹ã‚‰ãªã„ã†ã¡ã¯ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ をベースã«ä½œæˆã•れる方ãŒåŠ¹çŽ‡ã¦ãã§ã™ã€‚例ãˆã°ã€è›‡ãƒãƒœãƒƒãƒˆã‚’ä½œã‚‹å ´åˆã¯ã€P24 プãƒã‚°ãƒ©ãƒ 1.3 monoBot.cppã®ï¼‘本脚ã«ã€å††æŸ±ã‚’ヒンジジョイントã§çµåˆã—ã¦ã„ã‘ã°æ¯”較的簡å˜ã«ä½œã‚‹ã“ã¨ãŒã§ãã‚‹ã¨æ€ã„ã¾ã™ã€‚
ãªãŠã€ãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®è§£ç”例(プãƒã‚°ãƒ©ãƒ )を公開ã™ã‚‹äºˆå®šã¯ã‚りã¾ã›ã‚“。基本的ãªè€ƒãˆæ–¹ã‚„サンプルプãƒã‚°ãƒ©ãƒ を本文ä¸ã§èª¬æ˜Žã—ã¦ã„ã‚‹ã®ã§ã€ãれを元ã«è‡ªåˆ†ã§è€ƒãˆã¦ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚¹ã‚ルã®å‘上を図るã“ã¨ãŒãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®ç›®çš„ã§ã™ã€‚æ£è§£ã¯ï¼‘ã¤ã§ã¯ãªã„ã®ã§ã€è§£ç”例を掲載ã™ã‚‹ã“ã¨ã¯èªè€…ã®è‡ªç”±ãªç™ºæƒ³ã‚„コーディングを妨ã’ã‚‹ã“ã¨ã«æˆã‚Šã‹ããªã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
ã§ã‚€
大和ã•ã‚“ã€
Microsoftã®é–‹ç™ºç’°å¢ƒã‚’使ã£ãŸã“ã¨ãŒãªã„ã®ã§ã€ç§ã«ã¯ã‚ã‹ã‚Šã¾ã›ã‚“。ã”ã‚ã‚“ãªã•ã„。
ã©ãªãŸã‹ã€ã”è¦ªåˆ‡ãªæ–¹ãŒå›žç”ã—ã¦ãã ã•れã°è‰¯ã„ã®ã§ã™ãŒï¼Žï¼Žï¼Ž
ã§ã‚€
ã“ã‚“ã«ã¡ã‚ã€ãƒ‰åˆå¿ƒè€…ã¨ç”³ã—ã¾ã™ã€‚
本を購入ã—ãƒãƒœãƒƒãƒˆã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®å¦ç¿’ã‚’ã—ã¦ãŠã‚Šã¾ã™ã€‚
今ç¾åœ¨ã€Pï¼’ï¼—ã¾ã§å¦ç¿’ã—ã¾ã—ãŸã€‚ãã“ã§ã„ãã¤ã‹ã‚ã‹ã‚‰ãªã„ã“ã¨ãŒã‚ã£ãŸã®ã§è³ªå•ã—ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ã€‚
1.6ã®ãƒ—ãƒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’å–り組んã§ã„ã‚‹ã®ã§ã™ãŒã€ä»Šã¾ã§ã¯ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã‹ã‚‰ãƒ—ãƒã‚°ãƒ©ãƒ をダウンãƒãƒ¼ãƒ‰ã—コンパイルã—ã¦å®Ÿè¡Œã—ã¦ã„ãŸã®ã§ã™ãŒã€ã¾ã£ãŸãæ–°ã—ã„プãƒã‚°ãƒ©ãƒ (プãƒãƒ—ãƒï¼‘.1蛇ãƒãƒœãƒƒãƒˆï¼‰ã‚’ç«‹ã¡ä¸Šã’ã‚‹ã«ã¯ã©ã†ã—ãŸã‚‰ã‚ˆã‚ã—ã„ã§ã—ょã†ã‹ã€‚
ã¾ãŸã€ãƒ—ãƒãƒ—ãƒã®è§£ç”ãªã©è¼‰ã›ã¦ã„ãŸã ã‘ã¾ã›ã‚“ã§ã—ょã†ã‹ã€‚(ã™ã”ã„æ°—ã«ãªã£ã¦å…ˆã«é€²ã‚ã¾ã›ã‚“苦笑)
本当ã«ç´ 人ã§ç”³ã—訳ã”ã–ã„ã¾ã›ã‚“
åˆã‚ã¾ã—ã¦ã€€å¤§å’Œã¨ã„ã„ã¾ã™ã€‚
ãƒãƒœãƒƒãƒˆã‚·ãƒ¥ãƒŸãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®æœ¬ã‚’å‚考ã«ODEã«ãƒãƒ£ãƒ¬ãƒ³ã‚¸ã—ã¦ã„ã‚‹ã®ã§ã™ãŒ
ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã¯æˆåŠŸã™ã‚‹ã®ã«å®Ÿè¡Œã™ã‚‹ã¨ä»¥ä¸‹ã®ã‚ˆã†ãªã‚¨ãƒ©ãƒ¼ã§å®Ÿè¡ŒãŒã†ã¾ãã„ãã¾ã›ã‚“。
アセンブリ ‘odetest, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ ã‹ã‚‰åž‹ ‘dxWorld’ ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“。
ã‚‚ã—ã‹ã—ã¦ã€€ODEã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«è‡ªä½“ãŒã†ã¾ãã„ã£ã¦ã„ãªã„ã‚“ã§ã—ょã†ã‹ï¼Ÿ
開発環境ã¯Visual Studio.Net 2003 を使ã£ã¦ã„ã¾ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã§ã‚€ã•ã‚“
早速ã®ã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
解決ã—ã¾ã—ãŸã€‚
ODEã®ã‚µãƒ³ãƒ—ルã«ä¼¼ãŸã‚ˆã†ãªä¾‹ãŒã‚ã‚‹ã®ã‚’見è½ã¨ã—ã¦ã„ã¾ã—ãŸã€‚
「ã‚る一定以上ã®åŠ›ãŒåŠ ã‚ã£ãŸã¨ãã«ã€å›ºå®šã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’無効化ã™ã‚‹ã€
ã®ã‚’実ç¾ã™ã‚‹ãŸã‚ã€dJointDestroyを使ã£ã¦å¤±æ•—ã—ã¦ã„ã¾ã—ãŸãŒã€
dJointAttach(Joint, 0, 0)ã¨ã™ã‚‹ã“ã¨ã§ã€ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’無効化ã™ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸã€‚
ã‚‚ã†ä¸€åº¦dJointAttach(Joint, body1,body2 )を使ã†ã“ã¨ã§ã€ç„¡åŠ¹åŒ–ã—ãŸã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’復活ã•ã›ã‚‹ã“ã¨ã‚‚ã§ãã¾ã—ãŸã€‚
今回ジオメトリã®ã‚¯ãƒ©ã‚¹ã¯ç”¨ã„ã¾ã›ã‚“ã§ã—ãŸãŒã€ä¾¿åˆ©ãã†ãªã®ã§ä½¿ã£ã¦ã¿ã‚ˆã†ã¨æ€ã£ã¦ã„ã¾ã™ã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
Beganã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ã•ã¦ã€ï¼’ã¤ã®ãƒœãƒ‡ã‚£ã‚’1ã¤ã®è¤‡åˆãƒœãƒ‡ã‚£ã¨ã—æ‰±ã†æ–¹æ³•ã¯ã€http://www.ode.org/ode-latest-userguide.html
ã®10.7.7 Geometry Transform Classを使ã„ã¾ã™ã€‚
æ£ç¢ºã«ã¯ï¼’ã¤ã®ãƒœãƒ‡ã‚£ã‚’1ã¤ã®è¤‡åˆãƒœãƒ‡ã‚£ã§ã¯ãªãã€ï¼’ã¤ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’1ã¤ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ã§ã‚‚ã€å½¢çŠ¶ã‚’ç¶æŒã—ã¾ã™ã®ã§ãƒãƒ©ãƒãƒ©ã«ã¯ãªã‚Šã¾ã›ã‚“。ODEã«ä»˜å±žã—ã¦ã„るテストプãƒã‚°ãƒ©ãƒ test_boxstack.cppã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’èªã‚€ã¨ä½¿ã„æ–¹ãŒã‚ã‹ã‚Šã¾ã™ã€‚ODE本ã§ã¯è¤‡é›‘ã«ãªã‚Šé›£ã—ããªã‚‹ã®ã§èª¬æ˜Žã—ã¦ã„ã¾ã›ã‚“。
Beganã•ã‚“ã®ã‚ˆã†ãªã‚¢ãƒ—リケーションを作ã£ãŸã“ã¨ãŒãªã„ã®ã§è©¦ã—ãŸã¯ã‚りã¾ã›ã‚“ãŒã€fixedジョイントã§ã§ãるよã†ãªæ°—ãŒã—ã¾ã™ã€‚ERPã‚„CFMã®å€¤ã‚’変更ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ãŒæ¶ˆãˆã‚‹ã®ã§ã¯ãªã„ã‹ã¨æ€ã„ã¾ã™ã€‚ãれã§ã„ã‚ã„ã‚試ã—ã¦ã‹ã‚‰Transform Classを試ã—ã¦ã¿ã‚‹ã¨æ™‚é–“ã®ç¯€ç´„ã«ãªã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ODE本を使ã£ã¦ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®å‹‰å¼·ã‚’ã—ã¦ã„ã¾ã™ã€‚
ã¨ã¦ã‚‚å‚考ã«ãªã‚Šã€ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®è£½ä½œãŒã•ãã•ã進ã¿ã¾ã™ã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
質å•ã§ã™ã€‚
p90ã«
「2ã¤ã®ãƒœãƒ‡ã‚£ã‚’固定ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã¯ã€ãれを1ã¤ã®è¤‡åˆãƒœãƒ‡ã‚£ã¨ã™ã‚‹æ–¹æ³•ãŒè‰¯ã„ã€
ã¨ã„ã†è¨˜è¿°ãŒã‚りã¾ã™ã€‚
ODE本ã§ã¯è§¦ã‚Œã‚‰ã‚Œã¦ã„ãªã„ã®ã§ã™ãŒã€å…·ä½“çš„ã«ã¯ã©ã®ã‚ˆã†ãªé–¢æ•°ã‚’使ãˆã°è‰¯ã„ã®ã§ã—ょã†ã‹ã€‚
実ç¾ã—ãŸã„機能ã¯ã€ã¯ã˜ã‚ã¯å›ºå®šã•れã¦ã„ãŸ2物体ãŒã€ã‚る一定以上ã®åŠ›ãŒåŠ ã‚ã‚‹ã¨ãƒãƒ©ãƒãƒ©ã«ãªã‚‹ã€ã¨ã„ã†ã‚‚ã®ã§ã™ã€‚
dBodyDisableãªã©ã‚’組ã¿åˆã‚ã›ã‚Œã°æ¨¡æ“¬çš„ã«å®Ÿç¾ã§ããã†ã§ã™ãŒã€
ä»Šå¾Œã®æ‹¡å¼µæ€§ã‚’考ãˆã¦ã€2ã¤ã®ãƒœãƒ‡ã‚£ã‚’固定ã™ã‚‹æ–¹æ³•を勉強ã—ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
以下ã®ã‚ˆã†ãªã“ã¨ã‚’試ã—ã¾ã—ãŸãŒã€ã†ã¾ãã„ãã¾ã›ã‚“ã§ã—ãŸã€‚
固定ジョイントを作ã£ã¦ãŠã„ã¦ã€ã‚る一定以上ã®åŠ›ã§dJointDestroyã§ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’ç ´å£Šã™ã‚‹ã€‚
ã—ã‹ã—実行ã™ã‚‹ã¨ã€dJointDestroyã®ã¨ã“ã‚ã§ã€
「å•題ãŒç™ºç”Ÿã—ãŸãŸã‚〖.exeを終了ã—ã¾ã™ã€‚ã”ä¸ä¾¿ã‚’ãŠã‹ã‘ã—ã¦ç”³ã—訳ã‚りã¾ã›ã‚“。ã€
ã¨ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¦çµ‚了ã•れã¦ã—ã¾ã„ã¾ã—ãŸã€‚
ãã“ã§å›ºå®šã‚¸ãƒ§ã‚¤ãƒ³ãƒˆä»¥å¤–ã§ã®æ–¹æ³•ã§ä½œã£ã¦ã¿ã‚ˆã†ã¨è€ƒãˆãŸæ¬¡ç¬¬ã§ã™ã€‚
ã©ã®ã‚ˆã†ãªé–¢æ•°ã‚’使ãˆã°ã‚ˆã„ã‹ã•ãˆã‚ã‹ã‚Œã°ã€ã‚ã¨ã¯è‡ªåˆ†ã§æ¤œç´¢ã‚‚ã§ãã‚‹ã¨æ€ã„ã¾ã™ã®ã§ã€
ç°¡å˜ã§ã‚ˆã„ã®ã§ã”解説ã„ãŸã ã‘ãªã„ã§ã—ょã†ã‹ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
Jagurã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦
ã•ã¦ã€å˜æŒ¯å‹•や楕円振動を実ç¾ã™ã‚‹APIã¯ã‚りã¾ã›ã‚“ã®ã§ã€è‡ªåˆ†ã§ä½œã‚‹ã—ã‹ã‚りã¾ã›ã‚“ã。
直線上ã«é‹å‹•ãŒæ‹˜æŸã•れる振動ã®å ´åˆã¯ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’使ãˆã‚‹ã¨æ€ã„ã¾ã™ã€‚変ä½é‡ã«å¿œã˜ã¦ã€å¿…è¦ãªå‘¨æœŸã‚„振幅ã«ãªã‚‹ã‚ˆã†ã«å‰›ä½“ã«åŠ›ã‚’åŠ ãˆã‚Œã°å®Ÿç¾ã§ãã‚‹ã®ã§ã¯ãªã„ã§ã—ょã†ã‹ã€‚
ã¯ã˜ã‚ã¾ã—ã¦
最近ODEを使ã„å§‹ã‚ã€
ãƒãƒœãƒƒãƒˆã‚·ãƒ¥ãƒŸãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®æœ¬ã‚‚購入ã—
ã“ã®ã‚µã‚¤ãƒˆã‚‚よãå‚考ã«ã•ã›ã¦ã„ãŸã ã„ã¦ãŠã‚Šã¾ã™ã€‚
ãã“ã§è³ªå•ãªã®ã§ã™ãŒ
物体をãã®å ´ã§æŒ¯å‹•ã•ã›ã‚‹ã«ã¯ã©ã®ã‚ˆã†ã«ã™ã‚Œã°ã‚ˆã„ã®ã§ã—ょã†ã‹ï¼Ÿ
実ç¾ã—ãŸã„振動ã¨ã—ã¦ã¯
ï¼‘ï¼Žç›´ç·šçš„ãªæŒ¯å‹•
2.楕円振動
ç‰ã§ã€ã¤ã¾ã‚Šãã®å ´ã§ä¸€å®šã®å‹•ãã‚’ã—ç¶šã‘るよã†ãªã‚‚ã®ã§ã™ã€‚
æŒ¯å‹•æ•°ã‚„ã€æŒ¯å¹…ã®ãƒ‘ラメーターをæŒã¦ã‚‹ã¨ã„ã„ã®ã§ã™ãŒã€‚
ãã®æ§˜ãªé–¢æ•°ãŒã‚ã‚‹ã¨ã‚ˆã„ã®ã§ã™ãŒã€‚
サンプルプãƒã‚°ãƒ©ãƒ ç‰ãŒã‚りã¾ã—ãŸã‚‰å¹¸ã„ã§ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
ODE2joyã•ん,
大ããªãƒãƒªã‚´ãƒ³ã‚’ODEã§æ‰±ã£ãŸã“ã¨ãŒãªã„ã®ã§ã‚ã‹ã‚Šã¾ã›ã‚“.本家ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã§ãŠèžãã«ãªã‚‰ã‚Œã‚Œã°è‰¯ã„ã¨ã‹ã¨æ€ã„ã¾ã™ï¼Ž
Demuraã•ã¾
ä¸å¯§ãªè§£èª¬ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã¾ãŸä½•ã‹ã‚りã¾ã—ãŸã‚‰ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ODEã®æŽ¥è§¦è§£æžæ©Ÿèƒ½ã«èˆˆå‘³ãŒã‚ã£ã¦ã€ODE0.8ã«å«ã¾ã‚Œã¦ã„ãŸã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ (test_moving_trimesh.cpp)ã®ã‚’触ã£ã¦ã¿ãŸã®ã§ã™ãŒã€å·¨å¤§ãªtrimeshを表示ã—よã†ã¨ã€ä¸‹è¨˜å¤‰æ•°ã‚’大ãã‚ã«ã¨ã‚‹ã¨ãƒ—ãƒã‚°ãƒ©ãƒ ã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒæ‚ªããªã‚Šã¾ã™ã€‚
static float Vertices[NUM_VERTEX*3];
static int Indices[NUM_POLYGON][3];
20万ãƒãƒªã‚´ãƒ³vs20万ãƒãƒªã‚´ãƒ³ã®æŽ¥è§¦ã‚’やりãŸã„ã®ã§ã™ãŒã€é›£ã—ãã†ã§ã—ょã†ã‹ã€‚
Takã•ã‚“ã€
dWorldSetERP()ãŠã‚ˆã³dWorldSetCFM()を変更ã™ã‚‹ã¨ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ä¸ã®å…¨ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã«åйã„ã¦ãã¾ã™ã€‚nearCallback()ã®ä¸ã® contact[i].surface.soft_erpãŠã‚ˆã³contact[i].surface.soft_cfmを変更ã™ã‚‹ã¨æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã ã‘ã«åйã„ã¦ãã¾ã™ã€‚Takã•ã‚“ã®å ´åˆã¯ã€å¾Œè€…を変更ã™ã‚Œã°è‰¯ã„ã¨æ€ã‚れã¾ã™ã€‚
ãªãŠã€å€ç²¾åº¦ã§ODEをインストールã—ãŸå ´åˆCFMã®ãƒ‡ãƒ•ォルト値ãŒ1e-10ãªã®ã§ã€CFMã‚’è¨å®šã—ãªã„ã¨ãã®å€¤ã«ãªã‚Šã¾ã™ã€‚CFM=1/(h Kp + kd)ã€ã“ã“ã§hã¯ã‚¹ãƒ†ãƒƒãƒ—サイズã€kpã¯ãƒãƒå®šæ•°ã€kdã¯ãƒ€ãƒ³ãƒ‘定数ãªã®ã§hãŒå分å°ã•ã„å ´åˆã€CFMã¯ãƒ€ãƒ³ãƒ‘定数ã®é€†æ•°ã«ãªã‚Šã¾ã™ã€‚ã¤ã¾ã‚Šã€CFMã‚’å°ã•ãã™ã‚‹ã“ã¨ã¯ãƒ€ãƒ³ãƒ‘定数ãŒå¤§ãããªã‚‹ã®ã§ã€æŒ¯å‹•を抑ãˆã‚‹ã“ã¨ãŒã§ããŸã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
ã¾ãŸã€ERPã¨CFMã®å€¤ã‚’変更ã—ã¦ã‚‚計算時間ã«ã¯ã•ã»ã©å½±éŸ¿ã‚’与ãˆã¾ã›ã‚“。一般的ã«ã¯ã€CFMを大ããã™ã‚‹ã¨ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ã®å®‰å®šæ€§ãŒå‘上ã—ã¾ã™ã€‚ODEã®å†…部エラーãŒå‡ºã‚‹ã¨ãã¯ãã®å€¤ã‚’大ããã™ã‚‹ã¨å›žé¿ã§ãã‚‹å ´åˆãŒã‚りã¾ã™ã€‚
demuraã•ã¾
takã§ã™ã€‚出張ä¸ã«ã‚ã–ã‚ã–ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
指摘ã®é€šã‚Šä»¥ä¸‹ã‚’é †ã«è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚
1. Stepsizeã‚’å°ã•ãã™ã‚‹ã€‚
 Stepsizeã‚’0.005 -> 0.001ã¸å¤‰æ›´ã—ã¦ã¿ãŸã®ã§ã™ãŒã€é€²è¡Œé€Ÿåº¦ãŒ1/5ã«ãªã£ãŸåˆ†ã€æ»‘りã®ã‚¹ãƒ”ードも1/5ã«ãªã£ãŸã¨ã„ã†å°è±¡ã§ã—ãŸã®ã§ã€å…ƒã«æˆ»ã—ã¾ã—ãŸã€‚
2. ERPã®å€¤ã‚’å°ã•ãã™ã‚‹ã€‚
 0.8 -> 0.2ã‚ãŸã‚Šã¾ã§å°ã•ãã—ã¦ã¿ã¾ã—ãŸãŒå¤‰åŒ–ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚
3. CFMã®å€¤ã‚’大ããã™ã‚‹ã€‚
 「å°ã•ãã™ã‚‹ã€ã¨èªã¿é•ãˆã¦10e-4 -> 10e^-10ã¨ã—ã¦ã¿ãŸæ‰€ã€æ»‘りç¾è±¡ãŒè§£æ±ºã—ã¾ã—ãŸã€‚
ï¼’ã¨ï¼“ã§ã™ãŒã€ã‚°ãƒãƒ¼ãƒãƒ«ãªå€¤ã®æ–¹ï¼ˆdWorldSetERP()ãŠã‚ˆã³dWorldSetCFM())を変更ã—ãŸã®ã§ã™ãŒã€ã“れã¯nearCallback()ã®ä¸ã®contact[i].surface.soft_erpãŠã‚ˆã³contact[i].surface.soft_cfmを変更ã™ã‚‹ã®ã¨ã©ã†é•ã†ã®ã§ã—ょã†ã‹ï¼Ÿç§ã®è§£é‡ˆã§ã¯ã€åŸºæœ¬ã¯ã‚°ãƒãƒ¼ãƒãƒ«ã®å€¤ã«å¾“ã†ãŒã€ç‰¹å®šã®ã‚ªãƒ–ジェクトåŒå£«ã®ã¨ãã®ã¿å¤‰æ›´ã—ãŸã„ã¨ãã«å¾Œè€…を用ã„ã¦å€‹åˆ¥ã«ä¸Žãˆã‚‹ã¨æ€ã£ã¦ã„ãŸã®ã§ã™ãŒé–“é•ã„ãªã®ã§ã—ょã†ã‹ï¼Ÿ
別ã®è©±ã«ãªã‚Šã¾ã™ãŒã€ï¼‘ã¯å°ã•ãã™ã‚Œã°ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®è² æ‹…ãŒå¤§ãããªã‚Šã¾ã™ãŒã€ï¼’ã€ï¼“ã®å€¤ã¯ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®è² è·ã«å¤§ãã影響ã—ã¦ãã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
Takã•ã‚“ã€
ç¾åœ¨ã€æœå¹Œå‡ºå¼µä¸ã§ã™ã€‚æœ¬å ´ã®ã‚¸ãƒ³ã‚®ã‚¹ã‚«ãƒ³ã¯ãŠã„ã—ã„ã§ã™ã€‚
ã•ã¦ã€ODEã§ã¯å„ステップã§è¡çªæ¤œå‡ºã®è¨ˆç®—ã‚’ã—ã€æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®ä½ç½®ã‚’ä¿®æ£ã—ã¦ã„ã‚‹ã®ã§ã€Stepsizeã®å¤§ãã•ã‚„ERPã®å€¤ã«ã‚ˆã‚Šå¾®å°æŒ¯å‹•ã™ã‚‹ã‚±ãƒ¼ã‚¹ãŒã‚りã¾ã™ã€‚StepsizeãŒå¤§ãã„ã¨ç‰©ä½“ãŒåœ°é¢ã«ã‚り込ã¿ã€ERPãŒå¤§ãã„ã¨ãã®ä¿®æ£é‡ãŒå¤§ãã„ã®æŒ¯å‹•ãŒå¤§ãããªã‚Šã¾ã™ã€‚ä»¥ä¸‹ã‚’é †ç•ªã«è©¦ã—ã¦ã¿ã¦ãã ã•ã„。
1. Stepsizeã‚’å°ã•ãã™ã‚‹ã€‚
2. ERPã®å€¤ã‚’å°ã•ãã™ã‚‹ã€‚
3. CFMã®å€¤ã‚’大ããã™ã‚‹ã€‚
ãªãŠã€ERPã¨CFMã§ãƒãƒãƒ»ãƒ€ãƒ³ãƒ‘システムをシミュレーションã§ãã¾ã™ã€‚詳ã—ãã¯ODE本をã”覧ãã ã•ã„。
上記ã§ç—‡çŠ¶ãŒæ”¹å–„ã—ãªã„å ´åˆã¯ä»¥ä¸‹ã®APIを利用ã—ã¦ãã ã•ã„。
void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel);
void dWorldSetContactSurfaceLayer (dWorldID, dReal depth);
ç—‡çŠ¶ãŒæ”¹å–„ã—ãŸã‚‰ã€ã©ã®ãƒ‘ラメータをã©ã†å¤‰ãˆãŸã‚‰ã†ã¾ãã„ã£ãŸã‹é€£çµ¡é ‚ã‘れã°ã‚りãŒãŸã„ã§ã™ã€‚
takã¨ç”³ã—ã¾ã™ã€‚以å‰ã€Macã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã§ãŠä¸–話ã«ãªã£ãŸè€…ã§ã™ã€‚
今ã¾ã§ã»ã¨ã‚“ã©æç”»ã•ã›ãšã«ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’行ã£ã¦ãŠã‚Šã¾ã—ã¦ã€æœ€è¿‘確èªã®ãŸã‚ã«æç”»ã•ã›ã¦ã¿ã¦æ°—ã¥ã„ãŸã®ã§ã™ãŒã€ä½•ã®åŠ›ã‚‚åƒã„ã¦ã„ãªã„地é¢ã«é™æ¢ã—ã¦ã„る物体ãŒå¾®å¦™ã«æ»‘ã£ã¦å‹•ã„ã¦ã„るよã†ãªã®ã§ã™ã€‚摩擦係数をInfinityã«ã—ã¦ã‚‚症状ã¯å¤‰ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚何ã‹è¨å®šã—ãªã‘れã°ã„ã‘ãªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ã‚ã‚‹ã„ã¯åœ°é¢ã¨å›ºå®šã™ã‚‹ãŸã‚ã®è¨å®šæ–¹æ³•ã¿ãŸã„ãªã‚‚ã®ãŒã‚ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
Mommaã•ん,
よãã‚る質å•ã®ã€ŒA.6 Visual C++ Express Editionã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹æ–¹æ³•ã‚’æ•™ãˆã¦ãã ã•ã„.ã€ã«ãƒªãƒ³ã‚¯ã‚’ã¯ã‚Šã¾ã—ãŸï¼Ž
ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼Ž
Demuraã•ã¾
コメントã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼
ã”æŒ‡æ‘˜ã®ç®‡æ‰€ã€å¤‰æ›´ã—ã¾ã—ãŸã€‚
ã¾ãŸã€ç’°å¢ƒæ§‹ç¯‰ã«ã¤ã„ã¦ã‚‚ãƒˆãƒ”ãƒƒã‚¯ã«æŽ²è¼‰ã—ã¦ã¾ã™ã®ã§ã€å®œã—ã‹ã£ãŸã‚‰ãƒªãƒ³ã‚¯ã‚’å¼µã£ã¦ã„ãŸã ã‘れã°ã¨æ€ã„ã¾ã™ã€‚
Mommaã•ã¾ï¼Œ
æ‹è¦‹ã—ã¾ã—ãŸï¼Žé¢ç™½ãã†ã§ã™ã.ãŠç›†ã®ä¸ã‚’è¿·è·¯ã«ã—ã¦å³æ‰‹æ³•ã§è§£ã‘ã°è‡ªå‹•çš„ã«å‡ºå£ã«è¡Œã‘ãã†ã§ã™ï¼Ž
Visual C++ã‚’ãŠä½¿ã„ã¨ã®ã“ã¨ãªã®ã§ï¼Œç’°å¢ƒè¨å®šãªã©ã‚’書ã„ã¦é ‚ã‘れã°ç§ã®FAQã‹ã‚‰ãƒªãƒ³ã‚¯ã‚’ã¯ã‚Šã¾ã™ï¼Žå¤šãã®æ–¹ã®å‚考ã«ãªã‚‹ã¨æ€ã„ã¾ã™ï¼Žç§ã¯Visual C++ã¯ä½¿ã£ãŸã“ã¨ãŒãªã„ã®ã§ã‚ã‹ã‚Šã¾ã›ã‚“.
ã¾ãŸï¼Œãƒªãƒ³ã‚¯ã‚’ã¯ã£ã¦é ‚ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼Ždemura.netã¯å€‹äººçš„ãªã‚µã‚¤ãƒˆãªã®ã§å‡ºæ‘教授ã§ã¯ãªã「出æ‘ã•ã‚“ã€ã¾ãŸã¯ã€Œã§ã‚€ã•ã‚“ã€ãらã„ã«ã—ã¦é ‚ã‘ã‚‹ã¨ã‚りãŒãŸã„ã§ã™ï¼Ž
Demuraã•ã¾
公開許å¯ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ODEã«é–¢ã—ã¦ã¯æ‰‹æŽ¢ã‚Šã®çŠ¶æ…‹ã§ã€ODE本を片手ã«1ã¤ä½œæˆã§ããŸã¨ã“ã‚ã§ã™ã€‚
ãŠç›†ã®ä¸èº«ã‚’è¿·è·¯ã«ã—ã¦ã‚‚é¢ç™½ã„ã‹ãªã¨æ€ã£ã¦ã„ã¾ã™ã€‚
æ‹™ã®Webã¯URL欄ã«è¨˜è¼‰è‡´ã—ã¾ã—ãŸã€‚
ソースã¯è§£èª¬ã‚’å«ã‚ã¦å¾ã€…ã«è¨˜è¼‰ã—ã¦ã„ã予定ã§ã™ã€‚
開発ã¯Visual C++ 2005 EEã¨Ubuntuã§è¡Œãªã£ã¦ã„ã¾ã™ã®ã§ã€å‚™å¿˜éŒ²ã‚’å…¼ãã¦ç’°å¢ƒæ§‹ç¯‰ã‚’掲載ã—ã¦ã„ã¾ã™ã€‚
Mommaã•ん,
是éžã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’公開ã—ã¦ãã ã•ã„.楽ã—ã¿ã«ã—ã¦ã„ã¾ã™ï¼Ž
URLã‚’æ•™ãˆã¦ãã ã•ã„.
ã¾ãŸï¼Œdemura.netã¸ãƒªãƒ³ã‚¯ã‚’ã¯ã£ã¦é ‚ã‘ã‚‹ã¨ã‚りãŒãŸã„ã§ã™ï¼ŽODEを盛り上ã’ã¦ã„ãã¾ã—ょã†ï¼Ž
ã§ã¯
Lynã•ã‚“
ãŠå½¹ã«ç«‹ã¦ã¦è‰¯ã‹ã£ãŸã§ã™ï¼Ž
今後ã¨ã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ODE本をå‚è€ƒã«æ¥½ã—ã¾ã›ã¦é ‚ã„ã¦ã„ã¾ã™ã€‚
AMotorã®ã‚½ãƒ¼ã‚¹ã‚’å…ƒã«ã€è¡çªåˆ¤å®šç‰ã‚’è¿½åŠ ã—ã¦ã€ä¸Šã«ãŠç›†ã‚’載ã›ã¦çŽ‰ã‚’ã‚´ãƒã‚´ãƒè»¢ãŒã™éŠã³ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’作ã£ãŸã®ã§ã™ãŒã€æ”¹å¤‰ã—ãŸã‚½ãƒ¼ã‚¹ã®å…¬é–‹ã‚’ã—ã¦ã‚‚宜ã—ã„ã§ã—ょã†ã‹ã€‚ソースã®ã‚³ãƒ¡ãƒ³ãƒˆã‚„Webã§ã®è§£èª¬ã«è»¢ç”¨ã®æ—¨ã‚’記載ã™ã‚‹äºˆå®šã§ã™ã€‚
Demura ã•ã‚“ã€
é©åˆ‡ãªã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
æ•™ãˆã¦ã„ãŸã ã„ãŸãƒ†ã‚ストエディタã«ã‚ˆã‚Šhello.cppã®é‡åŠ›ã‚µã‚¤ãƒ³ã‚’å¤‰æ›´ã—上書ãä¿å˜ã—ãŸã¨ã“ã‚
upwardã«ãƒœãƒ¼ãƒ«ãŒè½ä¸‹(?) 出æ¥ã¾ã—ãŸã€‚
å†ç¾æ€§ã‚’確èªã™ã‚‹ãŸã‚NOTEPADã§å†åº¦ã‚³ãƒ³ãƒ‘イルã—ãŸã¨ã“ã‚å†ç¾ã—ã¾ã—ãŸã®ã§å‚考ã¾ã§ã«
エラーメッセージを書ã„ã¦ãŠãã¾ã™ã€‚
$ make
g++ -Wall -fno-exceptions -fno-rtti -g -DWIN32 -c hello.cpp -L../../drawstuff/src -L../../ode/src -L/usr/local/lib -I. -I../../include -I/usr/include
hello.cpp:1: error: stray ‘\239′ in program
hello.cpp:1: error: stray ‘\187′ in program
hello.cpp:1: error: stray ‘\191′ in program
make: *** [hello.o] Error 1
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼
ã“れã‹ã‚‰æœ€é©è»Œé“計画ã®ãƒ—ãƒã‚°ãƒ©ãƒ を作るã®ã§ã™ãŒã€é•·ã„é“ã®ã‚Šã«ãªã‚Šãã†ã§ã™ã€‚
Lynã•ん,
エラーメッセージを教ãˆã¦ãã ã•ã„.
全角ã®ç©ºç™½æ–‡å—ãŒå…¥ã£ãŸã‹ã‚‚ã—れã¾ã›ã‚“.全角文å—ãŒå…¥ã‚‹ã¨ã‚³ãƒ³ãƒ‘イルã«å¤±æ•—ã—ã¾ã™ï¼Ž
notepadã§ã¯ãªã,もã†å°‘ã—é«˜ã„æ©Ÿèƒ½ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚’ãŠä½¿ã„ã«ãªã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ï¼Ž
ç§ã®æŽˆæ¥ã§ã¯ãƒ•リーソフトTeraPad (http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html) を使ã£ã¦ã„ã¾ã™ï¼Ž
TeraPadã‚’ãŠä½¿ã„ã«ãªã‚‰ã‚Œã‚‹å ´åˆã¯ï¼Œè¡¨ç¤º(V)→オプション→表示ã§å…¨è§’空白ã«ãƒã‚§ãƒƒã‚¯ã‚’ã„れ,全角文å—ã‚’å…¨ã¦è¡¨ç¤ºã™ã‚‹ã‚ˆã†è¨å®šã—ã¦ãã ã•ã„.
demuraã•ã‚“
åˆæ©è³ªå•ã§æç¸®ãªã®ã§ã™ãŒã€ã‚µãƒ³ãƒ—ルã§ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ãŸhello.cpp file
ã®ã‚³ãƒ³ãƒ‘イル・実行ã¯å¯èƒ½ãªã®ã§ã™ãŒã€é‡åŠ›åŠ é€Ÿåº¦ã‚’notepadを使用ã—
変更後(ex1.3)ã€Makeコマンドã§ã‚³ãƒ³ãƒ‘イルãŒå‡ºæ¥ã¾ã›ã‚“。
ã“れã¯ãƒ•リーソフトã«ã‚ˆã‚‹åˆ¶é™ãªã®ã§ã—ょã†ã‹ï¼Ÿ
Kogasakã•ã‚“ã€
ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ã€‚
Windows XP + MinGW + MSys環境ã§ã¯å¤šãã®å®Ÿç¸¾ãŒã‚りã€ä»Šã¾ã§æŽˆæ¥ã§50å程度ã®å¦ç”ŸãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã¾ã—ãŸãŒå•題ã¯ã»ã¨ã‚“ã©ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ãã®ãŸã‚ã€ä¸å…·åˆã‚’å ±å‘Šã•れるã¨ãŠæ‰‹ä¸Šã’状態ã«ãªã‚Šã¾ã™ã€‚
何らã‹ã®ç†ç”±ã§ã‚·ã‚¹ãƒ†ãƒ ãŒæ£å¸¸ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã‹ã£ãŸã€ç’°å¢ƒå¤‰æ•°ãŒä»–ã®ã‚½ãƒ•トウェアã¨ã¶ã¤ã‹ã£ã¦ã„ã‚‹ã€ã‚ã‚‹ã„ã¯ã‚¦ã‚¤ãƒ«ã‚¹ã«æ„ŸæŸ“ã—ã¦ã„ã‚‹ãªã©ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ãŒã€åŽŸå› ãŒã¯ã£ãりã—ã¾ã›ã‚“。ãã®å ´åˆã€kogasakã•ã‚“ã®ã‚ˆã†ã«ã‚·ã‚¹ãƒ†ãƒ リカãƒãƒªã™ã‚‹ã—ã‹ä»–ã«æ‰‹æ®µã¯ã‚りã¾ã›ã‚“。ãれãŒä¸€ç•ªæ™‚間を節約ã™ã‚‹æ–¹æ³•ãªã®ã‹ã‚‚ã—れã¾ã›ã‚“。
ã¾ãŸã€ä½•ã‹å•題ãŒã‚れã°ã‚³ãƒ¡ãƒ³ãƒˆã‚’ãã ã•ã„。
ã”ä¸å¯§ãªã”指導ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ãã®å¾Œã€ä¸€é€±é–“ã‚’ã‹ã‘ã¦ã€ãƒ‘ソコンユーザカウント新è¨å®šã€ã‚·ã‚¹ãƒ†ãƒ リカãƒãƒªã€å¸¸é§ãƒ—ãƒã‚°ãƒ©ãƒ åœæ¢ã€Lhaplusã®è¨å®šå¤‰æ›´ç‰è€ƒãˆã‚‰ã‚Œã‚‹æ‰‹ã‚’æ¬¡ã€…ã«æ‰“ã£ã¦ã¿ã¾ã—ãŸã€‚
(ã”å‚考ã«ã€ä½¿ç”¨ã‚·ã‚¹ãƒ†ãƒ ã¯ã€Microsoft Windows XP, Home Edition V. 2002ã€Service Pack 2ã§ã™ã€‚)
ãã®çµæžœã€ä¸€éƒ¨æ‰‹é †æ›¸ã¨ç•°ãªã‚‹å¿œç”ãŒã‚ã‚‹ã‚‚ã®ã®ã€ä¸€å¿œä½œå‹•ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚
何ãŒåŽŸå› ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ãるよã†ã«ãªã£ãŸã®ã‹ã€å¤šãã®ã“ã¨ã‚’やりã™ãŽã¦ã‚ˆãã‚ã‹ã‚‰ãªã„ã®ãŒæ®‹å¿µã§ã™ã€‚
ã„ãšã‚Œã«ã›ã‚ˆã“ã“ã¾ã§ã“れãŸã®ã¯ã€å¾¡åŠ©è¨€ã«åбã¾ã•れãŸã“ã¨ã«ã‚ˆã‚‹ã‚‚ã®ã¨æ„Ÿè¬ã—ã¦ãŠã‚Šã¾ã™ã€‚
今後ã¨ã‚‚ã€ã‚ˆã‚ã—ããŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
kogasak
ã§ã‚€ã§ã™ï¼Ž
Kogasakã•ã‚“ã‹ã‚‰ä»¥ä¸‹ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’é ‚ãã¾ã—ãŸï¼Ž
拙著をã”è³¼å…¥é ‚ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã•ã¦ï¼ŒODE講座2ã§ã¯ãªã,以下ã®URLã®æ‰‹é †ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ã—ã¦é ‚ã‘ã¾ã™ã‹ï¼Ÿ
授æ¥ã®éš›ï¼Œï¼’5å程度ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã¨ãã¯å•題ãªãã§ãã¾ã—ãŸï¼Ž
http://demura.net/archives/9ode/odewindows-1.html
ãã®ã¨ã,mingwã¨msysã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯æŒ‡ç¤ºã®ã¨ãŠã‚Šã—ã¦ãã ã•ã„.新ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™ã¨å‹•ã‹ãªã„å ´åˆãŒã‚りã¾ã—ãŸï¼Ž
ã¾ãŸï¼Œcygwinã®ç’°å¢ƒã¨æ··åœ¨ã—ã¦ã„ãªã„ã§ã—ょã†ã‹ï¼Ÿ
ã¡ãªã¿ã«ç§ã®ç’°å¢ƒã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™ï¼Ž
Windows XP Professional SP2
MinGW 5.1.0
MSYS 1.0.10
ã”é¢å€’ã§ã‚‚今一度,上ã®URLã®ã¨ãŠã‚Šä½œæ¥ã‚’ã—,cygwinã®ç’°å¢ƒã¨æ··åœ¨ã—ã¦ã„ã‚‹å ´åˆã¯ä¸€æ™‚çš„ã«c:\cygwinã®åå‰ã‚’c:\cygwin1ãªã©ã¨ã—,å‚考ã¾ã§ã«ç’°å¢ƒã‚’æ•™ãˆã¦ãã ã•ã„.
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ODEã®å…¥ã‚Šå£ã§ã¤ã¾ãšã„ã¦ã„ã¾ã™ã€‚
出æ‘先生ã®â€™ãƒãƒœãƒƒãƒˆã‚·ãƒ¥ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³â€™ã‚’購入ã—ã€ï¼¯ï¼¤ï¼¥äºŒæŒ‘戦ã—よã†ã¨ã—ã¦ã„ã¾ã™ãŒã€ã“ã®10æ—¥ã»ã©ï¼ï½‰ï½Žï¼§ï¼·é–‹ç™ºç’°å¢ƒã‚’インストールã—よã†ã¨ã‚らゆる考ãˆã‚‰ã‚Œã‚‹æ‰‹ã‚’å°½ãã—ã¦ã„ã¾ã™ãŒæ¯ãŒç«‹ã¡ã¾ã›ã‚“。
OSã¯ã€WindowsXPã§ã™ã€‚
ODE講座2ã«ç¤ºã•れã¦ã„ã‚‹æ‰‹é †ã‚’å¿ å®ŸãŸã©ã£ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä½œæ¥ã‚’ã—ã¦ã„ã¾ã™ãŒã€makeã®æ®µéšŽã§æ¯Žå›žã‚¹ãƒˆãƒƒãƒ—ã—ã¾ã™ã€‚
ストップã®ãŸã³ã«ãƒ—ãƒã‚°ãƒ©ãƒ ã®å‰Šé™¤ãŠã‚ˆã³å¿…è¦ãƒ•ァイルã®å†ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã‹ã‚‰ã‚„り直ã—ã¦ã„ã¾ã™ãŒã€æ¯Žå›žmakeã®æ®µéšŽã§ã¤ãŽã®ã„ãšã‚Œã‹ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒã§ã¾ã™ã€‚
 *** No rule to make target ‘../configure in’ needed by ‘Makefile.in’. Stop
*** No targets specified and no makefile found. Stop
ode-src-0.8.zip ã®è§£å‡ã¯ï¼¬ï½ˆï½ï½ï½Œï½•sã®è¨å®šã‚’サブフォルダã¾ã§è§£å‡ã™ã‚‹ã‚ˆã†ã«ã—ã€ã¾ãŸã‚¦ã‚¤ãƒ«ã‚¹ã‚½ãƒ•ãƒˆã‚‚åœæ¢çŠ¶æ…‹ã«ã—ãŸã‚Šã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’トライã—ã¦ã„ã¾ã™ãŒå‰é€²ã—ã¾ã›ã‚“。
以上ã§ã™ãŒã€è§£æ±ºæ³•ã‚’ã”æŒ‡å°Žã„ãŸã ã‘ã¾ã›ã‚“ã§ã—ょã†ã‹ã€‚     kogasak
Partizansã•ん,
返事ãŒå¤§å¤‰é…ããªã‚Šã”ã‚ã‚“ãªã•ã„.ãƒãƒœã‚«ãƒƒãƒ—,å¦ä¼šï¼ŒODE本ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ç·¨é›†ä½œæ¥ã¨ã„ã‚ã„ã‚ã‚りã¾ã—ãŸï¼Ž
先週,講義ã§ã“ã®ã‚¦ã‚§ãƒ–ã‚µã‚¤ãƒˆã«æ›¸ã„ã¦ã‚ã‚‹ã¨ãŠã‚Šã«å¦ç”Ÿã«ã‚„ã£ã¦ã‚‚らã„ã¾ã—ãŸãŒï¼Œç´„3ï¼åã¨ã‚‚å•題ãªãインストールã§ãã¾ã—ãŸï¼ŽMinGW,MSYSãŒä½•らã‹ã®ç†ç”±ã§ã†ã¾ãインストールã•れãªã‹ã£ãŸã¨æ€ã‚れã¾ã™ãŒï¼Œå…¨ã¦å‰Šé™¤ã—,å†èµ·å‹•ã—ã¦ã‹ã‚‰å†åº¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚‚状態ãŒå¤‰ã‚らãªã„よã†ãªã‚‰é•ã†ç†ç”±ã‚‚考ãˆã‚Œã‚‰ã‚Œã¾ã™ï¼Ž
ã“れ以上ã¯ã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“.解決ã•れã¦ã„れã°ã‚ˆã„ã®ã§ã™ãŒï¼Ž
Partizansã•ã‚“ã€
解決ã§ãã‚‹ã‹ã§ãã‚‹ã‹ã©ã†ã‹ã‚ã‹ã‚Šã¾ã›ã‚“ãŒã€ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚講義ã§ã‚‚使ã£ã¦ã„ã¾ã™ãŒã€ã“ã®ã‚ˆã†ãªç—‡çжã¯åˆã‚ã¦ã§ã™ã€‚
ã•ã¦ã€ç§ã«ã¯mingwã«ãªã‚“らã‹ã®å•題ãŒã‚ã‚‹ã¨æ€ã‚れã¾ã™ã€‚ç§ã®ç’°å¢ƒã¯ã€Partizansã•ã‚“ã¨å…¨ãåŒã˜ã§ã™ã‹ã‚‰ã€‚
ãŠæ‰‹æ•°ã§ã™ãŒä»¥ä¸‹ã‚’試ã—ã¦é ‚ã‘ã¾ã™ã‹ï¼Ÿ
1. ç°¡å˜ãªC言語ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’mingw+msys環境ã§ã‚³ãƒ³ãƒ‘イルã§ãã‚‹ã‹ï¼Ÿ
2./bin/shã¯ã‚ã‚‹ã‹ï¼Ÿ
2.ode-0.8/config.logã‚’é€ã£ã¦ãã ã•ã„。
3.æ€ã„切ã£ã¦ã€mingwã¨msysを完全ã«å‰Šé™¤ã—ã€ã¾ãŸå…¥ã‚Œç›´ã™ã€‚Cドライブã®ç›´ä¸‹ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚
å¾¡è¿”äº‹ã‚’é ‚ã„ã¦ã‚‚ã€ãƒãƒœã‚«ãƒƒãƒ—ジャパンオープン直å‰ã§ã€ã¦ã‚“ã¦ã“舞ãªã®ã§å›žç”ãŒé…れるã‹ã‚‚ã—れã¾ã›ã‚“。ã”ã‚ã‚“ãªã•ã„。
ãŠä¸–話ã«ãªã‚Šã¾ã™ã€Partizansã§ã™ã€‚
ç§ã¯ãƒãƒœãƒƒãƒˆã®ãƒã®å—も知らãªã„ã—ã€ä»•事ã¨ã‚‚ã¾ã£ãŸã関係ãªã„ã§ã™ãŒã€
C言語ã§ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°å‡ºæ¥ã‚‹ãƒãƒœãƒƒãƒˆãŒã‚ã‚‹ã®ã‚’知りã€ãれを検索ã—ã¦ã„ãŸã¨ã“ã‚ODEã¨ã„ã†ã®ãŒã²ã£ã‹ã‹ã‚Šã¾ã—ãŸã€‚ã¨ã„ã†ã‹ã€è²´ã‚µã‚¤ãƒˆãŒè¦‹ã¤ã‹ã£ãŸè¨³ã§ã™ï¼¾ï¼¾ã€‚ODEã ã‘ã§ã¯ãªãã€MinGW+Msysã•ãˆåˆè€³ã§ã™ã€ã€ã€ï¼ï¼ï¼›
ã§ã™ã®ã§ã€ä¸€é€£ã®ä½œæ¥ã¯ã€è²´ã‚µã‚¤ãƒˆã®ODEã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã‚’å‚ç…§ã—ã¾ã—ãŸã€‚
ä»¥ä¸‹ã®æ‰‹é †ã§ã™ã€‚
1.MinGWã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«
ã€€â‘ å ´æ‰€ï¼šD:/MinGW
 ②Version:5.1.3
2.Msysã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«
ã€€â‘ å ´æ‰€ï¼šD:/msys
 ②Version:1.0
ã“ã“ã¾ã§ã¯æ£å¸¸ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸã¨æ€ã„ã¾ã™ï¼ˆMsysãŒæ£å¸¸ã«å‹•ã„ãŸã®ã§ï¼‰ã€‚最åˆã¯ã€Cドライブã®ç›´ä¸‹ã§ã¯ãªã„ã¨ã¾ãšã„ã¨æ€ã£ãŸã®ã§ã™ãŒã€ä¸Šè¨˜ã®2ã¤ã‚’Cドライブã®ç›´ä¸‹ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚‚åŒã˜ã§ã—ãŸã€‚
3.ODE-0.8 ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«
 ①ODE-src-0.8ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰
 ②+Lhacaã§è§£å‡å¾Œã€ç”Ÿæˆã•れãŸODE-0.8をフォルダã”ã¨ã€
  D:\msys\1.0\home\ユーザå\src\ã«ã‚³ãƒ”ー
 以下msysã§å®Ÿè¡Œ…
 ③$cd src(return) ⇒$cd ODE-0.8(return),ã§ODE-0.8フォルダã«ç§»å‹•
 ④$./configure –enable-double-precision(return)
  ã¨ã™ã‚‹ã¨ã€è¨³ã®åˆ†ã‹ã‚‰ãªã„メッセージãŒã„ã£ã±ã„出ã¦ãã‚‹.
ã“ã“ã§ã‚„ãŸã‚‰ã«æ°—ã«ãªã‚‹ã®ã¯ã€
  configure : error : can not run /bin/sh ./config.sub
ã¨ã„ã†ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ã€‚
 ⑤プãƒãƒ³ãƒ—ãƒˆã«æˆ»ã£ãŸã‚‰ã€$make(return) を実施ã—ã¾ã—ãŸãŒã€çµæžœã¯ã”å˜çŸ¥ã®é€šã‚Šã§ã™ã€‚
ã”質å•ã®ï¼‘ã§ã™ãŒã€ODE-0.7も試ã—ãŸã»ã©ã§ã™ã‹ã‚‰ã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã®ä¸å分ã•ã¯ãªã„ã¨æ€ã„ã¾ã™ã€‚è§£å‡ã«é–¢ã—ã¦ã¯å†åº¦è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚
ã”質å•ã®ï¼’ã§ã™ãŒã€ä¸Šè¨˜ã®æ‰‹é †é€šã‚Šã‚„りã¾ã—ãŸã®ã§å•題ãªã„ã¯ãšã§ã™ã‚ˆã?
OSã¯ã€Windows XP professionalã§ã™ã€‚
ãŠå¿™ã—ã„ã¨ã“ã‚申ã—訳ã‚りã¾ã›ã‚“ãŒã€ã”è¿”äº‹é ‚ã‘ã‚Œã¨æ€ã„ã¾ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
partizansã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚何ãŒãã£ã‹ã‘ã§ODEを知られãŸã®ã§ã™ã‹ï¼Ÿ
オープンソースã§ã™ã—ã€ãŠæ‰‹è»½ã«ä½¿ãˆã‚‹ã®ã§ã€è¦šãˆã‚‹ã¨é‡å®ã™ã‚‹ã¨æ€ã„ã¾ã™ã€‚
ã•ã¦ã€Windowã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨å®Ÿéš›ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’詳ã—ãæ•™ãˆã¦ãã ã•ã„。
ã¾ãŸã€ã‚¨ãƒ©ãƒ¼ã‚’ã¿ã‚‹ã¨makefileãŒãªã„よã†ã§ã™ã。
1. ODEソースファイルã®è§£å‡ã«å¤±æ•—ã€ã¾ãŸã¯å®Œå…¨ã«ã—ã¦ã„ãªã„。ã¾ãŸã¯ã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ãã®ã‚‚ã®ãŒä¸å®Œå…¨ã€‚
  ダウンãƒãƒ¼ãƒ‰ã‚’å†åº¦ã—ã€è§£å‡ãŒå®Œå…¨ã«ã•れã¦ã„ã‚‹ã‹ç¢ºèªã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚
2.makeコマンドを入力ã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒé•ã†ã€‚
  ode-0.8ã®ã™ã下ã§å®Ÿè¡Œã—ã¾ã—ãŸã‹ï¼Ÿ
ã¯ãšã˜ã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ä¸Šã®ï¼’点ãŒè€ƒãˆã‚‰ã‚Œã‚‹ã®ã§ç¢ºã‹ã‚ã¦ãã ã•ã„。
ã“ã‚“ã«ã¡ã¯ã€
先週ODEã¨ã„ã†ã‚‚ã®ã‚’知ã£ãŸã°ã‹ã‚Šã§ã™ã€ã€ã€ï¼ˆï¼ï¼ï¼›ï¼‰
興味ãŒã‚ã„ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—よã†ã¨ã—ã¦ã‚‹ã‚“ã§ã™ãŒã€ã†ã¾ãã„ã£ã¦ã¾ã›ã‚“。
Windowsã®MinGW+Msysã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¾ã§ã¯OK。
ODE0.8ã®Configurationã‹ã‚‰ã†ã¾ãã„ã£ã¦ãªã„よã†ã§ã€
makeã—よã†ã¨ã™ã‚‹ã¨ã€
No targets specified and no makefile fonund.Stop
ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¾ã™ã€‚
ã©ã†ã™ã‚Œã°ã„ã„ã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€ã•ん,
ã¨ã¦ã‚‚ä¸å¯§ãªå›žç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
質å•1ã§ã™ãŒï¼Œå›žç”ã©ãŠã‚Šã«ãƒœãƒ‡ã‚£ã‚’è¨å®šã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ï¼Œ
解決ã™ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸï¼Ž
質å•ï¼’ã§ã™ãŒï¼ŒæŒ¯å‹•を回é¿ã™ã‚‹ã‚ˆã†ã«æ‘©æ“¦ã‚’入れるãªã©ã®å‡¦ç†ã‚’ã‚„ã£ã¦ã¿ã¾ã™ï¼Ž
ODE本ãŒå‡ºç‰ˆã•れるã®ã‚’å¾…ã¡æœ›ã‚“ã§ã„ã¾ã™ï¼Ž
大変ã ã¨æ€ã„ã¾ã™ãŒï¼Œé ‘å¼µã£ã¦ãã ã•ã„.
sagaã•ん,
「ODEよãã‚る質å•ã€ãŒå‚考ã«ãªã‚‹ã¨ã„ã†æ„見,ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Žä½œã£ãŸç”²æ–ãŒã‚ã£ãŸã¨ã„ã†ã‚‚ã®ã§ã™ï¼ŽæŽˆæ¥ã§ODEã‚’æ•™ãˆã¦ã„ã‚‹ã®ã§åˆå¿ƒè€…ã®è³ªå•ã¯ã¨ã¦ã‚‚è²´é‡ã§ã™ï¼Žé æ…®ãªãèžã„ã¦ãã ã•ã„.
ã•ã¦ï¼Œã”質å•ã«å›žç”ã—ã¾ã™ï¼Ž
1.ODEã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆï¼ˆé–¢ç¯€ï¼‰ã¯å˜ãªã‚‹åˆ¶ç´„ãªã®ã§ç‰©ç†çš„ãªå®Ÿä½“ã¯ã‚りã¾ã›ã‚“ã®ã§ï¼Œè³ªé‡ã‚’è¨å®šã™ã‚‹APIã¯ã‚りã¾ã›ã‚“.ãŸã ã—,ジョイントã®ã‚ã‚‹ä½ç½®ï¼ˆã‚¢ãƒ³ã‚«ãƒ¼ï¼‰ã«ãƒœãƒ‡ã‚£ï¼ˆå‰›ä½“)を作り,ãã®ãƒœãƒ‡ã‚£ã¯éš£æŽ¥ã—ãŸãƒœãƒ‡ã‚£ã¨æŽ¥è§¦åˆ¤å®šã‚’ã—ãªã„ã¨ã„ã†ã‚ˆã†ã«ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã™ã‚Œã°ç›®çš„ã¯é”æˆã§ãã‚‹ã¨æ€ã„ã¾ã™ï¼Žã“ã®ç¨‹åº¦ã®å›žç”ã§è§£æ±ºã§ãã¾ã™ã‹ï¼Ÿã€€ä¸å分ãªå ´åˆã¯æ ¡æ£ãŒçµ‚ã‚ã£ãŸã‚‰è¨˜äº‹ã‚’書ãã¾ã—ょã†ï¼Ž
2.トルク制御ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ を掲載ã—よã†ã¨ã—ã¦ã„ã¾ã—ãŸãŒï¼Œæœ¬ã®æ ¡æ£ãŒå¤§è©°ã‚を迎ãˆã¦ã„ã‚‹ã®ã§ã‚µãƒœã£ã¦ã„ã¾ã™ï¼ŽODE講座16ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã®ä»¥ä¸‹ã®éƒ¨åˆ†ã®ä¸‹ã‹ã‚‰ï¼“,4行目ã«ã‚る,dJointSetHingeParam(joint[j], dParamVel, k1*z); // 角速度ã®è¨å®š
dJointSetHingeParam(joint[j], dParamFMax, fMax); // 最大トルクã®è¨å®š
ã®ï¼’行を消ã—ã¦ï¼Œä»£ã‚りã«ä»¥ä¸‹ã®è¡Œã‚’挿入ã—ã¦ãã ã•ã„.ãªãŠï¼Œå¿…è¦ãªãƒˆãƒ«ã‚¯ã®å€¤ã¯ã”自分ã§è¨å®šã—ã¦ãã ã•ã„.
dJointAddHingeTorque(joint[j], å¿…è¦ãªãƒˆãƒ«ã‚¯ã®å€¤);
// P制御
void control() {
static int step = 0; // シミュレーションã®ã‚¹ãƒ†ãƒƒãƒ—æ•°
double k1 = 10.0, fMax = 100.0; // k1:比例ゲイン, fMax:最大トルク[Nm]
printf(“\r%6d:”,step++);
for (int j = 1; j < NUM; j++) {
double tmpAngle = dJointGetHingeAngle(joint[j]); // ç¾åœ¨ã®é–¢ç¯€è§’[rad]
double z = THETA[j] – tmpAngle; // z: 残差=目標関節角ï¼ç¾åœ¨é–¢ç¯€è§’
dJointSetHingeParam(joint[j], dParamVel, k1*z); // 角速度ã®è¨å®š
dJointSetHingeParam(joint[j], dParamFMax, fMax); // 最大トルクã®è¨å®š
}
}
ãŸã ã—,ã“れã ã‘ã§ã¯æŒ¯å‹•ã—ã¾ã™ã®ã§ï¼Œå›žé¿ã™ã‚‹ãŸã‚ã«ã¯é–¢ç¯€ã«æ‘©æ“¦ã‚’入れるãªã©ã®å‡¦ç†ãŒå¿…è¦ã§ã™ï¼Žæ ¡æ£ä½œæ¥ãŒçµ‚ã‚ã£ãŸã‚‰ã‚¢ãƒƒãƒ—ã—ã¾ã™ã.
ã¯ã˜ã‚ã¾ã—ã¦ã€‚sagaã¨ç”³ã—ã¾ã™ã€‚
最近ODEã‚’ã¯ã˜ã‚ã¾ã—ãŸã€‚
ã“ã®ã‚µã‚¤ãƒˆã‚’å‚考ã«ã•ã›ã¦ã‚‚らã£ã¦ã„ã¾ã™ï¼ˆç‰¹ã«ã€ŒODEよãã‚る質å•ã€ã¯å‚考ã«ãªã‚Šã¾ã™ï¼‰ã€‚
以下ã®ï¼’ã¤ã®è³ªå•ãŒã‚りã¾ã™ã€‚
・ジョイントã«è³ªé‡ã‚’è¨å®šã—ãŸã„ã®ã§ã™ãŒã€ã©ã†ã‚„ã£ãŸã‚‰ã§ãã‚‹ã®ã§ã—ょã†ã‹ã€‚
・トルク制御をã—ãŸã„ã¨æ€ã£ã¦ã„ã¾ã™ã€‚dJointAddHingeTorque()を使ã†ã¨ã„ã†ã“ã¨ã§ã™ãŒã€
プãƒã‚°ãƒ©ãƒ 例ãŒã‚ã‚Œã°æ•™ãˆã¦ã‚‚らãˆãªã„ã§ã—ょã†ã‹ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ゆã†ã•ん,
解決ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
Gimpactã¯å˜ç²¾åº¦ã§ãªã„ã¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ããªã„ã®ã§ï¼Œã¾ã 試ã—ã¦ã„ã¾ã›ã‚“ï¼Žã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ã‚„ã‚‰ã‚Œã‚‹å ´åˆã¯ï¼Œç²¾åº¦ã®é«˜ã„å€ç²¾åº¦ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ï¼Ž
ã¾ãŸï¼Œãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã«ã‚ˆã‚‹ã¨è¡çªæ¤œå‡ºè¨ˆç®—ã«é–¢ã—ã¦ã¯Bulletã®ãƒ©ã‚¤ãƒ–ラリã¨çµ±åˆã™ã‚‹è©±ã‚‚ã§ã¦ãã¦ãŠã‚Šï¼Œä»Šå¾Œå¤§ãã変ã‚ã‚‹ã¨ã“ã‚ã ã¨æ€ã„ã¾ã™ï¼Ž
ã¾ãŸï¼Œä½•ã‹ã‚ã£ãŸã‚‰æŠ•稿ã—ã¦ãã ã•ã„.
ã“ã‚“ã«ã¡ã¯ã€‚
固定ジョイントã«ã—ãŸæ‰€ã€ç„¡äº‹å‹•ãã¾ã—ãŸï¼
最åˆGIMPACTを使ã£ã¦ã„ãŸã®ã§ã™ãŒã€ã™ãã«é›¢ã‚Œã¦ã—ã¾ã£ãŸã‚Šã—ã¦ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦é•ã†ã®ã§ãªã‹ãªã‹é›£ã—ã„ã§ã™ã。
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã“れã‹ã‚‰ã‚‚ï¼¯ï¼¤ï¼¥è¬›åº§é ‘å¼µã£ã¦ãã ã•ã„ï¼
地é¢ã¨åŒæ§˜ã«nearCallBack関数を作æˆã—ã¦ã‚‚,ãã£ã¤ã‹ãªã„ã¨æ€ã„ã¾ã™ï¼Ž
ãã“ã§ã¯æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’使ã£ã¦ã„ã¾ã™ã‹ã‚‰ï¼Ž
以下ã¯ã©ã†ã§ã—ょã†ã‹ï¼Ÿ
ãŸã ã—,ã“れã¯åœ°é¢ãŒé³¥ã‚‚ã¡çŠ¶æ…‹ã§ã™ï¼Žãƒãƒƒãƒˆã«ãã£ã¤ã‘ãŸã„ãªã‚‰groundã‚’ãƒãƒƒãƒˆã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªIDã«å¤‰æ›´ã—ã¦ãã ã•ã„.
試ã—ãŸã‚‰çµæžœã‚’æ•™ãˆã¦ãã ã•ã„ã.
static void nearCallback(void *data, dGeomID o1, dGeomID o2)
{
const int N = 10;
dContact contact[N];
int isGround = ((ground == o1) || (ground == o2));
int n = dCollide(o1,o2,N,&contact[0].geom,sizeof(dContact));
if (isGround) {
for (int i = 0; i < n; i++) {
contact[i].surface.mode = dContactBounce|dContactSoftERP|dContactSoftCFM;
contact[i].surface.bounce = 1.0; // (0.0~1.0)
contact[i].surface.bounce_vel = 0.0;
contact[i].surface.soft_erp = 1.0;
contact[i].surface.soft_cfm = 0.0;
//dJointID c = dJointCreateContact(world,contactgroup,&contact[i]);
// dJointAttach (c,dGeomGetBody(contact[i].geom.g1),
   // dGeomGetBody(contact[i].geom.g2));
fixed[i] = dJointCreateFixed(world,contactgroup);
dJointAttach (fixed[i],dGeomGetBody(contact[i].geom.g1),
dGeomGetBody(contact[i].geom.g2));
dJointSetFixed(fixed[i]);
}
}
}
ã“ã‚“ã°ã‚“ã¯ã€‚
ã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ボールãŒãƒãƒƒãƒˆã«ãã£ã¤ãã¨ã„ã†ã®ã¯ã€ã§ã‚€ã•ã‚“ãŒãŠã£ã—ゃるよã†ã«
両者をfixedジョイントã‹ä½•ã‹ã§å®Œå…¨ã«çµåˆã•ã›ã‚‹ã¨ã„ã†æ„味ã§ã™ã€‚
地é¢ã¨åŒã˜ã‚ˆã†ã«ã‚„ã£ã¦ã„ã‚‹ã¤ã‚‚りãªã®ã§ã™ãŒã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚