STEP3: ODEã‚’ã‚‚ã£ã¨çŸ¥ã‚ã†

ODEを使ã£ã¦ä½œæˆã—ãŸAIBOシミュレータ.ODEã«ä»˜å±žã—ã¦ã„ã‚‹3Dライブラリ(drawstuff)を使ã£ã¦ã‚‚ã“ã®ç¨‹åº¦ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ã‚’作れるã¨ã„ã†ãƒ‡ãƒ¢ã§ã™ï¼ŽODE本ã§å‹‰å¼·ã™ã‚Œã°ã“ã®ç¨‹åº¦ã®ã‚‚ã®ã‚’作るã“ã¨ã‚‚ä¸å¯èƒ½ã§ã¯ã‚りã¾ã›ã‚“.実際ã«ï¼Œæ•°å¹´å‰ï¼Œå’研生ã¨ä½œã£ãŸã‚‚ã®ã§ã™ï¼ŽAIBOã®è‘—作権ã®é–¢ä¿‚ã§æ®‹å¿µãªãŒã‚‰ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯å…¬é–‹ã§ãã¾ã›ã‚“.


ODE本「簡å˜!実践!ロボットシミュレーション – Open Dynamics Engineã«ã‚ˆã‚‹ãƒ­ãƒœãƒƒãƒˆãƒ—ログラミング

ã€ã®Step3ã§ã™ï¼Žã“ã“ã¯ODEã®è‹±æ–‡ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã‚’ç§æµã«æ›¸ãç›´ã—ã¦ã„ã¾ã™ï¼Ž100%ã§ã¯ã‚りã¾ã›ã‚“ãŒï¼Œä¸»è¦ãªéƒ¨åˆ†ã‚’網羅ã—ã¦ã„ã¾ã™ã®ã§ï¼Œè‹±æ–‡ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã‚’読ã¾ãªãã¦ã‚‚プログラミングãŒå¯èƒ½ã§ã™ï¼ŽAPIã«ã¤ã„ã¦ã‚‚90%以上掲載ã—ã¦ã„ã¾ã™ã®ã§ï¼ŒODEã®ãƒ†ã‚¹ãƒˆãƒ—ログラムを読むã¨ãや,自分ã§ãƒ—ログラミングをã™ã‚‹ã¨ãも困らãªã„ã¨æ€ã„ã¾ã™ï¼Žè©³ã—ãã¯ODE本ã§ï¼Žï¼Žï¼Ž

以下ã«Step3ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’掲載ã—ã¾ã™ï¼Žzipã§åœ§ç¸®ã•れã¦ã„るソースコードã¯ã“ã“ã‚’å‚考ã«ã—ã¦è§£å‡ãƒ»ã‚³ãƒ³ãƒ‘イル・実行ã—ã¦ãã ã•ã„.ãれ以外ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯ãƒ—ログラムã®ä¸€éƒ¨ãªã®ã§ï¼Œãã®ã¾ã¾ã§ã¯ã‚³ãƒ³ãƒ‘イルã§ãã¾ã›ã‚“.

以下ã«Step3ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ã®å‹•画を掲載ã—ã¾ã™ï¼Žã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯ã“ã®ãƒšãƒ¼ã‚¸ã®æ³¨æ„事項を読ã¿ï¼Œãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ï¼Œãƒ“ルドやコンパイルã—実行ã—ã¦ãã ã•ã„.


  • プログラム3.4: ãƒãƒ‹ãƒ¼ã€€(P80)
    • 説明:ODEã®ãƒ†ã‚¹ãƒˆãƒ—ログラムtest_moving_trimesh.cppã‹ã‚‰ãƒãƒ‹ãƒ¼ã ã‘ã‚’å–り出ã—,ソースコードもã‚ã‹ã‚Šã‚„ã™ã„よã†ã«å¤‰æ›´ã—ã¦ã„ã¾ã™ï¼Žã“ã“ã§ã¯ï¼Œãƒãƒªã‚´ãƒ³ã®ç‰©ä½“ã®æ‰±ã„方を学ã³ã¾ã™ï¼Ž

  • プログラム3.5: Aモータ (P94)
    • 説明:ODEã§æœ€ã‚‚エーモータã®Aモータã®ä½¿ã„æ–¹ã®ã‚µãƒ³ãƒ—ルã§ã™ï¼Ž

    • プログラム3.1: ODEã®ãƒ‡ãƒ¼ã‚¿åž‹ (P60)
      #if defined(dSINGLE) // dSINGLEãŒå®šç¾©ã•れã¦ã„ãŸã‚‰
      typedef float dReal;  //    dRealã¯floatã¨ã—ã¾ã™ï¼Ž
      #elif defined(dDOUBLE) // dDOUBLEãŒå®šç¾©ã•れã¦ã„ãŸã‚‰
      typedef double dReal; //    dRealã¯doubleã¨ã—ã¾ã™ï¼Ž
      #else          // ãれ以外ã®å ´åˆ
      #error You must #define dSINGLE or dDOUBLE
      #endif         // #ifã®çµ‚ã‚りtypedef dReal dVector3[4];   // dVector3ã¯dRealã®é…列(è¦ç´ 4個)
      typedef dReal dMatrix3[4*3]; // dMatrix3ã¯dRealã®é…列(è¦ç´ 12個)
    • プログラム3.2: 答ãˆã€€(P69)
      dBodyID body;
      dMass mass;             // 質é‡ãƒ‘ラメータ構造体
      dReal r = 0.5, l = 1.0, m = 10.0;  // åŠå¾„,長ã•,質é‡
      dReal x = 0.0, y = 0.0, z = 1.0; // ä½ç½®ã®åº§æ¨™
      dReal ax = 1, ay = 0, az = 0; // 回転軸ベクトル
      dReal angle = 45.0 * M_PI / 180.0; // M_PIã¯å††å‘¨çއbody = dBodyCreate(world);    // ボディã®ç”Ÿæˆ
      dMassSetZero(&mass);         // 質é‡ãƒ‘ラメータã®åˆæœŸåŒ–
      dMassSetCylinderTotal(&mass,m,3,r,l); // 質é‡è¨ˆç®—
      dBodySetMass(body,&mass);        // 質é‡ã®è¨­å®š
      dBodySetPosition(body,x, y, z);    // ä½ç½®ã®è¨­å®šdMatrix3 R;
      dRFromAxisAndAngle(R, ax, ay, az, angle); // 回転行列ã®è¨ˆç®—
      dBodySetRotation(body,R);          // å§¿å‹¢ã®è¨­å®š

    (最終更新日 2008-7-27)

    コメントをã©ã†ãž

    メールアドレスãŒå…¬é–‹ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“。

    1,841 views