ODE質å•ãƒ»è¦æœ›å‹Ÿé›†2ï¼
ODEã®è³ªå•ãƒ»è¦æœ›å‹Ÿé›†ã®ã‚³ãƒ¡ãƒ³ãƒˆç·æ•°ãŒï¼•ï¼ä»¶ã‚’è¶…ãˆã¾ã—ãŸï¼Žæœ¬å½“ã«ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Žã‚³ãƒ¡ãƒ³ãƒˆãŒé•·ããªã‚Šèªã¿ã¥ã‚‰ããªã‚Šã¾ã—ãŸã®ã§æ–°ãŸãªè³ªå•ãƒ»è¦æœ›ã¯æœ€æ–°ã®ODE質å•ãƒ»è¦æœ›å‹Ÿé›†â—‹ï¼ã«æŠ•稿ã—ã¦ãã ã•ã„.
ãªãŠï¼Œå»¶ã³å»¶ã³ã«ãªã£ã¦ã„ãŸåˆå¿ƒè€…用ODE本ã®åŽŸç¨¿è„±ç¨¿ãŒï¼™æœˆæœ«ã¨ãªã‚Šã¾ã—ãŸï¼Žã§ãã‚‹ã ã‘è‰¯ã„æœ¬ã«ã—ãŸã„ã®ã§èª¬æ˜Žã—ã¦æ¬²ã—ã„ã¨ã“ã‚ãŒã‚れã°ã‚³ãƒ¡ãƒ³ãƒˆã—ã¦é ‚ã‘れã°ã‚りãŒãŸã„ã§ã™ï¼Ž
ã•ã£ããï¼Œä»¥ä¸‹ã«æŽ²è¼‰ã—ãŸã†ãˆã®ã•ã‚“ã®ã”質å•ã«å›žç”ã—ã¦ã„ããŸã„ã¨æ€ã„ã¾ã™ï¼Ž
| ã“ã‚“ã°ã‚“ã¯ã€‚
物体ã¨ç‰©ä½“ã®ã‚³ãƒ³ã‚¿ã‚¯ãƒˆæ™‚ã§ã® å‹•ã„ã¦ã‚‹ç´°é•·ã„æ¿(Trimesh)ã®ç¸¦é•·ã®é¢ã‚’常㫠ã¾ãšæ¿ã®å§¿å‹¢ã‚’dBodyGetRotationã§ â‘ FDir1ã®åž‹ã¯dVector3ã¨ã„ã†ã“ã¨ãªã®ã§ã™ãŒ â‘¡å‹•ã„ã¦ã„る物体を元ã«ã—ã¦FDir1ã‚’è¨å®šã™ã‚‹ã«ã¯ â‘¡ã‚‚ã—ã‹ã—ã¦ã€ãã‚‚ãã‚‚FDir1ã‚’å‹•ã„ã¦ã„ã‚‹ 以上ã€ã¡ã‚‡ã£ã¨ã‚ã‹ã‚Šã«ãã„æ–‡ç« ã‹ã¤ã€ ã†ãˆã® |
ã†ãˆã®ã•ん,毎度ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
â‘ ã®å›žç”:fdir1ã¯ç¬¬ï¼‘摩擦方å‘ã§ï¼Œå˜ä½ãƒ™ã‚¯ãƒˆãƒ«ã‹ã¤æŽ¥è§¦ç‚¹ã®æ³•ç·šæ–¹å‘ã¨åž‚ç›´ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“.æˆåˆ†ã¯ï¼“ã¤ã‚り,ãã®å˜ä½ãƒ™ã‚¯ãƒˆãƒ«ã®x,y,z軸æˆåˆ†ã§ã™ï¼Žã¾ãŸï¼Œã“れをè¨å®šã™ã‚‹ãŸã‚ã«ã¯dContactFdir1ã®ãƒ•ラグを立ã¦ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ï¼Ž
â‘¡ã®å›žç”: ã„ã‚ã„ã‚ãªæ–¹æ³•ãŒã‚ã‚‹ã‹ã¨ã¯æ€ã„ã¾ã™ãŒå§¿å‹¢ã‚’知るã«ã¯dBodyGetRotationã‹dBodyGetQuaternionを通常使用ã™ã‚‹ã¨æ€ã„ã¾ã™ï¼Žãã®ä»–,ボディã«ãƒ’ンジジョイントãŒã‚ã‚‹ãªã‚‰è»¸ã®æ–¹å‘ベクトルを利用ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ï¼Ž
â‘¢ã®å›žç”: 一般的ã‹ã©ã†ã‹ã‚ã‹ã‚Šã¾ã›ã‚“ãŒï¼Œå…¨æ–¹å‘移動ãƒãƒœãƒƒãƒˆã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ã‚’作æˆã™ã‚‹ã¨ãã«fdir1ã‚’è¨å®šã—ãŸã“ã¨ãŒã‚りã¾ã™ï¼Ž
以上ã§ã™ï¼Ž
ã¯ã˜ã‚ã¾ã—ã¦CohCohã¨ç”³ã—ã¾ã™.
早速ã§ã™ãŒå¹¾ã¤ã‹è³ªå•ã‚’ã•ã›ã¦ä¸‹ã•ã„.
ODEã§ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’行ã„,
ãã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³çµæžœã‚’å…ƒã«æœ€é©åŒ–計算を行ã£ã¦
目的ã®å€¤ã‚’å¾—ã‚‹ã¨ã„ã†ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã—ãŸã®ã§ã™ãŒ,
=====================================
é–‹å§‹
↓
é©å½“ãªå€¤ã‚’åˆæœŸå€¤ã¨ã—ã¦è¨å®š
↓
ãã®å€¤ã‚’å…ƒã«ODEã§ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³(A)
↓
ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³çµæžœã‚’評価関数ã«å…¥ã‚Œè¨ˆç®—
↓
評価関数ã®è¨ˆç®—çµæžœã‚’å…ƒã«,
ODEã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ãƒ¼ã«æ¸¡ã™å€¤ã‚’æ›´æ–°
↓
評価関数ã®å€¤ãŒå分å°ã•ããªã‚‹ã¾ã§,
(A)ã«æˆ»ã‚Šç¹°ã‚Šè¿”ã™ã€‚
↓
評価関数ã®å€¤ãŒå分å°ã•ããªã£ãŸã‚‰,
ãã®æ™‚ODEシミュレーターã«ä¸ŽãˆãŸå€¤ã‚’プãƒãƒƒãƒˆ
↓
終了
=====================================
ã¨ã„ã†æ§‹é€ ã®ç‚º,
状態をæç”»ã™ã‚‹ãŸã‚ã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’作æˆã™ã‚‹,
dsSimulationLoop()
ã§ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ«ãƒ¼ãƒ—ã§ã¯æœ€é©åŒ–計算ä¸ã«ä½•度も,
ウィンドウを作æˆ
↓
シミュレーション
↓
ウィンドウを閉ã˜ã‚‹
ã¨ã„ã†, 実際必è¦ãªã®è¨ˆç®—ã¨ã¯é–¢ä¿‚ãªã„部分ã®å‡¦ç†ã§,
大ãã計算時間をãƒã‚¹ã—ã¦ã—ã¾ã„ã¾ã™ã€‚
ãã“ã§, ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®æç”»ã‚’è¡Œã‚ãš,
シミュレーションã®ãƒ«ãƒ¼ãƒ—ã®ã¿ã‚’実行ã™ã‚‹é–¢æ•°ã¯,
ODEã«å‚™ã‚ã£ã¦ã„ãªã„ã®ã§ã—ょã†ã‹.
è‹¥ã—ãã¯, æç”»ã‚’OFFã«ã™ã‚‹æ–¹æ³•を御å˜ã˜ã§ã—ãŸã‚‰,
æ˜¯éžæ•™ãˆã¦ä¸‹ã•ã„.
ãŠç”ãˆã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
返信é…ããªã£ã¦ã—ã¾ã„申ã—訳ã‚りã¾ã›ã‚“。
力をループ毎ã«ã‹ã‘ã¦ã‚„ã£ãŸã‚‰çƒãŒæ¢ã¾ã‚Šã¾ã—ãŸã€‚よã‹ã£ãŸã§ã™ã€‚
ã¡ã‹ã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
è¡çªæ¤œå‡ºã«é–¢ã—ã¦ã¯nearCallãŒé‡è¦ãªã®ã§ã€ãŠæ‰‹æ•°ã§ã™ãŒãƒ—ãƒã‚°ãƒ©ãƒ 一å¼ã‚’tarã‚„lzhãªã©ã§å›ºã‚ãƒ¡ãƒ¼ãƒ«ã«æ·»ä»˜ã—ã¦é€ä»˜ã—ã¦é ‚ã‘ã¾ã™ã‹ï¼Ÿã€€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ãƒˆãƒƒãƒ—ページã®Profile→連絡先ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã‚りã¾ã™ã€‚
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ã“れã¾ã§æ©Ÿæ§‹è§£æžã«DADSを使用ã—ã¦ã„ã¾ã—ãŸãŒODEを試ã—ã¦ã¿ã‚ˆã†ã¨ã¯ã˜ã‚ã¾ã—ãŸã€‚
ã ã„ãŸã„使ãˆã‚‹ã‚ˆã†ã«ãªã£ãŸã®ã§ã€è¤‡é›‘ãªå½¢çжã«ã‚¢ã‚¿ãƒƒã‚¯ã—よã†ã¨æ€ã„ã¾ã—ãŸãŒ
躓ã„ã¦ã—ã¾ã„ã¾ã—ãŸã€‚ãŠåŠ©ã‘ãã ã•ã„。
一ã¤ã®bodyã«è¤‡æ•°ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’æŒãŸã›ãŸã„ã¨æ€ã„ã„ã‚ã‚“ãªã‚‚ã®ã‚’å‚考ã«
次ã®ã‚ˆã†ãªãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã—ã¾ã—ãŸãŒã€ç‰©ä½“ã¯åœ°é¢ã‚’貫通ã—ã¦ã—ã¾ã„ã¾ã™ã€‚
ã”æŒ‡å°Žã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚
dBodyID body;
dGeomID geom;
static void makebody()
{
dGeomID geom_a,geom_b;
dMass m_a,m_b;
  dMassSetZero (&m1);
  body = dBodyCreate(world);
  dBodySetPosition(body,XO, YO, ZO);
  geom = dCreateGeomTransform (space);
  dGeomTransformSetCleanup (geom,1);
  geom_a = dCreateSphere (0,radius);
  geom_b = dCreateBox (0,SIZE[0],SIZE[1],SIZE[2]);
  dMassSetSphere (&m_a,mass,radius);
  dMassSetBox (&m_b,mass,SIZE[0],SIZE[1],SIZE[2]);
  dGeomTransformSetGeom (geom,geom_a);
  dGeomTransformSetGeom (geom,geom_b);
  dGeomSetPosition(geom_a,0,0,0);
  dGeomSetPosition(geom_b,0,0,0);
  dMassAdd (&m1,&m_a);
  dMassAdd (&m1,&m_b);
  dGeomSetBody (geom,body);
  dBodySetMass (body,&m1);
}
ミツルギã•ã‚“ã€
今年もよã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã•ã¦ã€ç§ã®çŸ¥ã‚‹é™ã‚ŠODEã«ã¯å›žè»¢æ‘©æ“¦ãŒå®Ÿè£…ã•れã¦ã„ãªã„ã®ã§ã€çƒã¯æ°¸é ã«è»¢ãŒã‚Šã¾ã™ã€‚é–¢ç¯€ã‚‚åŒæ§˜ã«æ‘©æ“¦ãŒã‚りã¾ã›ã‚“。回転摩擦ã«é–¢ã™ã‚‹éƒ¨åˆ†ã¯è‡ªåˆ†ã§å®Ÿè£…ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“ãŒã€ä»¥ä¸‹ã®ODE Wiki ã®FAQ 3.15ã«åŒã˜è³ªå•ãŒã‚り実装ã™ã‚‹ã†ãˆã§å‚考ã«ãªã‚Šã¾ã™ã®ã§ç›®ã‚’ã¨ãŠã—ã¦ãã ã•ã„。
How do I stop things from rolling off into infinity, or pendulums from swinging forever?
(http://opende.sourceforge.net/wiki/index.php/FAQ#How_do_I_stop_things_from_rolling_off_into_infinity.2C_or_pendulums_from_swinging_forever.3F)
ã‚ã‘ã¾ã—ã¦ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ã€‚
çƒä½“を転ãŒã—ã¦ã¿ã‚‹ã¨æ¢ã¾ã‚‰ãšã«ã©ã£ã‹ã«è¡Œã£ã¦ã—ã¾ã†ã®ã§ã™ãŒã“れã¯
nearCallbackã®å¤‰æ•°ã®å€¤ãŒãŠã‹ã—ã„ã®ã§ã—ょã†ã‹ï¼ŸåŠ›ã‚„é€Ÿåº¦ã‚’æŽ›ã‘ç¶šã‘ã¦ã„るよã†ã§ã¯ãªãã€
å‹•ã„ã¦ã‚‹ç‰©ä½“ã«ãƒœãƒ¼ãƒ«ãŒè¡çªã—ã¦ã€ãƒœãƒ¼ãƒ«åå°„ã—ã¦è»¢ãŒã£ã¦ã„ãæ„Ÿã˜ã§ã™ã€‚
ä»–ã®ç‰©ä½“ã¯æ¢ã¾ã‚Šã¾ã™ã€‚çƒä½“ã¯ãã†ã„ã£ãŸä»•様ãªã®ã§ã—ょã†ã‹ï¼Ÿ
sunaã•ã‚“ã€
ã™ã¿ã¾ã›ã‚“。ãƒãƒœã‚³ãƒ³ãƒžã‚¬ã‚¸ãƒ³ã®ODEプãƒã‚ャンプã®åŽŸç¨¿ã«è¿½ã‚れã¦ãŠè¿”事ãŒé…れã¾ã—ãŸï¼ˆã¾ã 執ç†ä¸ï¼‰ã€‚
ã©ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã§å®Ÿè¡Œç’°å¢ƒã¯ä½•ã§ã™ã‹ï¼Ÿ
ã“ã‚“ã«ã¡ã¯ã€‚
ã„ã¤ã‚‚ã€simulation test environment v0.02ã®ç”»é¢ã«ç°è‰²ã®ç¸žæ¨¡æ§˜ãŒå‡ºã¦ã€ç”»é¢ãŒä¸€éƒ¨éš れã¦ã—ã¾ã„ã¾ã™ã€‚
今ã¾ã§ã¯æ°—ã«ã—ã¦ã„ãªã‹ã£ãŸã®ã§ã™ãŒã€ä½•ã§ã§ã—ょã†ã‹?
ã§ã‚€ã•ã‚“ã€ã”返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼
2番目ã®å‹•ç”»ã‚ャプãƒãƒ£ã®æ–¹ã§ã™ãŒã€æ—©é€Ÿ
çª“ã®æœã«è¡Œã£ã¦ã¿ã¦ã€Œã‚«ãƒãƒžãƒ«ã‚«ã®çž³ã€ã‚’試ã—ã¦ã¿ãŸã¨ã“ã‚ã€
実ç¾ã§ãã¾ã—ãŸï¼
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
1ç•ªç›®ã®æ–¹ã®è³ªå•ã¯ã™ã“ã—ã‚ã‹ã‚Šã«ãããªã£ã¦ã™ã„ã¾ã›ã‚“ã§ã—ãŸã€‚
dWorldQuickStep(world, 0.05)ã¨ã—ãŸæ™‚ã€
1ステップ(ï¼ï¼Žï¼ï¼•秒)毎ã«Simloopã¯ï¼‘回呼ã³å‡ºã•れるã¨ã—ã¦ã€
nearcallbackã¯ä½•回呼ã³å‡ºã•れるã§ã—ょã†ã‹ï¼Ÿ
ã¨è¨€ã„æ›ãˆã‚‰ã‚Œã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
今回もã‚ã‹ã‚Šã«ãã„(もã—ãã¯çš„外れãªè³ªå•ã‚’ã—ã¦ã„ã‚‹ã‹ã‚‚ã—れãªã„・・・)ã§ã™ãŒã€
ãŠç”ãˆã„ãŸã ã‘れã°å¹¸ã„ã§ã™ã€‚(^^;;
ã†ãˆã®ã•ã‚“
ãŠä¹…ã—ã¶ã‚Šã§ã™ï¼Žã‚ãªãŸã®æŠ•稿記事ãŒSpam Filterã«ã²ã£ã‹ã‹ã‚Šè¿·æƒ‘投稿ã«å…¥ã£ã¦ã„ãŸã®ã§è¿”事ãŒé…ããªã‚Šã¾ã—ãŸï¼Ž
ã•ã¦ï¼Œï¼‘番目ã®è³ªå•ãŒã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“.
dWorldStep(world, 0.05)ã¯ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’1ステップ0.05ç§’ã ã‘進ã‚ã¾ã™ï¼Ž
ã“ã®è¨ˆç®—ã«ã‹ã‹ã‚‹æ™‚é–“ã¯è¨ˆç®—機ã®å‡¦ç†èƒ½åŠ›ã«ä¾å˜ã™ã‚‹ã®ã§ï¼Œãã®ç’°å¢ƒã§è¨ˆæ¸¬ã—ãªã„é™ã‚Šã‚ã‹ã‚Šã¾ã›ã‚“.
2番目ã®è³ªå•ã¯å‹•ç”»ã‚ャプãƒãƒ£ã‚½ãƒ•トを利用ã™ã‚Œã°ã‚ˆã„ã§ã™ï¼Ž
ã„ã‚ã„ã‚ã‚るよã†ã§ã™ãŒï¼Œçª“ã®æœã‹ã‚‰ã€Œã‚«ãƒãƒžãƒ«ã‚«ã®çž³ã€ã‚’ダウンãƒãƒ¼ãƒ‰ã§ãã¾ã™ï¼ŽãŠå‹§ã‚ã‹ã©ã†ã‹ã¯ã‚ã‹ã‚Šã¾ã›ã‚“ãŒï¼Œè©¦ã—ãŸã¨ã“ã‚動画をã‚ャプãƒãƒ£ã§ãã¾ã—ãŸï¼Ž
御å‚考ã«ãªã‚Œã°è‰¯ã„ã®ã§ã™ãŒï¼Žï¼Žï¼Ž
よã£ã¡ã‚ƒã‚“
投稿ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
AIBOã®3Dデータã¯AIBO SDEã®ã‚¦ã‚§ãƒ–サイト(http://openr.aibo.com/)ã‹ã‚‰ERS-7ã®3Dデータ(lightwaveフォーマット)を使ã£ã¦ã„ã¾ã™ï¼Ž
ODEã«ä»˜å±žã—ã¦ã„ã‚‹drawstuffライブラリã¯OpenGLをベースã«ã—ã¦ã„ã‚‹ã®ã§ï¼ŒOpenGLã§æ‰±ã„ã‚„ã™ã„フォーマットã«å¤‰æ›ã§ãれã°ã‚ˆã„ã‚ã‘ã§ã™ï¼Ž
AIBOシミュレータを作ã£ãŸã¨ãã¯ï¼ŒCrossroads 3Dã¨ã„ã†ãƒ•リーソフトãŒã‚ã£ãŸã®ã§ãれを利用ã—ã¦ã„ã¾ã—ãŸï¼Žæ®‹å¿µãªãŒã‚‰æœ€è¿‘ã¯ãƒªãƒ³ã‚¯ãŒåˆ‡ã‚Œã¦ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“.
ãªã‚“らã‹ã®ãƒ•ァイルフォーマット変æ›ã‚½ãƒ•トを使ã£ã¦OpenGLã«ãƒ•レンドリーãªãƒ•ァイルフォーマットã«å¤‰æ›ã™ã‚Œã°drawstuffã§æç”»ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ï¼Ž
ODEã¯å‹•力å¦è¨ˆç®—ライブラリãªã®ã§ï¼Œã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®æç”»ã«é–¢ã—ã¦ã®é–‹ç™ºã¯ã»ã¨ã‚“ã©ã•れã¦ã„ã¾ã›ã‚“.コミュニティ的ã«ã‚‚開発ã™ã‚‹æ„å‘ã¯ãªã„よã†ã§ã™ï¼Ž
ã“ã‚“ã°ã‚“ã¯ã€‚ãŠä¹…ã—ã¶ã‚Šã§ã™ï¼
毎度申ã—訳ã‚りã¾ã›ã‚“ãŒã€ä»Šå›žã‚‚ï¼’ã¤è³ªå•ã•ã›ã¦ãã ã•ã„。
1ã€nearcallbakã€simloopã®1ç§’é–“ã«ãŠã‘る呼ã³å‡ºã—回数
void nearcallback{
  ①    ・・(略)・・
for(i=0; i<MAX_CON; i++){
contact[i].surface.mode= ・・・
      ・・(略)・・
}
}
void Simloop{
      ・・(略)・・
dSpaceCollide(space, 0, &nearcallback))
if(!pause) dWorldQuickStep(world, 0.05)
 ②    ・・(略)・・
}
dWorldQuickstepã§ã€ã‚¹ãƒ†ãƒƒãƒ—サイズを0.05ã€
å復回数(iterations)をデフォルトã®20ã¨ã—ãŸæ™‚ã«
â‘ ã¨â‘¡ã®å ´æ‰€ãŒã€ä½•秒毎ã«å®Ÿè¡Œã•れるã‹ã‚’æ•™ãˆã¦ãã ã•ã„。
(ã¾ãŸã¯ï¼‘秒毎ã«ä½•回呼ã³å‡ºã—ã•れるã‹ï¼‰
â‘¡ãŒã€0.05秒毎ã§ã‚¹ãƒ†ãƒƒãƒ—ã€dSpaceCollideã‚‚0.05秒毎ã§ã‚¹ãƒ†ãƒƒãƒ—ã ã¨
æ€ã£ã¦ã„ã¾ã—ãŸãŒã€é•ã†ã‚ˆã†ã§ã—ãŸã€‚
(fprintfç‰ã‚’入れã¦ã¿ã¦ä½•らã‹ã®å€¤ã‚’出力ã™ã‚‹ã‚ˆã†ã«å®Ÿé¨“ã—ã¦ã¿ãŸã¨ã“ã‚ã€
åŒã˜æ™‚é–“ã§â‘ ãŒâ‘¡ã®ã¡ã‚‡ã†ã©8å€ã®è¡Œã«ãªã‚Šã¾ã—ãŸã€‚)
åŠ é€Ÿåº¦ã‚’æ±‚ã‚ãŸã‚Šã€æœ€çµ‚çš„ãªã‚°ãƒ©ãƒ•ã«
使用ã™ã‚‹ãŸã‚ã«è©³ç´°ãŒçŸ¥ã‚ŠãŸã„ã®ã§ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ï¼’ã€ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³çµæžœï¼ˆdrawstaff)を動画ã¨ã—ã¦ä¿å˜ã—ãŸã„ã®ã§ã™ãŒ
何ã‹ã„ã„æ–¹æ³•ã¯ã”å˜çŸ¥ã§ã—ょã†ã‹ï¼Ÿ
「simulation test environment v0.02ã€ã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚’
ãã®ã¾ã¾å‹•画ファイルã¨ã—ã¦ä¿å˜ã§ããŸã‚‰å¬‰ã—ã„ã§ã™ã€‚。
ã“れã¯ç›´æŽ¥ODEã®è³ªå•ã¨ã¯é–¢ä¿‚ãªã„ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€
何ã‹ã„ã„アドãƒã‚¤ã‚¹ãŒã‚れã°ã‚ˆã‚ã—ããŠããŒã„ã—ã¾ã™ï¼
1ã€ã®è³ªå•ãŒã¡ã‚‡ã£ã¨ã‚ã‹ã‚Šã«ãã„ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€
以上ã€ãŠæ™‚é–“ã®ã‚る時ãŠç”ãˆã„ãŸã ã‘ãŸã‚‰å¬‰ã—ã„ã§ã™ã€‚
ã§ã‚€ã•ã‚“ã€ã“ã‚“ã«ã¡ã¯ã€‚
ã„ã¤ã‚‚ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã‚’å‚考ã«ã•ã›ã¦é ‚ã„ã¦ãŠã‚Šã¾ã™ã€‚
質å•ãªã®ã§ã™ãŒã€
æœ¬ã‚µã‚¤ãƒˆã«æŽ²è¼‰ã•れã¦ã„ã‚‹ã‹ã£ã“ã„ã„アイボã®ãƒ¢ãƒ‡ãƒ«ã¯ã©ã®ã‚ˆã†ã«ä½œã‚‰ã‚Œã¦ã„ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
3D-CADã‹ä½•ã‹ã®ãƒ‡ãƒ¼ã‚¿ã‹ã‚‰ãƒ¢ãƒ‡ãƒ«ã‚’構築ã™ã‚‹ã‚ˆã†ãªã“ã¨ãŒå¯èƒ½ãªã®ã§ã—ょã†ã‹ï¼Ÿ
ã§ãれã°CADã‹ã‚‰ä½œã‚Œã‚Œã°ã‚りãŒãŸã„ã®ã§ã™ãŒ(^^;
ã‚‚ã—ã‹ã™ã‚‹ã¨åˆæ©çš„ãªè³ªå•ãªã®ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ãŠç”ãˆé ‚ã‘ãŸã‚‰å¹¸ã„ã§ã™ã€‚
Jimmyã•ん,
ODE講座12:トルクセンサを作ã‚ã†ï¼ã«ã‚µãƒ³ãƒ—ルコードを掲載ã—ã¾ã—ãŸã®ã§å‚考ã«ã—ã¦ãã ã•ã„.
ã“ã‚“ã«ã¡ã¯ã€‚ã¡ã‚‡ã£ã¨è³ªå•ãŒã‚ã‚‹ã§ã™ãŒã‚ˆã‚ã—ã„ã§ã—ょã†ã‹ï¼Ÿ
jointã®ãƒˆãƒ«ã‚¯ã¨åŠ›ã®dataã‚’å–りãŸã„ã§ã™ãŒã€‚
ODEã®manualã‚’èªã‚“ã§ã‚‚よã分ã‹ã‚‰ãªã„ã§ã™ã€‚
やり方教ãˆã¦ã„ãŸã ã‘ã¾ã›ã‚“ã‹ï¼Ÿã‚‚ã—sampleãŒ
ã‚れã°ã†ã‚Œã—ã„ã§ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
sunaã•ん,
ODEã¯å‰›ä½“動力å¦è¨ˆç®—エンジンãªã®ã§ï¼Œæµä½“力å¦ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯ä½¿ãˆã¾ã›ã‚“. 空気抵抗ãªã©ã®ãƒ‘ラメータã¯ã‚りã¾ã›ã‚“.
ã§ã‚€
ã¾ãŸã¾ãŸè³ªå•ã§ã™ãŒã€
空気抵抗をè¨å®šã™ã‚‹ã«ã¯ã€ã©ã†ã—ãŸã‚‰ã„ã„ã®ã§ã™ã‹ï¼Ÿ
sunaã•ん,
よã‹ã£ãŸã§ã™ã.解決ã—ã¦ä½•よりã§ã™ï¼Ž
æ¥æ˜¥4月ã«å‡ºç‰ˆã™ã‚‹ï¼ˆè¬›ç¾©ã«ä½¿ç”¨ã™ã‚‹ã®ã§é–“ã«åˆã‚ã›ãªã‘れã°ãªã‚‰ãªã„)予定ã®ODE本ã®åŽŸç¨¿ç· ã‚切りãŒ11月10æ—¥ãªã®ã§ï¼Œä»Šãれã«ã‹ã‹ã‚Šãりã§ã™ï¼Žãƒãƒœã‚³ãƒ³ãƒžã‚¬ã‚¸ãƒ³ã®é€£è¼‰ã‚‚抱ãˆï¼ŒODE講座ã¯ãªã‹ãªã‹æ›´æ–°ã§ãã¾ã›ã‚“ãŒæ™‚間を作り充実ã•ã›ã¾ã™ã®ã§ä»Šå¾Œã¨ã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã†ã¾ãã„ãã¾ã—ãŸã€‚
MSYSã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã®ã¨ãã«ã‚³ãƒžãƒ³ãƒ‰ãƒ—ãƒãƒ³ãƒ—トã§ã€
c:/mingw
ã‚’
c:ï¿¥mingw
ã¨ã—ã¦ã„ã¾ã—ãŸã€‚
http://www2.atwiki.jp/ccw/pages/5.htmlã§æ°—ãŒä»˜ãã¾ã—ãŸã€‚
今後ã®ODE講座も期待ã—ã¦ã„ã¾ã™ã€‚
sunaã•ã‚“ã€
$ ls /mingw/binを実行ã—ã¦No such file or directoryã¨è¡¨ç¤ºã•れるã¨ã„ã†ã“ã¨ã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒä½•らã‹ã®åŽŸå› ã§ã†ã¾ã終了ã—ã¦ã„ãªã„ã“ã¨ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
以下ã®ã‚µã‚¤ãƒˆã®è¨˜äº‹ãŒå‚考ã«ãªã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
http://www2.atwiki.jp/ccw/pages/34.html
ã¾ãŸã€gccã‚„makeを別ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã¨ãã¯c:\mingwã®ä¸‹ã«å±•é–‹ã—ã¦ãã ã•ã„。
ã“れã§è§£æ±ºã™ã‚Œã°ã‚ˆã„ã®ã§ã™ãŒ…
1ã¯ã€ç¢ºå®Ÿã«ã‚„りã¾ã—ãŸã€‚
2ã¯ã€
No such file or directory
ã¨ã€è¦‹ã¤ã‹ã‚‰ãªã„よã†ã§ã™ã€‚
別ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å ´åˆã¯ã€ã©ã“ã«ä¿å˜ã—ãŸã‚‰è‰¯ã„ã§ã™ã‹ï¼Ÿ
sunaã•ã‚“ã€
詳ã—ãç¾çŠ¶ã‚’æ•™ãˆã¦ãã ã•ã„。
1. MinGWインストール時ã«Choose Compomentsã§MinGW base tools, g++ compiler, MinGW makeã«ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã«ãƒã‚§ãƒƒã‚¯ã‚’ã„れã¾ã—ãŸã‹ï¼Ÿ
2. 以下ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€gccã€g++ãŒè¦‹ã¤ã‹ã‚Šã¾ã™ã‹ï¼Ÿ
$ ls /mingw/bin
1を確実ã«å®Ÿè¡Œã—ã¦ã€2ã§gccã¨g++ãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€ç§ã«ã¯ãã®åŽŸå› ãŒã‚ã‹ã‚Šã¾ã›ã‚“。ãã®å ´åˆã¯ã€mingwã®ã‚µã‚¤ãƒˆ(http://www.mingw.org/download.shtml)ã‹ã‚‰Currentã«ã‚ã‚‹gccã¨makeを別ã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã‹, ã†ã¾ãã„ã£ã¦ã„る人ã®c:\MinGW以下を丸ã”ã¨ã‚³ãƒ”ーã•れãŸã‚‰ã„ã„ã‹ã¨æ€ã„ã¾ã™ã€‚
何回やã£ã¦ã‚‚ダメã§ã™ã€‚
sunaã•ã‚“ã€
é…ããªã£ã¦ã™ã¿ã¾ã›ã‚“。
æã‚‰ã開発環境ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„ã¨æ€ã„ã¾ã™ã€‚
開発環境ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãŸã‚‰ä»¥ä¸‹ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹ã¨gcc.exeã‚„g++.exeãŒè¦‹ã¤ã‹ã‚Šã¾ã™ã€‚
mingwインストールã®Choose Compomentsã§ç¢ºå®Ÿã«MinGW base tools, g++ compiler, MinGW makeã«ãƒã‚§ãƒƒã‚¯ã‚’ã„れãŸã‹ã‚‚ã†ä¸€åº¦ç¢ºèªã—ã¦é ‚ã‘ã¾ã™ã‹ï¼Ÿ
ãƒã‚§ãƒƒã‚¯ã®å…¥ã‚Œå¿˜ã‚ŒãŒåŽŸå› ã ã¨æ€ã†ã®ã§ã™ãŒ…
$ ls /mingw/bin
ã‚³ãƒžãƒ³ãƒ‰å®Ÿè¡Œçµæžœ
addr2line.exe* g++.exe* mingw32-g++.exe* ranlib.exe*
ar.exe* gcc.exe* mingw32-gcc-3.4.2* readelf.exe*
as.exe* gccbug* mingw32-gcc.exe* size.exe*
c++.exe* gcov.exe* mingw32-make.exe* strings.exe*
c++filt.exe* gdb.exe* mingwm10.dll* strip.exe*
cpp.exe* gprof.exe* nm.exe* windres.exe*
dlltool.exe* ld.exe* objcopy.exe*
dllwrap.exe* mingw32-c++.exe* objdump.exe*
ã‚„ã£ã¦ã¿ãŸã‚‰ã€ãªã«ã‚‚表示ã•れã¾ã›ã‚“ã§ã—ãŸã€‚
インストールã—ãªãŠã—ã¦ã‚‚ã€åŒã˜ã§ã—ãŸã€‚
sunaã•ã‚“ã€
MINGW32ã®ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‚’é–‹ã„ã¦ä»¥ä¸‹ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã€ãã®çµæžœã‚’æ•™ãˆã¦ãã ã•ã„。
$ which gcc
ç§ã®å ´åˆã¯ã€€/mingw/bin/gccã¨ãªã‚Šã¾ã—ãŸã€‚何も表示ã•れãªã„ã®ãªã‚‰g++コンパイラーãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„ã®ã§ã‚‚ã†ä¸€åº¦mingwをインストールã—ã¦ãã ã•ã„。
mingwã¯ã€ã“ã®ãºãƒ¼ã‚¸ã«è¼‰ã£ã¦ã„る通りã«
インストールã—ã¾ã—ãŸã€‚
suna様
makeã™ã‚‹ç’°å¢ƒã‚’æ•™ãˆã¦ã„ãŸã ã‘ã¾ã›ã‚“ã‹ï¼Ÿ
ãã®ã‚¨ãƒ©ãƒ¼ã§ã™ã¨ã€Cã®ã‚³ãƒ³ãƒ‘イラーãŒPATHã®é€šã£ã¦ã„ã‚‹ã¨ã“ã‚ã«ãªã„よã†ã§ã™ã€‚
開発環境ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã—ãŸã‹ï¼Ÿä¾‹ãˆã°ã€mingwã§ã™ã¨ã€g++ compilerã¨mingw makeをインストール時ã«é¸æŠžã—ãªã‘れã°ã„ã‘ã¾ã›ã‚“。
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
./configure –enable-double-precision
ã®æ™‚ã€
error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
ã¨ãªã£ã¦ã€ä¸Šæ‰‹ã出æ¥ã¾ã›ã‚“。
ã©ã†ã—ãŸã‚‰è‰¯ã„ã§ã—ょã†ã‹ï¼Ÿ
æ•™ãˆã¦ãã ã•ã„.
田窪様
コメントã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼ŽVisual Studio 2005 Expressã¯ãƒ•リーã«ãªã‚ŠVisual Studioアカデミック版もã¨ã¦ã‚‚安価ã«ãªã£ãŸã®ã§ï¼ŒVisual Studioã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ³•も紹介ã—ãªã„ã¨ã ã‚ã ã¨æ€ã£ã¦ã„ã¾ã—ãŸï¼Žç”°çªªæ§˜ã®è¨˜äº‹ã¯å¤šãã®æ–¹ã«ã”å‚考ã«ãªã£ã¦ã„ã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
ã§ã¯ï¼Œä»Šå¾Œã¨ã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã§ã‚€ã‚‰æ§˜
ç§ã®åå‰ãŒå‡ºã¦ã„ãŸã®ã§ã‚³ãƒ¡ãƒ³ãƒˆã•ã›ã¦ã„ãŸã ãã¾ã™ï¼Ž
ç§ã®ï¼¨ï¼°ã«ã§ã‚€ã‚‰æ§˜ã®ï¼¨ï¼°ã«è¼‰ã£ã¦ã„ãŸã‚½ãƒ¼ã‚¹ã¨åŒã˜ã‚‚ã®ã‚’載ã›ã¦ã—ã¾ã„申ã—訳ã”ã–ã„ã¾ã›ã‚“.
åˆã‚ã«ãŠæ–りã—ã¦ã‹ã‚‰è¼‰ã›ã‚‹ã¹ãã§ã—ãŸï¼Ž
Vitual Studioã§ã®ã‚³ãƒ³ãƒ‘イルã®ä¾‹ã‚’示ã—ãŸã„ã¨è€ƒãˆæ‹å€Ÿã•ã›ã¦ã„ãŸã ã„ã¦ãŠã‚Šã¾ã—ãŸï¼Ž
よã‚ã—ã‘れã°ã“ã®ã¾ã¾æŽ²è¼‰ã‚’ã•ã›ã¦ã„ãŸã ããŸã„ã®ã§ã™ãŒã‚ˆã‚ã—ã„ã§ã—ょã†ã‹ï¼Ž
ã”快諾ã„ãŸã ã‘ã‚‹ã¨å¹¸ã„ã§ã™ï¼Ž
→ã‚ーマ様
「ode.dllファイルãŒé–‹ã‘ã¾ã›ã‚“ã€ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ã§ã™ãŒï¼Œç§ã®ãƒ‘ソコンã®å ´åˆã¯ã‚·ã‚¹ãƒ†ãƒ ã®ç’°å¢ƒå¤‰æ•°ã®PATHã¸ä¸‹è¨˜ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’è¿½åŠ ã™ã‚‹ã¨æ¶ˆãˆã¾ã—ãŸï¼Ž
C:\Program Files\ode-0.6\lib\debugdll
ODE-0.7+VisualStudio2005ã§ã¯ï¼Œä¸Šè¨˜ã®ãƒ‘スã§ã¯è§£æ±ºã•れãªã„å ´åˆãŒã‚り,下記ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’è¿½åŠ ã™ã‚‹ã¨è§£æ±ºã—ãŸä¾‹ãŒã”ã–ã„ã¾ã—ãŸï¼Ž
C:\Program Files\ode-0.7\bin
ã”å‚考ã«ãªã‚‹ã¨å¹¸ã„ã§ã™ï¼Ž
KENã•ん,
本ã®åŸ·ç†ã¯é…れ気味ã§ã™…
ã•ã¦ï¼Œè§£æ±ºãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã•ã—ã¤ã‹ãˆãªã‘れã°ï¼Œä½•ãŒåŽŸå› ã§ã©ã®ã‚ˆã†ã«å¯¾å‡¦ã—ãŸã‚‰ã‚¨ãƒ©ãƒ¼ãŒç›´ã£ãŸã‹æ•™ãˆã¦é ‚ã‘れã°ï¼Œéžå¸¸ã«å‚考ã«ãªã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
ã™ã„ã¾ã›ã‚“,自己解決ã„ãŸã—ã¾ã—ãŸï¼Ž
ODEã®æœ¬ï¼Œæ¥½ã—ã¿ã«ã—ã¦ãŠã‚Šã¾ã™ï¼Ž
ã§ã‚€ã•ん,ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼Žå§¿å‹¢è§’ã«ã‚‚ã„ã‚ã„ã‚ãªå®šç¾©ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã.
今後もよã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼
KENã•ã‚“
圧力センサã®ã”質å•ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã‚ã¾ã‚Šã«ã‚‚æƒ…å ±ãŒå°‘ãªãã¦ã“れã ã‘ã§ã¯ã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“。もã†å°‘ã—å…·ä½“çš„ã«æ•™ãˆã¦é ‚ã‘ãŸã‚‰å›žç”ã§ãã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ä»Šæœˆæœ«ã€ODE本原稿ã®ç· ã‚切りãªã®ã§ãŠè¿”事ã¯é…ããªã‚‹ã¨æ€ã„ã¾ã™ã€‚
ãŸã“ã‚„ãã•ã‚“
回転行列をä¸èº«ã‚’調ã¹ãŸã¨ã“ã‚ã€ãŸã“ã‚„ãã•ã‚“ã®ãŠã£ã—ゃるã¨ãŠã‚ŠdRFromEulerAnglesã¯craigã®ãƒãƒœãƒ†ã‚£ã‚¯ã‚¹ã«ã‚ã‚‹Z-Y-Xオイラー角を転置ã—ãŸã‚‚ã®ã«ãªã£ã¦ã„ã¾ã™ã。
色々調ã¹ãŸã¨ã“ã‚ã“れã¯é–“é•ã„ã¨ã„ã†ã‚ˆã‚Šã‚ªã‚¤ãƒ©ãƒ¼è§’ã®è¡¨è¨˜ã«ã„ã‚ã„ã‚æµå„€ãŒã‚りã€NASA Standard Aerospaceæµã§ã¯ãªã„ã‹ã¨æ€ã„ã¾ã™ã€‚
以下ã®ã‚µã‚¤ãƒˆã‚’ã”覧ãã ã•ã„。
1.http://oemagazine.com/fromTheMagazine/nov05/tutorial.html
2.http://www.euclideanspace.com/maths/geometry/rotations/euler/index.htm
本家ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã§ç¢ºã‹ã‚ã¦ã¿ã¦ã¯ã„ã‹ãŒã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€ã•ん,ã“ã‚“ã«ã¡ã¯ï¼Žã½ã£ãŸãƒ¼ã§ã™ï¼Ž
ode-0.7ã¨cygwinã®ä»¶ï¼Œã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ç§ãŒãƒã‚°ã¨ã‚Šã¨ã‹ã¨ã‚“ã§ã‚‚ãªã„...
ã„ã¤ã‹ãã†ãªã‚‹ã‚ˆã†ã«ï¼Œä»Šã¯ã§ã‚€ã•ã‚“ã®HPを見ãªãŒã‚‰æ—¥ã€…自分ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®ãƒã‚°ã¨ã‚Šã§ã™ï¼ˆç¬‘)
興味本ä½ã®è³ªå•ãªã‚“ã§ã™ãŒï¼Œdrawstaffを使ã‚ãªã‘れã°cygwinã§ã‚‚å•題ãªã„ãã†ã§ã™ã.
å‚考ã¾ã§ã«ï¼Œdrawstaff以外ã§3D表示ã®ãŸã‚ã®API(?),ライブラリ(?)ã«ã¯ã©ã‚“ãªã‚‚ã®ãŒã‚りã¾ã™ã‹ï¼Ÿ
ã“ã‚“ã«ã¡ã¯ï¼Žã„ã¤ã‚‚ãŠä¸–話ã«ãªã£ã¦ãŠã‚Šã¾ã™ï¼Ž
ODE講座16 圧力センサを作ã‚ã†ï¼ã‚’å‚考ã«ï¼Œ2è¶³æ©è¡Œãƒãƒœãƒƒãƒˆã®è¶³é¦–ã®åœ§åŠ›ã‚’æ¸¬å®šã—よã†ã¨ã—ã¦ã„ã‚‹ã®ã§ã™ãŒï¼Œzæ–¹å‘ã®åœ§åŠ›ã¯é©åˆ‡ã«æ±‚ã‚られã¦ã‚‹ã‚ˆã†ãªã®ã§ã™ãŒï¼Œxæ–¹å‘ã®åœ§åŠ›ãŒã‚りãˆãªã„よã†ãªæ¡ã®æ•°å—ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ï¼Ž
ã©ã‚“ãªåŽŸå› ãŒè€ƒãˆã‚‰ã‚Œã‚‹ã§ã—ょã†ã‹ï¼Ÿ
ãƒãƒƒã‚¿ãƒ¼ã•ã‚“
Cygwinã§ã®ODE0.7ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«ã¤ã„ã¦ã®ã”質å•ã§ã™ã。
ODE0.6,0.7ã§ã¯ODEライブラリã®ã‚³ãƒ³ãƒ‘イルå¯èƒ½ã§ã™ãŒã€ãƒ†ã‚¹ãƒˆãƒ—ãƒã‚°ãƒ©ãƒ ã¯ã‚³ãƒ³ãƒ‘イルã§ãã¾ã›ã‚“。ç§ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ もコンパイルã§ãã¾ã›ã‚“。
drawstuffã‚’cygwinã§å®Ÿè¡Œã™ã‚‹ã¨ãã«å•題ãŒèµ·ãるよã†ã§ã™ã€‚ã¤ã¾ã‚Šã€ç”»é¢ã®ï¼“D表示ã«drawstuffを使ã‚ãªã‘れã°å•題ã‚りã¾ã›ã‚“。もã¨ã‚‚ã¨drawstuffã¯ãƒ†ã‚¹ãƒˆãƒ—ãƒã‚°ãƒ©ãƒ ã®è¡¨ç¤ºç”¨ã§ã€ã„ã‚ã°ã‚ªãƒžã‚±ã§ã™ã€‚
ãªãŠã€ãã®ãƒã‚°ã®è©³ã—ã„åŽŸå› ã‚’ç§ã¯èª¿ã¹ã¦ã„ãªã„ã®ã§ã‚ã‹ã‚Šã¾ã›ã‚“。メーリングリストã§ã¯Cygwinã®å®Ÿè£…ãŒæ‚ªã„ã¨ã„ã†äººã‚‚ã„ã¾ã™ã€‚開発者ã«ã¯çŸ¥ã‚‰ã‚ŒãŸãƒã‚°ãªã®ã§ãã®ã†ã¡ç›´ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
ãƒãƒƒã‚¿ãƒ¼ã•ã‚“ã€€ãŠæ™‚é–“ãŒã‚れã°ãã®ãƒã‚°ã‚’ç›´ã—ã¦ODEã«è²¢çŒ®ã—ã¦ã¿ã¾ã›ã‚“ã‹ï¼Ÿ
ã‚ーマã•ã‚“
返事ãŒé…ããªã‚Šã™ã¿ã¾ã›ã‚“。
Visual Studioã§ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«ã¤ã„ã¦ã®ã”質å•ã§ã™ãŒã€ç§ã¯ä½¿ã£ãŸã“ã¨ãŒãªã„ã®ã§å…¨ãã‚ã‹ã‚Šã¾ã›ã‚“。ã”ã‚ã‚“ãªã•ã„。
ã‚‚ã—ã€ã‚ã‹ã£ãŸã‚‰æŠ•稿ã—ã¦é ‚ã‘ã¾ã›ã‚“ã‹ï¼Ÿ
田窪ã•ã‚“ã®ãƒ›ãƒ¼ãƒ ページã«å‚考ã¨ãªã‚Šãã†ãªè¨˜äº‹ã¯ã‚りã¾ã™ã®ã§å‰å ±ã‚’ãŠå¾…ã¡ã—ã¦ã„ã¾ã™ã€‚
http://www-arailab.sys.es.osaka-u.ac.jp/~takubo/howto_ode.html
ã§ã‚€ã•ん,ã“ã‚“ã«ã¡ã‚.ã½ã£ãŸãƒ¼ã§ã™ï¼Ž
ODE-0.7ã«é–¢ã™ã‚‹è³ªå•ã§ã™ï¼Ž
何度ã‹ãƒˆãƒ©ã‚¤ã—ãŸã®ã§ã™ãŒï¼Œç¢ºã‹ã«OED-0.7ã¯cygwinã§ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒã§ãã¾ã›ã‚“ã.
テストプãƒã‚°ãƒ©ãƒ ãŒã‚³ãƒ³ãƒ‘イルã§ããªã„ã¨ã‚りã¾ã™ãŒï¼Œãƒ†ã‚¹ãƒˆãƒ—ãƒã‚°ãƒ©ãƒ ã®ã¿ã‚³ãƒ³ãƒ‘イルã§ããªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ãれã¨ã‚‚,インストールã¯ã§ãã¦ã‚‚,他ã®ãƒ—ãƒã‚°ãƒ©ãƒ (例ãˆã°ã§ã‚€ã•ã‚“ã®ãƒ—ãƒã‚°ãƒ©ãƒ )ã®ã‚³ãƒ³ãƒ‘イルもã§ããªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
ãã‚‚ãã‚‚MSYS,MinGWã¨cygwinã¯ä½•ãŒé•ã£ã¦ï¼Œã“ã®ã‚ˆã†ãªçµæžœã«ãªã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
ã‚ã¾ã‚ŠODEã¨é–¢ä¿‚ã®ãªã„質å•ã§ã™ã¿ã¾ã›ã‚“.
ODEã®æœ¬ï¼Œã‚‚ã†ã™ãã§ã™ã.楽ã—ã¿ã«ã—ã¦ã¾ã™ã‚ˆï½ž
御回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
dRFromEulerAnglesã§ã‚ªã‚¤ãƒ©ãƒ¼è§’ã‚’è¨å®šã—ã¦ç‰©ä½“ã«å§¿å‹¢ã‚’åæ˜ ã•ã›ã‚ˆã†ã¨ã™ã‚‹ã¨ï¼Œæ˜Žã‚‰ã‹ã«ãƒ†ã‚ストã®zyxオイラー角ã¨é•ã†å§¿å‹¢ã‚’示ã—ã¾ã™ï¼Žï¼ˆè‡ªåˆ†ã¯Cubeã§è©¦ã—ã¾ã—ãŸï¼‰
ã•らã«ï¼ŒGetRotationã§å›žè»¢è¡Œåˆ—ã®ä¸èº«ã‚’表示ã•ã›ã¦ã¿ã¦ã‚‚,zyxオイラー角ã®ã‚‚ã®ã¨ã¯ç•°ãªã‚Šã¾ã—ãŸï¼Ž
ã•らã«ï¼Œè»¢å€¤ã—ãŸè¡Œåˆ—ã§åŒæ§˜ãªã“ã¨ã‚’確ã‹ã‚ã¦ã¿ã‚‹ã¨ï¼Œã€Œï½šï½™ï½˜ã‚ªã‚¤ãƒ©ãƒ¼è§’ã€ã®å§¿å‹¢ã‚’å–ã‚‹ã“ã¨ãŒç¢ºèªã§ãã¾ã—ãŸï¼Ž
ã¨ã„ã†ã“ã¨ã¯ï¼Œã‚„ã¯ã‚Šå›žè»¢è¡Œåˆ—ãŒãŠã‹ã—ã„ã®ã§ã¯ï½žï½žï¼Ÿã§ã‚€ã•んも実際ã«å‹•ã‹ã—ã¦ç¢ºã‹ã‚ã¦ãれã¾ã›ã‚“ã‹ï¼Ÿ
åˆã‚ã¾ã—ã¦ã€‚
ã¤ã„先日よりODEを勉強ã—å§‹ã‚ã€ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã‚’å‚考ã«ã•ã›ã¦é ‚ã„ã¦ãŠã‚Šã¾ã™ã€‚
éžå¸¸ã«åˆæ©çš„ãªè³ªå•ã§æç¸®ãªã®ã§ã™ãŒã€
ODEã‚’VisualStudio(2005)ã§å®Ÿè¡Œã™ã‚‹æ–¹æ³•ã¯ã‚ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
サンプルã«ä»˜ã„ã¦ã„ãŸ2005ソリューションを開ãã€ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®è¨å®šã‚’真似ã—ãŸã®ã§ã™ãŒã€
「ode.dllファイルãŒé–‹ã‘ã¾ã›ã‚“ã€ã¨ã„ã†è¦å‘ŠãŒå‡ºã¦å®Ÿè¡ŒãŒå‡ºæ¥ãªã„状態ã§ã™ã€‚(コンパイルã¯é€šã‚Šã¾ã™ï¼‰
dllã®ã‚るディレクトリã¸ã®ãƒ‘スã¯ã¡ã‚ƒã‚“ã¨å¤‰æ›´ã—ã¦ã‚りã¾ã™ã€‚
ã¨ã¦ã‚‚馬鹿ãªè³ªå•ã§ã‚ã‚‹ã¨ã¯æ€ã„ã¾ã™ãŒã€ãŠç”ãˆé ‚ã‘ãŸã‚‰å¹¸ã„ã§ã™ã€‚
関数dRFromEulerAngles(R,phi, theta, psi);
ã«ã¤ã„ã¦ã€‚
以å‰ã‚ˆã‚Šã€ç–‘å•ã«æ€ã£ã¦ã„ãŸã®ã§ã™ãŒã€ä¸Šè¨˜ã®é–¢æ•°ã‚’使ã†ã¨ã€ã€Œå³æ‰‹ç³»,z-y-xオイラー角ã€ã®æŒ™å‹•を示ã—ã¾ã›ã‚“。(回転行列を確ã‹ã‚ã¦ã¿ã¦ã‚‚明らã‹)
ã¡ãªã¿ã«å®Ÿè¡Œã™ã‚‹ã¨ã€ã€Œå·¦æ‰‹ç³»,z-y-x固定角ã€ã®æŒ™å‹•を示ã—ã¾ã™ã€‚
ãã“ã§ã€rotaotion.cppã®ä¸èº«ã‚’ã®ãžã„ã¦ã¿ãŸã¨ã“ã‚。。。オイラー角ã®å®šç¾©ãŒä»¥ä¸‹ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã—ãŸã€‚
_R(0,0) = cpsi*ctheta;
_R(0,1) = spsi*ctheta;
_R(0,2) =-stheta;
_R(1,0) = cpsi*stheta*sphi – spsi*cphi;
_R(1,1) = spsi*stheta*sphi + cpsi*cphi;
_R(1,2) = ctheta*sphi;
_R(2,0) = cpsi*stheta*cphi + spsi*sphi;
_R(2,1) = spsi*stheta*cphi – cpsi*sphi;
_R(2,2) = ctheta*cphi;
ã“れã£ã¦å¤‰ã§ã™ã‚ˆã?
z-y-xオイラー角ã®å›žè»¢è¡Œåˆ—ã®è»¢ç½®ã«ãªã£ã¦ã—ã¾ã£ã¦ã„ã‚‹æ°—ãŒã—ã¾ã™ã€‚
ã™ãªã‚ã¡ã€_R(1,0)→_R(0,1)ã¨ã„ã†å…·åˆã«å¤‰æ›´ã—ãªã‘ã‚Œã°æ£ã—ã„å‹•ãã‚’ã—ãªã„ã®ã§ã¯?
ãªãŠã€å›žè»¢è¡Œåˆ—ã«é–¢ã—ã¦ã¯ã€
ãƒãƒœãƒ†ã‚£ã‚¯ã‚¹Jhon J.Craig訳をå‚考ã«ã—ã¾ã—ãŸã€‚
高橋ã•ん,
力å¦ã«é–¢ã™ã‚‹æœ¬ã¨ã¯ã©ã®ç¨‹åº¦ã®ãƒ¬ãƒ™ãƒ«ãªã®ã§ã—ょã†ã‹ï¼Ÿ
大å¦åˆç´šï¼Œä¸ç´šï¼Œå¤§å¦é™¢ãƒ¬ãƒ™ãƒ«
ã“ã‚“ã«ã¡ã¯ã€‚
早急ã®ã”回ç”ã€ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼
xã€ï½™ã€ï½šæˆåˆ†ã®å˜ä½ãƒ™ã‚¯ãƒˆãƒ«ã ã£ãŸã‚“ã§ã™ãï¼
ã¡ã‚‡ã£ã¨é›£ã—ã考ãˆã™ãŽã¦ã—ã¾ã£ã¦ã¾ã—ãŸã€‚(^^;
ãれãžã‚Œã®ã”回ç”ã‚’å…ƒã«ã—ã¦å¼•ãç¶šãé ‘å¼µã£ã¦ã¿ã¾ã™ã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
力å¦ã«é–¢ã™ã‚‹æ›¸ç±ãƒ»å‚考書を紹介ã—ã¦é ‚ã‘ãªã„ã§ã—ょã†ã‹ã€‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
座標ã¯ï¼Œå®Ÿéš›ã«ä½ç½®ã‚»ãƒ³ã‚µã‚’å‹•ã‹ã—ã¦ï¼Œãƒ¬ã‚»ãƒ—ターãŒãã®ç›¸å¯¾åº§æ¨™ã‚’èªã¿å–ã£ãŸã‚‚ã®ã‚’用ã„ã¦ã„ã¾ã™ï¼Ž
得られãŸåº§æ¨™å€¤ã‚’ã‚‚ã¨ã«SetPositionã§æç”»ã—ã¦ã„ã‚‹ãŸã‚,本æ¥ã§ã¯ã‚りãˆãªã„å ´æ‰€ã«æç”»ã—ã¦ã„ã‚‹ã‚‚ã®ã¨æ€ã‚れã¾ã™ï¼Žï¼ˆæŽ¥è§¦ã‚’検知ã™ã‚‹å‰ã«è²«é€šã—ã¦ã—ã¾ã†ï¼‰
例ãˆã°ï¼Œç‰©ä½“ã‚’æç”»ã™ã‚‹å‰ã«ï¼Œç‰©ä½“é–“ãŒè²«é€šã—ã¦ã—ã¾ã†ã‚ˆã†ãªå ´æ‰€ã‹ã©ã†ã‹ã‚’判定ã™ã‚‹æ©Ÿèƒ½ã¨ã‹ã‚れã°è§£æ±ºã™ã‚‹ã®ã§ã™ãŒï¼Žï¼Žï¼Ž
P.S
ODE0.7ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼ã•ã£ããã‚„ã£ã¦ã¿ã¾ã™ï¼Ž
ã²ã‚ã•ん,
ã™ã¿ã¾ã›ã‚“ï¼Žæƒ…å ±é‡ãŒå°‘ãªã難解ã™ãŽã¦å›žç”ã§ãã¾ã›ã‚“.具体的ã«ä½•をやりãŸã„ã‹æ•™ãˆã¦é ‚ã‘れã°ã‚¤ãƒ¡ãƒ¼ã‚¸ãŒã‚ãã‹ã‚‚ã—れã¾ã›ã‚“ãŒï¼Ÿ
入力ã•れる座標値ã¯å®Ÿéš›ã®ç‰©ç†ç¾è±¡ã«å¾“ã£ãŸã‚‚ã®ã§ï¼ŒODE上ã®ç‰©ä½“ã¯ãれをシミュレートã—ã¦ã„ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
ã¾ãŸï¼Œä¸é€£ç¶šã¨ã¯ä½•msé–“éš”ã§ï¼ŒODEã®time stepã¯ã©ã®ç¨‹åº¦ã«ã—ã¦ã„ã¾ã™ã‹ï¼Ÿ
ã§ã¯ã€€
ã“ã‚“ã«ã¡ã¯ã€å…ˆæ—¥ã¯æ˜Žç¢ºãªè§£ç”ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã¾ãŸã—ã¦ã‚‚ã€è³ªå•ã•ã›ã¦ãã ã•ã„。
座標値を直接入力ã—ã¦æç”»ã—ãŸç‰©ä½“Aã¨,ä»–ã®é™æ¢ç‰©ä½“Bã¨ã®æŽ¥è§¦ã‚’検知(
物体AãŒç‰©ä½“Bを押ã™ç‰)ã—よã†ã¨ã—ã¦ã„ã‚‹ã®ã§ã™ãŒ,
物体AãŒç‰©ä½“Bã«ã‚りã“ã‚€,ã‚ã‚‹ã„ã¯è²«é€šã™ã‚‹ã‚ˆã†ãªç¾è±¡ãŒç”Ÿã˜ã†ã¾ã行ãã¾ã›ã‚“・・・
座標入力値ãŒä¸é€£ç¶šã§ã‚ã£ãŸã‚Šã™ã‚‹ãŸã‚入力デãƒã‚¤ã‚¹å´ã«å•題ãŒã‚ã‚‹ã®ã¯æ˜Žã‚‰ã‹ã§ã™ãŒ
ODEå´ã‹ã‚‰ã“ã®ã‚ˆã†ãªå•題を解決ã™ã‚‹ã‚¢ãƒ—ãƒãƒ¼ãƒãŒã‚ã‚Œã°æ•™ãˆã¦æ¬²ã—ã„ã§ã™!ã‚€ã¡ã‚ƒãªè³ªå•ã§ã”ã‚ã‚“ãªã•ã„ー