ODE質å•ãƒ»è¦æœ›å‹Ÿé›†8!
ã“ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒï¼‘ï¼ï¼ä»¶ã‚’è¶…ãˆã¾ã—ãŸã®ã§ï¼Œæ–°ã—ã„質å•ã‚„è¦æœ›ã¯ODE質å•ãƒ»è¦æœ›å‹Ÿé›†ï¼™ï¼ã«ãŠé¡˜ã„ã—ã¾ã™ï¼ã“ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ã‚¯ãƒãƒ¼ã‚ºã—ã¾ã—ãŸã€‚
ã§ã‚€
ã“ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒï¼‘ï¼ï¼ä»¶ã‚’è¶…ãˆã¾ã—ãŸã®ã§ï¼Œæ–°ã—ã„質å•ã‚„è¦æœ›ã¯ODE質å•ãƒ»è¦æœ›å‹Ÿé›†ï¼™ï¼ã«ãŠé¡˜ã„ã—ã¾ã™ï¼ã“ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ã‚¯ãƒãƒ¼ã‚ºã—ã¾ã—ãŸã€‚
ã§ã‚€
ãŸã¤ã‚„ã•ん,
ODE-0.5ã¯ã‹ãªã‚Šå¤ã„ã®ã§ä½¿ã‚ãªã„æ–¹ãŒè‰¯ã„ã§ã™ï¼Žæœ€è¿‘ã®ã‚³ãƒ³ãƒ‘イラーã§ã¯ãƒ“ルドã§ããªã„ã¨æ€ã„ã¾ã™ï¼Ž
ã•ã¦ï¼Œc:\Program Files\CodeBlocks\MinGW\bin\ld.exe:
cannot find -lode_doubleã®ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹åŽŸå› ã¯ODEをビルドã™ã‚‹ã¨ãã«ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’DebugDoubleLibã«ã—ãªã‹ã£ãŸå¯èƒ½æ€§ãŒé«˜ã„ã§ã™ï¼Ž
c:\ode-0.10.1\lib\DebugDoubleLib\libode_doubled.aãŒã‚りã¾ã™ã‹ï¼Ÿ
ã§ã‚€
ã™ã¿ã¾ã›ã‚“.åˆå¿ƒè€…ã§ã™ï¼Ž
一番簡å˜ãã†ãªode-0.5ã‚’linuxã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã—ãŸ.
ãƒãƒœãƒƒãƒˆã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽæœ¬ã‚’見ãªãŒã‚‰ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã—ã¾ã—ãŸ.
コンパイルã™ã‚‹ã«ã¯å‹•ã™ã‚Œã°ã„ã„ã®ã§ã—ょã†ï¼Ÿ
御回ç”よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã¯ã˜ã‚ã¾ã—ã¦ãŸã¤ã‚„ã¨ç”³ã—ã¾ã™ã€‚
code::blocksã§ã®ODEビルドã§è¡Œãè©°ã£ã¦ã„ã¾ã™ï¼Ž
最後ã®
c:\ode-0.10.1\robosimu\src\robosimu.workspace をDebugLibã§ãƒ“ルドã™ã‚‹
ã¨
c:\Program Files\CodeBlocks\MinGW\bin\ld.exe:
cannot find -lode_double
ã¨ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¾ã™ï¼Ž
ãã®ãƒ•ォルダã«ã¯ã¡ã‚ƒã‚“ã¨ã‚¢ãƒ—リケーションファイルã®ldãŒã‚りã¾ã™ï¼Ž
ã©ã†ã™ã‚Œã°è§£æ±ºã§ãã¾ã™ã‹ï¼Ÿ
ã”回ç”ãŠé¡˜ã„ã—ã¾ã™ï¼Ž
å…ˆã»ã©ã®è¨˜äº‹ã«ã¤ã„ã¦ã§ã™ãŒã€è‡ªå·±è§£æ±ºã§ãã¾ã—ãŸã€‚以下ã«Cygwinã§ã‚³ãƒ³ãƒ‘イルã§ãã‚‹Makefileã‚’ã‚ã’ã¦ãŠãã¾ã™ã€‚ãŠé¨’ãŒã›ã—ã¾ã—ãŸã€‚
CC = g++ -Wall -fno-exceptions -fno-rtti -mwindows -g -DWIN32 -DCYGWIN
TARGET = sample1
OBJS = sample1.o
SOURCE = $(TARGET).cpp
HEADER =
LIBS = -L../../lib -L/usr/X11R6/lib -L/usr/lib -L/usr/local/lib
INDS = -I. -I../../include -I/usr/X11R6/include -I/usr/include
OPTS = -lstdc++ -lm -lode -ldrawstuff -lComctl32 -lkernel32 -luser32 -lgdi32 -lOpenGL32 -lGlu32 -lwinmm
OPT1 = -DdTRIMESH_ENABLED -DdDOUBLE
#windows specification rule
RESOURCE_FILE=resources.o
$(TARGET):$(OBJS) $(HEADER)
$(CC) -o $(TARGET) $(OBJS) $(LIBS) $(INDS) $(OPTS) $(RESOURCE_FILE)
$(OBJS):$(SOURCE) $(HEADER)
$(CC) -c $(SOURCE) $(LIBS) $(INDS) $(OPT1)
clean:
rm $(TARGET) $(OBJS) *.*~ *~ *.exe
ã™ã¿ã¾ã›ã‚“ã€å…ˆã»ã©ã®è¨˜äº‹ã«è¿½åŠ ã§ã™ã€‚
odeã¯ode-0.11を使用ã—ã¦ã„ã¾ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã¯ã˜ã‚ã¾ã—ã¦ã€‚時間ãŒã‚ã‚‹ã¨ãã«ç”ãˆã¦ã„ãŸã ã‘ãŸã‚‰å¹¸ã„ã§ã™ã€‚
コンパイル+実行ã«ã¤ã„ã¦è³ªå•ã§ã™ã€‚
Windowsã§Cygwinを使ã„odeを実行ã—ãŸã„ã®ã§ã™ãŒã€ãƒ†ã‚¹ãƒˆãƒ•ァイル(demo_baggy.cppãªã©)ã¯ãƒ‡ãƒ•ォルトã®Makefileã§ã‚³ãƒ³ãƒ‘イル+実行ã§ããŸ(ソースã®å†…å®¹ã‚’æ›¸ãæ›ãˆã¦ã‚‚ã§ãã¾ã—ãŸ)ã®ã§ã™ãŒã€è‡ªä½œã®ãƒ•ァイルを出æ‘ã•ã‚“ã®sample1ã«å…¥ã£ã¦ã„ãŸMakefileを使ã†ã¨ã‚³ãƒ³ãƒ‘イルã§ãã‚‹ã®ã§ã™ãŒå®Ÿè¡Œã§ãã¾ã›ã‚“。
sample1ã¯http://demura.net/archives/9ode/ode5.htmlã®sample1-071001.tgzã«å«ã¾ã‚Œã¦ã„ã‚‹ã‚‚ã®ã§ã™ã€‚Makefile.cygwinも試ã—ã¾ã—ãŸãŒåŒã˜çµæžœã§ã—ãŸã€‚
実行ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ã‚ˆã†ãªè¡¨ç¤ºãŒã§ã¾ã™ã€‚
ODE Message 2: inertia must be positive definite in dMassCheck() File mass.cpp Line 53
ODE Message 2: inertia must be positive definite in dMassCheck() File mass.cpp Line 53
ODE INTERNAL ERROR 1: assertion “dMassCheck(mass)” failed in dBodySetMass() [ode.cpp]
Aborted (core dumped)
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
早速自分ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ã¨ç…§ã‚‰ã—åˆã‚ã›ãªãŒã‚‰è©¦ã—ã¦ã¿ãŸã„ã¨æ€ã„ã¾ã™ï¼Žã€€ã¾ãŸä½•ã‹ã‚りã¾ã—ãŸã‚‰ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
hideã•ん,
明日ã‹ã‚‰å‡ºå¼µã§ã‚ã¾ã‚Šæ™‚é–“ã‚’å–れãªã„ã®ã§ODE講座31ã«ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã ã‘示ã—ã¾ã—ãŸï¼Ž
http://demura.net/9ode/3561.html
ã‚ã‹ã‚‰ãªã„ã¨ã“ã‚ã¯ã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„.
ã§ã‚€
質å•ã«é–¢ã—ã¦ã¯ã“ã¡ã‚‰ã®æŽ²ç¤ºæ¿ã¨ã„ã†ã“ã¨ã§ï¼Œã¯ã˜ã‚ã¦æŠ•ç¨¿ã•ã›ã¦ã„ãŸã ãã¾ã™hideã¨ã„ã„ã¾ã™ï¼Ž
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã•ã£ãã質å•ãªã®ã§ã™ãŒï¼Œç¾åœ¨ï¼Œå‹‰å¼·ã®ä¸€ç’°ã¨ã—ã¦ODEを使用ã—ãŸã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ¢ãƒ‡ãƒ«ã‚’作æˆã—ã¦ã„ã¾ã™ï¼Ž
ãã“ã§ä¸€ã¤ãŠèžãã—ãŸã„ã®ã§ã™ãŒï¼Œä»®ã«ç©ºé–“上ã«åˆæœŸé«˜ã•ã®ç•°ãªã‚‹ï¼’ã¤ã®ãƒœãƒ¼ãƒ«A,Bã‚’åŒæ™‚ã«è½ä¸‹ã•ã›ï¼Œãれらã®ãƒœãƒ¼ãƒ«ãŒåœ°é¢ã¨è¡çªã™ã‚‹éš›
今地é¢ã«ã¶ã¤ã‹ã£ãŸã®ã¯Aã®ãƒœãƒ¼ãƒ«ã§ã‚ã‚‹
ã¨å€¤ã‚’è¿”ã™ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã—ょã†ã‹ï¼Žã¾ãŸå¯èƒ½ã§ã‚ã‚‹ãªã‚‰ã©ã†ã„ã£ãŸã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«ãªã‚‹ã‹æ•™ãˆã¦ã„ãŸã ã‘れã°å¹¸ã„ã§ã™ï¼Ž
ãªã«ã¶ã‚“ODEã«é–¢ã—ã¦åˆå¿ƒè€…ã§ã—ã¦å˜ç´”ãªè³ªå•ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã™ã„ã¾ã›ã‚“。ã‚ã„ã•ã¤ã‚’忘れã¾ã—ãŸã€‚ã¯ã˜ã‚ã¾ã—ã¦ã€‚
å…ˆã»ã©ã®è³ªå•ã§ã™ãŒã€åœ°é¢ã‚¸ã‚ªãƒ¡ãƒˆãƒªã®dCreatePlaneãŒã‚ˆããªã„ã“ã¨ãŒã‚ã‹ã‚Šã¾ã—ãŸã€‚Planeã¯ä¸å…·åˆãŒå‡ºã‚‹ã‚ˆã†ã§ã™ã€‚地é¢ã®ä»£ã‚りã«å¹³ãŸã„立方体をé…ç½®ã™ã‚‹ã“ã¨ã§è§£æ±ºã—ã¾ã—ãŸã€‚
ODEã§ç‰©ä½“ã«å¯¾ã—ã¦å¤–部ã‹ã‚‰åŠ›ã‚’åŠ ãˆã¦ã„ãªã„ã®ã«ã€æ™‚é–“ãŒã—ã°ã‚‰ã経éŽã—ãŸå¾Œã«ç‰©ä½“ãŒå‹•ã出ã™ï¼ˆæŒ¯å‹•ãŒã ã‚“ã ã‚“æ¿€ã—ããªã‚‹ã‚ˆã†ãªå‹•ã)ã“ã¨ã¯ã‚りã¾ã™ã‹ï¼Ÿå††æŸ±ã‚’地é¢ã«ç«‹ã¦ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ ã§ãŠãã¦ã„ã¾ã™ã€‚
lylaã•ã‚“
一件è½ç€ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã¾ãŸã€ä½•ã‹ã‚ã£ãŸã‚‰ã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„。
ã§ã‚€
ã“ã‚“ã°ã‚“ã¯ã€‚
確ã‹ã«ã€é©å½“ã«100個ã®é…列ã§é–¢ç¯€ã‚’定義ã—ã¦100個æç”»ã—ã¦ã‚‚何らå•題ã‚りã¾ã›ã‚“ã。
ã¡ã‚‡ã£ã¨æ›¸ã方もã”ã¡ã‚ƒã”ã¡ã‚ƒã—ã¦ã„ãŸã®ã§ã€ç‰©ä½“ã¨é–¢ç¯€ã‚’ãれãžã‚Œ1ã¤ã®é…列ã«ã—ã¦æ›¸ãç›´ã—ã¦ã¿ãŸã¨ã“ã‚ã€å•題ãªã実行ã§ãã¾ã—ãŸã€‚
çµå±€åŽŸå› ãŒã‚ã‹ã‚Šã¾ã›ã‚“ãŒã€ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã®å•題ã§ã‚ã£ãŸã“ã¨ã¯é–“é•ã„ã‚りã¾ã›ã‚“。
ã”親切ã«å›žç”ã„ãŸã ãã¾ã—ã¦èª ã«ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
lylaã•ã‚“ã€
dBodySetMass()ã¯dMassSetBoxTotal()ã®ã™ã後ã«ã—ãŸæ–¹ãŒè‰¯ã„ã¨ã¯æ€ã„ã¾ã™ãŒã€ãれ以外ã¯å•題ãªã•ãã†ã§ã™ã。
å›ºå®šé–¢ç¯€ã®æ•°ã«ä¸Šé™ãŒã‚ã‚‹ã¨ã¯èžã„ãŸã“ã¨ãŒã‚りã¾ã›ã‚“。固定関節ã ã‘を使ã†ç°¡å˜ãªãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã™ã‚‹ã¨ãƒã‚§ãƒƒã‚¯ã¯ã§ãã‚‹ã¨æ€ã„ã¾ã™ã€‚
å·®ã—æ”¯ãˆãªã‘れã°ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’é€ã£ã¦ã‚‚é ‚ã‘れã°ç§ã®ç’°å¢ƒã§ã‚‚åŒæ§˜ãªç¾è±¡ãŒç”Ÿãšã‚‹ã‹è©¦ã—ã¦ã¿ã¾ã™ãŒã€‚
ã§ã‚€
ã“ã‚“ã°ã‚“ã¯ã€‚
今ã¾ã§å•題ãªã使用ã§ãã¦ã„ãŸé€šã‚Šã«ãƒœãƒƒã‚¯ã‚¹ã‚’æ–°ãŸã«ä½œã‚Šã€æ—¢å˜ã®ãƒœãƒƒã‚¯ã‚¹ã¨å›ºå®šã™ã‚‹ã‚ˆã†ã«ã—ãŸã¨ã“ã‚エラーãŒå‡ºã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚
コーディングã«é•ã„ã¯ãªã„ã®ã§ã€è©¦ã—ã«æ—¢å˜ã®ç‰©ä½“ã‚’1ã¤æ¶ˆã—ãŸä¸Šã§æ–°è¦ã®ãƒœãƒƒã‚¯ã‚¹ã‚’è¿½åŠ ã—ãŸã¨ã“ã‚ã€æ£å¸¸ã«ãªã‚Šã¾ã—ãŸã€‚
ã•らã«ã€æ—¢å˜ã®ç‰©ä½“ã ã‘ã®çŠ¶æ…‹ã§é©å½“ãªç‰©ä½“åŒå£«ã«æ–°ãŸã«å›ºå®šé–¢ç¯€ã‚’作ã£ãŸã¨ã“ã‚ã€ã‚¨ãƒ©ãƒ¼ã¨ãªã‚Šã¾ã—ãŸã€‚
ã¨ã„ã†ã‚ã‘ã§ã€ã©ã†ã‚„ら今使ã£ã¦ã„ã‚‹å›ºå®šé–¢ç¯€ã®æ•°ãŒé™ç•Œã§ã‚ã‚‹ã‹ã®ã‚ˆã†ã«æ„Ÿã˜ã¾ã™ã€‚(高々10個程度ãªã®ã§ã™ãŒãƒ»ãƒ»ãƒ»ï¼‰
ãã†ã„ã£ãŸã“ã¨ã¯ã‚ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
ã¡ãªã¿ã«ã‚³ãƒ¼ãƒ‰ã¯ä¸‹è¨˜ã®ã‚ˆã†ã«æ›¸ã„ã¦ã„ã¾ã™ã€‚
body.body = dBodyCreate(world);
dBodySetPosition(body.body, X,Y,Z );
dMassSetBoxTotal(&cm,質é‡,L,W,H);
body.geom = dCreateBox(space,L,W,H);
dGeomSetBody(body.geom, body.body);
dBodySetMass(body.body,&cm);
//固定関節
fix = dJointCreateFixed (world,0);
dJointAttach (fix,body.body, body2.body);
dJointSetFixed(fix);
lylaã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
placeable(é…ç½®å¯èƒ½ï¼‰ã¨non-placeable(é…ç½®ä¸å¯èƒ½ï¼‰ã¯ODE User manualã§ã¯æ¬¡ã®ã‚ˆã†ã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚
“A placeable geom has a position vector and a 3*3 rotation matrix, just like a rigid body, that can be changed during the simulation. A non-placeable geom does not have this capability”
spaceã¨planeクラスã¯non-placeableã§ã™ã€‚
dGeomSetBody(),dGeomGetBody(),dGeomSetPosition(), dGeomGetPosition(),dGeomSetRotation(),dGeomGetRotation(), dGeomSetQuaternion(),dGeomGetQuaternion()ãªã©ã§non-placable geomを引数ã«å…¥ã‚Œã‚‹ã¨â€geom must be placeableâ€ã®ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¾ã™ã€‚
固定ã«é–¢ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã§è©²å½“箇所ã¯ã‚りã¾ã›ã‚“ã‹ï¼Ÿ
ã§ã‚€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ç¾åœ¨è»Šä¸¡ãƒ¢ãƒ‡ãƒ«ã‚’作ã£ã¦ã„ã‚‹ã®ã§ã™ãŒã€
æ§‹æˆã—ã¦ã„ã‚‹16個ã®ç‰©ä½“ã«ã€æ–°ãŸã«è¿½åŠ ã—ãŸç‰©ä½“ã‚’dJointSetFixedã§å›ºå®šã—よã†ã¨ã™ã‚‹ã¨ã€”geom must be placeable”ã¨ã„ã†ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã—ã¾ã„ã¾ã™ã€‚
固定ã«é–¢ã™ã‚‹éƒ¨åˆ†ã‚’コメントアウトã™ã‚Œã°ã‚³ãƒ³ãƒ‘イルã¯é€šã‚Šã¾ã™ã€‚
扱ãˆã‚‹ç‰©ä½“ã®æ•°ã«åˆ¶é™ãŒã‚ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
よã‚ã—ããŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
Miyaã•ã‚“ã€
最近OS Xã¯å…¨ã使ã£ã¦ã„ãªã„ã®ã§åŠ©ã‹ã‚Šã¾ã™ã€‚
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã§ã‚€
ã§ã‚€ã•ã‚“ã€2009-02-23ã«è³ªå•ã—ãŸä»¶ã§ã™ãŒã€ãªã‚“ã¨ã‹è§£æ±ºã—ã¾ã—ãŸã®ã§ã€å ±å‘Šã•ã›ã¦é ‚ãã¾ã™ã€‚
ODE関連ã®ãƒ•ァイルを削除ã—ã¦å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚‚改善ã—ã¾ã›ã‚“ã§ã—ãŸãŒã€demoフォルダã«å…¥ã£ã¦ã„るファイルã¯ç„¡äº‹ã«ã‚³ãƒ³ãƒ‘イルã•れã¦ã„ãŸã®ã§ã€demoフォルダã®makefileã¨æ¯”較ã—ã¦èª¿ã¹ã¦ã¿ã¾ã—ãŸã€‚
ãã®çµæžœã€ã§ã‚€ã•ã‚“ã®makefileã‚’å‚考ã«ä½œã£ãŸç§ã®makefileã§ã¯ã€ä¸‹è¨˜ã®æŒ‡å®šãŒè¶³ã‚Šãªã„ã“ã¨ãŒåˆ¤ã‚Šã¾ã—ãŸã€‚
-DdTRIMESH_ENABLED -DdDOUBLE
ãã“ã§ã€makefileã«ä¸Šè¨˜ã‚’è¿½åŠ ã—ãŸã‚‰ç„¡äº‹ã«ã‚³ãƒ³ãƒ‘イルã§ãる様ã«ãªã‚Šã¾ã—ãŸã€‚
ã¡ã‚‡ã£ã¨é•·ããªã‚Šã¾ã™ãŒã€ä¿®æ£ã—ãŸmakefileã¯ä¸‹è¨˜ã®é€šã‚Šã§ã™ã€‚
CC = g++ -I -O2 -Wall -g
TARGET = hello
OBJS = $(TARGET).o
SOURCE = $(TARGET).cpp
HEADER =
LIBS = -L../../drawstuff/src -L/usr/local/lib -L/usr/X11R6/lib -L/usr/X11R6/lib
INDS = -I. -I../../include -I/usr/local/include -I/usr/X11R6/include
OPTS = -lm -lode -ldrawstuff -lX11 -framework OpenGL -framework Carbon -framework AGL
OPT1 = -DdTRIMESH_ENABLED -DdDOUBLE
$(TARGET):$(OBJS) $(HEADER)
$(CC) -o $(TARGET) $(OBJS) $(LIBS) $(INDS) $(OPTS)
$(OBJS):$(SOURCE) $(HEADER)
$(CC) -c $(SOURCE) $(LIBS) $(INDS)$(OPT1)
clean:
rm $(TARGET) $(OBJS) *.*~ *~
ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ‰‹é †ã‚‚ä»¥å‰ã«æ›¸ã„ãŸã‚‚ã®ã§ã¯è¶³ã‚Šãªã„部分ãŒã‚ã£ãŸã®ã§ã€
å ±å‘Šã—ã¦ãŠãã¾ã™ã€‚
sh autogen.sh
./configure –enable-double-precision
make
sudo make install
sudo mkdir -p /usr/local/include/drawstuff
sudo cp include/drawstuff/version.h /usr/local/include/drawstuff
sudo cp include/drawstuff/drawstuff.h /usr/local/include/drawstuff
sudo cp drawstuff/src/libdrawstuff.la /usr/local/lib
sudo cp drawstuff/src/.libs/libdrawstuff.a /usr/local/lib
何故ã‹ã€drawstuff関連ã®ãƒ•ァイルã¯ä¸Šæ‰‹ãインストールã•れãªã„様ã§ã€
è¿½åŠ ã§ã‚³ãƒ”ーã™ã‚‹å¿…è¦ãŒã‚りã¾ã—ãŸã€‚
ã§ã‚€ã•ã‚“
早々ã®å›žç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
(const double *)ã§ã‚ャストã—ã¦è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚
コンパイルã¯å‡ºæ¥ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸãŒã€ã‚„ã¯ã‚Šå˜ç²¾åº¦ã§å®Ÿè¡Œã—ãŸæ™‚åŒæ§˜ã«ODE Message2ã®ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã—ã¾ã„ã¾ã™ã€‚
Miyaã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚以下ã®ã‚¨ãƒ©ãƒ¼ã¯ï¼‘番目ã®å¼•æ•°ã‚’(const double *)ã§ã‚ャストã™ã‚Œã°ç›´ã‚‹ã¨æ€ã„ã¾ã™ã€‚ãŸã ã—ã€ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã§ã¯ã‚ã–ã‚ã–ã‚ャストã™ã‚‹å¿…è¦ã¯ãªã„ã®ã§ã€å˜ç²¾åº¦ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‹ã€ã¾ãŸã¯ã€å˜ç²¾åº¦ã§ãƒ“ルドã—ãŸãƒ©ã‚¤ãƒ–ラリを使用ã—ã¦ã„ã‚‹ã‹ã®å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚
ã‚ャストã—ã¦ã‚‚ODE Message2ã®ã‚¨ãƒ©ãƒ¼ãŒå‡ºã‚‹ã‹æ•™ãˆã¦ãã ã•ã„。
ãªãŠã€ODE並ã³ã«ODE関連ã®ç’°å¢ƒå¤‰æ•°ã‚’削除ã—ã¦ã‹ã‚‰ã€å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹æ–¹æ³•ãŒä¸€ç•ªæ™‚間を節約ã§ãã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
ã§ã‚€
hello.cpp: In function ‘void simLoop(int)’:
hello.cpp:32: error: cannot convert ‘const dReal*’ to ‘const double*’ for argument ‘1’ to ‘void dsDrawSphereD(const double*, const double*, float)’
make: *** [hello.o] Error 1
ã¯ã˜ã‚ã¾ã—ã¦
MacBookPro(OS X 10.5.6)ã«ODE10.0.1をインストールã—ã¦ã‚µãƒ³ãƒ—ルファイルhello.cppã‚’makeã—よã†ã¨ã—ã¦ã„ã‚‹ã®ã§ã™ãŒã€ã©ã†ã—ã¦ã‚‚上手ãã„ãã¾ã›ã‚“。
アドãƒã‚¤ã‚¹ã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚
ã¾ãšã€ä¸‹è¨˜ã®ã‚¨ãƒ©ãƒ¼ãŒã§ã‚‹ã®ã§ã€æœ¬WEBを検索ã—ãŸã¨ã“ã‚ã€å€ç²¾åº¦ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ç›´ã™å¿…è¦ãŒã‚ã‚‹ã¨ã®ã“ã¨ã§ã€æ•°å›žã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ç›´ã—ã¦ã¿ãŸã®ã§ã™ãŒã€
エラーãŒå›žé¿å‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚
config.logを確èªã—ã¦ã‚‚å€ç²¾åº¦ã«è¨å®šã•れã¦ã„る様ãªã®ã§ã€åŽŸå› ãŒä¸æ˜Žã§ã™ã€‚ã‚‚ã—ã‹ã—ãŸã‚‰ã€ä½•回もインストールã—ç›´ã—ãŸç‚ºã€å˜ç²¾åº¦ã®è¨å®šã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸåˆ¥ã®ODEãŒå‹•ã„ã¦ã„ã‚‹ã®ã‹ã‚‚ã—れãªã„ã®ã§ã™ãŒã€
確èªã®æ–¹æ³•ãŒã‚ã‹ã‚Šã¾ã›ã‚“。ã©ã†ã™ã‚Œã°ç¢ºèªå‡ºæ¥ã‚‹ã‹ã‚„ã€æ£ã—ã„å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•をアドãƒã‚¤ã‚¹é ‚ã‘ãªã„ã‹ã¨æ€ã„ã¾ã™ã€‚
エラー内容
hello.cpp: In function ‘void simLoop(int)’:
hello.cpp:32: error: cannot convert ‘const dReal*’ to ‘const double*’ for argument ‘1’ to ‘void dsDrawSphereD(const double*, const double*, float)’
make: *** [hello.o] Error 1
ãªãŠã€å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ä¸‹è¨˜ã®æ‰‹é †ã§è¡Œã„ã¾ã—ãŸã€‚
sh autogen.sh
./configure –with-drawstuff=OSX –with-trimesh=opcode –enable-double-precision –enable-debug
make
sudo make install
ã©ã†ã—ã¦ã‚‚回é¿å‡ºæ¥ãªã‹ã£ãŸã®ã§ã€hello.cppã®è¨å®šã‚’å˜ç²¾åº¦ã«å¤‰æ›´ã—ã¦
makeã—ãŸã¨ã“ã‚ã€ã‚³ãƒ³ãƒ‘イルã¯å‡ºæ¥ã‚‹æ§˜ã«ãªã£ãŸã‚“ã§ã™ãŒã€ä»Šåº¦ã¯ä¸‹è¨˜ã®ã‚¢ãƒ©ãƒ¼ãƒ ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚
(dsDrawSphereDã‚’dsDrawSphereã«å¤‰æ›´ï¼‰
ODE Message 2: inertia must be positive definite in dMassCheck() File mass.cpp Line 53
ODE Message 2: inertia must be positive definite in dMassCheck() File mass.cpp Line 53
ODE INTERNAL ERROR 1: assertion “dMassCheck(mass)” failed in dBodySetMass() [ode.cpp]
Abort trap
ã“れも検索ã—ãŸã¨ã“ã‚ã€10.0.1ã§åŒæ§˜ã®ã‚¢ãƒ©ãƒ¼ãƒ ãŒç™ºç”Ÿã—ãŸã¨ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒä¸‹è¨˜ãƒšãƒ¼ã‚¸ã«ã‚ã£ãŸã®ã§ã™ãŒã€è§£æ±ºæ–¹æ³•ãŒæ›¸ã„ã¦ã¾ã›ã‚“ã§ã—ãŸã€‚
http://demura.net/9ode/538.html
ソース内ã®å¤‰æ•°ã‚’1ï¼å€ã«ã™ã‚‹ç‰è©¦ã—ã¦ã¿ã¾ã—ãŸãŒã€ä¸Šæ‰‹ãã„ãã¾ã›ã‚“。
ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯æœ¬ã®ã¨ãŠã‚Šãªã®ã§ã€inartiaãŒãƒžã‚¤ãƒŠã‚¹ã¨ã„ã†ã“ã¨ã‚‚ãªã„ã¯ãšã§ã™ã€‚ä»–ã«åŽŸå› ãŒã‚ã‚‹ã¯ãšãªã®ã§ã™ãŒã€ã‚ã‹ã‚Šã¾ã›ã‚“。
アドãƒã‚¤ã‚¹ã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚
kumaã•ã‚“ã€
剣玉ã¯é¢ç™½ãã†ã§ã™ãã€‚é ‘å¼µã‚Œã°ãƒ¢ãƒ‡ãƒ«ã¯ã§ãã‚‹ã¨æ€ã„ã¾ã™ãŒã€ãれを上手ã«åˆ¶å¾¡ã—ã¦çŽ‰ã‚’å‰£ã«å…¥ã‚Œã‚‹ã“ã¨ã¯ç°¡å˜ã§ã¯ã‚りã¾ã›ã‚“。
確ã‹ã€ATRã®å·äººå…ˆç”Ÿã‚‰ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒå‰£çŽ‰ã‚’å¦ç¿’ã™ã‚‹ãƒãƒœãƒƒãƒˆã‚’発表ã—ãŸã“ã¨ãŒã‚ã£ãŸã¨æ€ã„ã¾ã™ã€‚
å’ç ”é ‘å¼µã£ã¦ãã ã•ã„。
ã§ã‚€
ã§ã‚€ã•ん返事ãŒé€ã‚Œã¦ã™ã„ã¾ã›ã‚“。
å‰å›žè³ªå•ã—ãŸç†ç”±ãªã‚“ã§ã™ãŒã€ä»Šå’ç ”ã§ã‘ã‚“ã ã¾ã‚’作ã£ã¦ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
センサーã§å–ã£ãŸå€¤ã‚’ODEã®ãƒ–ãƒãƒƒã‚¯ã®åº§æ¨™ã«ã‚ã‚ã›ã¦ç‰©ä½“ã‚’å‹•ã‹ã—ã¦çŽ‰ã‚’ã¯ã˜ã“ã†ã¨ã—ãŸã®ã§ã™ãŒã€ã“ã®ã‚„りã‹ãŸã ã¨å‹•ã„ã¦ã‚‹ã‚ˆã†ã«ã¯è¦‹ãˆã‚‹ã®ã§ã™ãŒæ¯Žå›žåº§æ¨™ã‚’入力ã—ã¦ã„ã‚‹ã®ã§ã€ç‰©ä½“ãŒå‹•ã力ãŒç™ºç”Ÿã›ãšã«ã‘ã‚“ã ã¾ã¯å‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚
ã¨ã‚Šã‚ãˆãšä»Šé•ã†ãƒ—ãƒã‚°ãƒ©ãƒ を作りãªã‚“ã¨ã‹ãƒ‡ãƒ¢ã¯è¦‹ã›ã‚‰ã‚Œã‚‹ã®ã§ã™ãŒã€ã‘ã‚“ã ã¾ã®ã“ã¨ã‚’ãƒ¬ã‚¸ãƒ¥ãƒ¡ã«æ›¸ã„ã¦ã—ã¾ã£ãŸãŸã‚ã€ã“ã®å¾Œã‚‚作らãªã‘れã°ãªã‚‰ãªããªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
説明ãŒã‚ã¾ã‚Šä¼ã‚ã£ã¦ã„ã‚‹ã‹ã‚ã‹ã‚Šã¾ã›ã‚“ãŒ
ã¨ã‚Šã‚ãˆãšèžããŸã„ã“ã¨ã¯ã€ï¼¯ï¼¤ï¼¥ã§ã‘ã‚“ã ã¾ã‚’作りシミュレーションã¯ã§ãã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ
ã‚‚ã—å˜ç´”ã«ã€Œç‰©ä½“ã‚’ã©ã®è»¸å’†å“®ã«ã„ãã¤ãšã‚‰ã™ã€ã¨è¨€ã†ã‚ˆã†ãªã“ã¨ãµãŒå‡ºæ¥ã‚‹ãªã‚‰ã°ãªã‚“ã¨ã‹ãªã‚‹ã‚ˆã†ãªæ°—ã‚‚ã™ã‚‹ã‚“ã§ã™ãŒãƒ»ãƒ»ãƒ»
ã‚‚ã—出æ¥ã‚‹ã®ã§ã‚れã°ã¾ãŸã„ã‚ã„ã‚ã¨ãŠèžãã—ãŸã„ã“ã¨ãŒå‡ºã‚‹ã¨æ€ã„ã¾ã™ã€‚
å¿™ã—ã„ã¨æ€ã„ã¾ã™ãŒã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
kumaã•ん,
ãŠäº’ã„å¿™ã—ã„ã¿ãŸã„ã§ã™ã.
http://demura.net/9ode/2817.html
ã§ã¯ã ã‚ã§ã™ã‹ï¼Ÿ
ã§ã‚€
å…ˆã»ã©ã®æ›¸ãè¾¼ã¿ãŒåæ˜ ã•れã¦ã„ãªã„よã†ãªã®ã§ã™ãŒã€æ€¥ã„ã§è§£æ±ºã—ãŸã„ã®ã§ã‚‚ã†ä¸€åº¦æŠ•稿ã•ã›ã¦ã‚‚らã„ã¾ã™ã€‚
ODEã®ç‰©ä½“を回転ã•ã›ã‚‹éš›ã«ã€ãƒˆãƒ«ã‚¯ã®åŠ›ã‚’åˆ¶å¾¡ã—ã¦å›žã™ã®ã§ã¯ãªã角度ã§å®£è¨€ã—ã¦ç‰©ä½“ã®è§’度を変ãˆã‚‹ã“ã¨ã¯å¯èƒ½ã§ã—ょã†ã‹ï¼Ÿ
demuã•ã‚“ãŠä¹…ã—ã¶ã‚Šã§ã™ã€‚
物体を回転ã•ã›ãŸã„ã®ã§ã™ãŒãƒˆãƒ«ã‚¯ã§å›žè»¢ã•ã›ã‚‹ä»¥å¤–ã«è§’度を指定ã—ã¦å›žè»¢ã•ã›ã‚‹æ–¹æ³•ã¯ãªã„ã§ã—ょã†ã‹ï¼Ÿ
ODEã§åŠ é€Ÿåº¦ã®è¨ˆç®—ã«å¿…è¦ãªãƒžãƒˆãƒªã‚¯ã‚¹ã‚’å–り出ã™ã«ã¯ã©ã†ã—ãŸã‚‰ã‚ˆã„ã®ã§ã—ょã†ï¼ŸåŠ é€Ÿåº¦ãŒa, Mass Matrix ãŒM, トルクãŒtauã€ãã®ä»–諸々ãŒXã«ã‚ã‚‹ã¨ã„ãŸã—ã¾ã—ã¦Ma = tau – X ã¨ã—ãŸå ´åˆã€æ›´ã«æ‹˜æŸæ¡ä»¶ã‚’記述ã—ãŸJacobianç‰ã‚’x=Jq’ + J’q ç‰ã¨ã—ãŸå ´åˆ M,tau,Xã€Jã€J’ ç‰ã‚’å–ã‚Šå‡ºã™æ–¹æ³•ã¯ã‚りã¾ã™ã§ã—ょã†ã‹ï¼Ÿã©ã†ãžã‚ˆã‚ã—ããŠé¡˜ã„申ã—上ã’ã¾ã™ã€‚
ãˆã˜ã‚“
ãªã‚‹ã»ã©ã€‚。。ä½ç½®åº§æ¨™ã«ã‚ˆã£ã¦æ¡ä»¶åˆ†å²ã•ã›ã‚Œã°ã‚ˆã„ã®ã§ã™ã。
幸ã„ã«ã‚‚ä½ç½®ã‚’å–å¾—ã™ã‚‹ã‚»ãƒ³ã‚µã¯åˆ¥ã®å®Ÿé¨“ã§å®Ÿè£…済ã¿ãªã®ã§ã€ã‚¹ãƒ ーズã«ã“ã®ä½œæ¥ãŒè¡Œãˆãã†ã§ã™ã€‚
ãŠç”ãˆé ‚ãã€ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸm(_ _)m
masaã•ん,
ãŠä¹…ã—ã¶ã‚Šã§ã™ã.
ã•ã¦ï¼Œã“ã®ï¼’種類ã®åœ°é¢ã¯åŒä¸€å¹³é¢ä¸Šã«ã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã‹ï¼Ÿã€€
ã‚‚ã—,ãã†ã§ã‚れã°ï¼Œã„ã‚ã„ã‚ãªå®Ÿç¾æ–¹æ³•ãŒã‚ã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
ã™ãæ€ã„ã¤ãã®ãŒï¼Œãƒœãƒ‡ã‚£ã¨åœ°é¢ã¨ã®æŽ¥è§¦ç‚¹ã®åº§æ¨™ã‚’常ã«èª¿ã¹ï¼Œãれらã®ç‚¹ãŒã‚る特定ã®é ˜åŸŸå†…ã«ã‚ã‚‹ã¨ãã ã‘æ‘©æ“¦ä¿‚æ•°ã‚’å°ã•ãã—,ãれ以外ã¯å¤§ããã™ã‚Œã°è‰¯ã„ã®ã§ã¯ãªã„ã§ã—ょã†ã‹ï¼Ÿã€€nearCallback関数ã®ä¸ã«ã‚³ãƒ¼ãƒ‰ã‚’書ã‘ã°è‰¯ã„ã¨æ€ã„ã¾ã™ï¼Ž
ã§ã‚€
ãŠä¹…ã—ã¶ã‚Šã§ã™ã€‚以å‰è³ªå•ã•ã›ã¦é ‚ã„ãŸmasaã¨ç”³ã—ã¾ã™ã€‚
今回ã®è³ªå•ãªã®ã§ã™ãŒã€ODE上ã§ï¼’種類ã®åœ°é¢ã‚’作るã“ã¨ã¯å¯èƒ½ãªã®ã§ã—ょã†ã‹ï¼Ÿï¼Ÿ
例ãˆã°ã€ã‚る特定ã®é ˜åŸŸã®åœ°é¢ã®ã¿æ‘©æ“¦ãŒãªã„ã¤ã‚‹ã¤ã‚‹ã§ã€
ãれ以外ã®åœ°é¢ã¯ã€æ‘©æ“¦ãŒã‚ã‚‹ã¨ã„ã£ãŸã‚ˆã†ãªæ„Ÿã˜ã®ã‚‚ã®ã§ã™ã€‚
ã™ã¿ã¾ã›ã‚“ãŒã€ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã—ã‚“ã„ã¡ã•ん,
ãŠå½¹ã«ç«‹ã¤ã®ã§ã‚れã°ã†ã‚Œã—ã„é™ã‚Šã§ã™ï¼Žã—ã‚“ã„ã¡ã•ã‚“ã®ãŠã‹ã’ã§ï¼¯ï¼¤ï¼¥ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’見直ã—ã¾ã—ãŸï¼Ž
講座3ï¼ã§ã‚ã‹ã‚‰ãªã„箇所ãŒã‚れã°ã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„.説明ãŒä¸å分ãªã®ã¯ã‚ã‹ã£ã¦ã„ã¾ã™ï¼Ž
ã¾ãŸï¼Œã‚³ãƒ¡ãƒ³ãƒˆã¾ã£ã¦ã„ã¾ã™ï¼Ž
ã§ã‚€
返信ãŠãããªã‚Šã€ç”³ã—訳ã”ã–ã„ã¾ã›ã‚“。
ã‚ã–ã‚ã–講座を作ã£ã¦ã„ãŸã ã„ã¦æ„Ÿæ¿€ã§ã™ã€‚
èªã‚“ã§å‹‰å¼·ã•ã›ã¦ã„ãŸã ããªãŒã‚‰ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’æ›¸ãæ›ãˆã¦ã„ã¾ã™ã€‚
ã¾ãŸã‚ã‹ã‚‰ãªã„ã“ã¨ãŒå‡ºã¦ããŸã‚‰è³ªå•ã•ã›ã¦ã„ãŸã ãã¾ã™ã€‚
ã”å›žç”æœ¬å½“ã«ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
å±±å£ã•ã‚“ã€
変ãªè³ªå•ã§ã¯ãªã„ã¨æ€ã„ã¾ã™ã€‚デフォルト値ã¯ã©ã†ãªã£ã¦ã„ã¾ã™ã‹ã¨ã„ã†æ„味もã‚ã£ãŸã®ã§ã¯ãªã„ã§ã—ょã†ã‹ï¼Ÿ
例ãˆã°ã€å発係数ã¯è¨å®šã—ãªã„é™ã‚Šï¼ã§ã™ã€‚陿¢æ‘©æ“¦ä¿‚æ•°ã¯å¿…ãšè¨å®šã—ãªã‘れã„ã‘ãªã„定数ã¨ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã§ã¯è¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚
ã“ã®ã‚µã‚¤ãƒˆã¯ã€åˆå¿ƒè€…å‘ã‘ã§ã™ã®ã§ã‚ã‹ã‚‰ãªã„ã“ã¨ã¯é æ…®ãªã何ã§ã‚‚ã”質å•ãã ã•ã„。ã“ã‚Œã«æ‡²ã‚Šãšã€ã¾ãŸã€ã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„ã。
ã§ã‚€
å発係数や,摩擦ã®ä¿‚æ•°ãªã©ã¯ï¼Œä½¿ç”¨ã™ã‚‹ãƒãƒœãƒƒãƒˆã¨ãã®ç’°å¢ƒã¨ã®é–¢ä¿‚ã‹ã‚‰è‡ªåˆ†ã§è¨ˆç®—ã—ã¦å€¤ã‚’出ã™ã‚‚ã®ã§ã™ã‚ˆã.
変ãªè³ªå•ã§ã™ã¿ã¾ã›ã‚“ã§ã—ãŸï¼Ž
å±±å£ã•ã‚“ã€
ã”質å•ã®æ„味ãŒã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“。å発係数ã¯ãƒ—ãƒã‚°ãƒ©ãƒ を書ã人ãŒãŠã‚„りã«ãªã„ãŸã„シミュレーションã«å¿œã˜ã¦æ±ºã‚れã°è‰¯ã„値ã§ã™ãŒ…. ã¡ãªã¿ã«ï¼ä»¥ä¸Šï¼‘以下ã®å€¤ã§ã™ã€‚
ã§ã‚€
ã—ã‚“ã„ã¡ã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚返事ãŒé…ããªã‚Šã™ã¿ã¾ã›ã‚“。
ã—ã‚“ã„ã¡ã•ã‚“ã®æ–¹æ³•ã§ã¯ã†ã¾ãã„ãã¾ã›ã‚“。dBodyVectorFromWorld(body, v[0],v[1],v[2], sv)ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’èªã‚“ã§ãã ã•ã„。ベクトルã®å‘ãを回転行列ã§å¤‰æ›´ã—ã¦ã„ã‚‹ã ã‘ã§ã™ã€‚
例ãˆã°ã€ãƒœãƒ¼ãƒ«ãŒæ¢ã¾ã£ã¦ã„ã‚‹ã¨ãã¯é€Ÿåº¦ãƒ™ã‚¯ãƒˆãƒ«ã¯ï¼ã§ã™ã€‚ã“れをdBodyVectorFromWorld()ã§å¤‰ãˆãŸã¨ã“ã‚ã§ï¼ã®ã¾ã¾ã§ã™ã€‚ã§ã‚‚ã€ãƒãƒœãƒƒãƒˆã¯ä¸¦é€²é‹å‹•並ã³ã«å›žè»¢é‹å‹•ã‚’ã—ã¾ã™ã®ã§ã€ç›¸å¯¾é€Ÿåº¦ãŒç”Ÿãšã‚‹ã‚ã‘ã§ã™ã€‚
絶対座標系ã§ã‚‚計算ã§ãã¾ã™ãŒã€ç›¸å¯¾åº§æ¨™ç³»ã§é€Ÿåº¦ã‚’計算ã™ã‚‹æ–¹ãŒã¨ã¦ã‚‚ç°¡å˜ã«ã§ãã¾ã™ã€‚ODE講座3ï¼ã«ãã®ã‚µãƒ³ãƒ—ルコードを載ã›ã¾ã—ãŸã€‚ã”å‚考ã«ãªã‚Œã°åŸ·ç†ã—ãŸç”²æ–ãŒã‚りã¾ã™ã€‚
ã§ã‚€
ãŠä¹…ã—ã¶ã‚Šã§ã™ï¼Ž
ã•ã£ããã§ã™ãŒï¼Œè³ªå•ã•ã›ã¦ã„ãŸã ãã¾ã™ï¼Ž
å発係数ã«ã¤ã„ã¦ãªã®ã§ã™ãŒï¼Œã“ã®å€¤ã¯ï¼Œã©ã†ã„ã†é¢¨ã«æ±ºã¾ã£ã¦ã„ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿä¿‚æ•°ã®å…·ä½“çš„ãªä¾‹ã¨ã„ã†ã‚‚ã®ã¯ãªã„ã®ã§ã—ょã†ã‹ï¼Ÿ
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
ã¯ã˜ã‚ã¾ã—ã¦ã€‚ã—ã‚“ã„ã¡ã¨ç”³ã—ã¾ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ãƒãƒœãƒƒãƒˆãŒæŠ•ã’ãŸãƒœãƒ¼ãƒ«ã®é€Ÿåº¦ã‚’ãƒãƒœãƒƒãƒˆã‹ã‚‰ã®ç›¸å¯¾åº§æ¨™ç³»ã§å–å¾—ã—ãŸã„ã®ã§ã™ã€‚
dReal *v = (dReal *)dBodyGetLinearVel(ball.body);
ã§çµ¶å¯¾åº§æ¨™ç³»ã§ã®é€Ÿåº¦ã‚’å–å¾—ã—ã€
dBodyVectorFromWorld(body, v[0],v[1],v[2], sv);
ã§ç›¸å¯¾é€Ÿåº¦ã«å¤‰æ›ã§ãã‚‹ã®ã§ã¯ãªã„ã‹ã€ã¨è€ƒãˆã¦ãƒ—ãƒã‚°ãƒ©ãƒ を書ã„ã¦ã¿ã¦ã¯ã„ã‚‹ã®ã§ã™ãŒã€dBodyVectorFromWorldã§æ‰±ã†dVector3ã‚’ã©ã†å®šç¾©ã—ã¦ä½¿ãˆã°ã„ã„ã®ã‹ã‚ã‹ã‚Šã¾ã›ã‚“。ãã—ã¦ã“ã®æ–¹æ³•ãŒæ£ã—ã„ã®ã‹ã©ã†ã‹ã‚‚ã‚ã‹ã‚Šã¾ã›ã‚“。
æ•™ãˆã¦ãã ã•ã„。よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã—ã‚“ã”ã•ん,
一番簡å˜ãªæ–¹æ³•ã¯ï¼Œéžå¸¸ã«å°ã•ã,軽ã„ボディをリンクã®ä¸¡ç«¯ã«ä»˜ã‘,dBodyGetPositoin()ã§ãã®ä½ç½®ã‚’å–å¾—ã™ã‚‹æ–¹æ³•ã§ã™ï¼Ž
ä½ç½®ã‚»ãƒ³ã‚µã‚’å–り付ã‘ã‚‹ã¨è€ƒãˆã¦ãã ã•ã„.
ã§ã‚€
リンクã®ä¸¡ç«¯ã®ä½ç½®åº§æ¨™ã‚’å–å¾—ã—ãŸã„ã®ã§ã™ãŒã€è‰¯ã„方法ã¯ã‚ã‚‹ã§ã—ょã†ã‹ï¼Ÿ
ã¤ãªãŒã£ã¦ã„るジョイントã®åº§æ¨™ã‚’å–å¾—ã™ã‚‹ã®ãŒç°¡å˜ãªã®ã§ã™ãŒãƒ»ãƒ»ãƒ»
umeã•ã‚“ã€
何ãŒåŽŸå› ã§ã€ã©ã†ã‚„ã£ãŸã‚‰è§£æ±ºã—ãŸã‹æ•™ãˆã¦é ‚ã‘ãªã„ã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€
ã™ã¿ã¾ã›ã‚“。ã¨ã‚Šã‚ãˆãšã‚¨ãƒ©ãƒ¼ã‚’ç›´ã™ã“ã¨ãŒã§ãã¾ã—ãŸã€‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
umeã•ã‚“ã€
drawstuffã®è¨å®šã®ã¨ã“ã‚ã§ã€fn->version = DS_VERSIONã¨ã—ã¦ã„ã‚‹ã¨æ€ã„ã¾ã™ã€‚
ã“ã®ã‚¨ãƒ©ãƒ¼ã¯fn->version㌠DS_VERSIONより大ãã„ã¨ãã«ã§ã¾ã™ã€‚何をã—ãŸã‚‰ã“ã®ã‚¨ãƒ©ãƒ¼ãŒå‡ºãŸã®ã§ã—ょã†ã‹ï¼Ÿ
ã§ã‚€
ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚調ã¹ã¦ã¿ã¾ã™ã€‚
ã‚‚ã†ä¸€ã¤è³ªå•ãªã®ã§ã™ãŒã€bad version number in dsFunctions structureã¨ã„ã†ã‚¨ãƒ©ãƒ¼ãŒå‡ºãŸã®ã§ã™ãŒã©ã®ã‚ˆã†ãªç‚¹ãŒãŠã‹ã—ã„ã®ã§ã™ã‹ï¼Ÿ
umeã•ん,
ã¯ã˜ã‚ã¾ã—ã¦ï¼Ž
ç§ã¯å¸¸å¾®åˆ†æ–¹ç¨‹å¼ã‚’è§£ãAPIを知りã¾ã›ã‚“.
ãªãŠï¼ŒODEã®å…¨APIã¯ä»¥ä¸‹ã®ãƒšãƒ¼ã‚¸ã§è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼Ž
http://opende.sourceforge.net/docs/index.html
ã§ã‚€
ã¯ã¤ã•ん,
謎ã§ã™ã.
例ãˆã°ï¼Œï¼’回目以é™å‹æ‰‹ã«æ¶ˆãˆã‚‹ã¨ã„ã†ã‚ãŒã¾ã¾ãªsphereã‚’boxã«å¤‰æ›´ã—ã¦ã‚‚消ãˆã‚‹ã§ã—ょã†ã‹ï¼Ÿã€€ã“ã®æ™‚,æç”»ã ã‘boxã«å¤‰æ›´ã—ã¦ãã ã•ã„.
ã§ã‚€
ã¯ã˜ã‚ã¾ã—ã¦ã€ãŠããŒã„ã—ã¾ã™ã€‚
今回二足æ©è¡Œã®ãƒãƒœãƒƒãƒˆã‚’ODEã§ãŠã“ãªã£ã¦ã„ã‚‹ã‚‚ã®ã§ã™ãŒã€ODEã§å¸¸å¾®åˆ†æ–¹ç¨‹å¼ã‚’è§£ããŸã‚ã®é–¢æ•°ã¯ã‚りã¾ã™ã‹ï¼Ÿã‚‚ã—ã‚れã°åŠ©ã‹ã‚‹ã®ã§ã™ãŒã€æ•™ãˆã¦ãã ã•ã„。
è¿½åŠ ã§ã™
カプセルやシリンダーやボックスãªã©ã¯å¸¸ã«æç”»ã•れã¾ã™ã€‚
ã”回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ã¾ãŸè³ªå•ã§ã™ã€‚
æ©è¡Œã•ã›ã¦ã„ã‚‹ã¨ãã«ã€å€’れãŸã‚‰desroyã—ã¦resetã—ãªãŠã—æ©è¡Œã•ã›ã‚‹ã¨ã„ã†
プãƒã‚°ãƒ©ãƒ を書ã„ãŸã®ã§ã™ãŒã€sphereã®æç”»ã ã‘2回目以é™å‹æ‰‹ã«æ¶ˆãˆã¦ã—ã¾ã„ã¾ã™ã€‚åŽŸå› ã¯ãªã«ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã§ã—ょã†ã‹ï¼Ÿ
æç”»ã•れãªã„ã ã‘ã§å˜åœ¨ã¯ã—ã¦ã„ã¾ã™ã€‚
dododoã•ん,
ã¯ã˜ã‚ã¾ã—ã¦ï¼Žã“ã®æƒ…å ±ã ã‘ã§ã¯ã‚ã‹ã‚Šã¾ã›ã‚“ãŒï¼Œå‹•力å¦è¨ˆç®—ã«ã‚ˆã‚ŠãƒãƒœãƒƒãƒˆãŒã‚«ãƒ¡ãƒ©ã«æ˜ らãªã„ä½ç½®ã«ç§»å‹•ã—ãŸã¨æ€ã‚れã¾ã™ï¼Ž
ãƒãƒœãƒƒãƒˆã®ä½ç½®ã‚’出力ã—ã¦ï¼Œï½šè»¸ã®å€¤ãŒè² ã«ãªã£ã¦ã„ãªã„ã‹ãªã©ã‚«ãƒ¡ãƒ©ã«æ˜ ã‚‹ä½ç½®ã«ã‚ã‚‹ã‹ç¢ºèªã—ã¦ã¿ã¦ãã ã•ã„.
ã¾ãŸï¼ŒdWorldStepã®ã‚¹ãƒ†ãƒƒãƒ—サイズをå°ã•ã„値ã«è¨å®šã—,観察ã—ã¦ã¿ã¦ãã ã•ã„.
ã§ã‚€
ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã¾ãŸï¼Œä½•ã‹ã‚ã£ãŸã‚‰ã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„.
ã§ã‚€
http://demura.net/robotsimu/step2
ã®ä¸ã»ã©ã«ã‚りã¾ã™ï¼Ž
ã§ã‚€
dododoã•ã‚“ã€
コメントã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã™ã¿ã¾ã›ã‚“ãŒã€ã“ã®è³ªå•コーナーã¯ODEã ã‘ã®è³ªå•ã«é™å®šã•ã›ã¦ãã ã•ã„。
ã”ã‚ã‚“ãªã•ã„。
ã§ã‚€
ã‚ã¾ã®ã™ã‘ã•ん,
ã¯ã˜ã‚ã¾ã—ã¦ï¼Ž
1.ODEã®æœ€æ–°ç‰ˆ0.11.1ã¯VC++6.0ã«å¯¾å¿œã—ã¦ã„ãªã„ã®ã§,より新ã—ã„VC++を使用ã—ã¦ãã ã•ã„.ã©ã†ã—ã¦ã‚‚VC++6.0を使ã‚ãªã‘れã°ã„ã‘ãªã„事情ãŒã‚ã‚‹å ´åˆã¯ï¼Œå¤ã„ODEを使用ã™ã‚‹ã‹ï¼ŒODE最新版をVC++6.0ã§ãƒ“ルドã§ãるよã†ã«ã”自分ã§é ‘張るã—ã‹ã‚りã¾ã›ã‚“.
2.ã§ãã¾ã™ï¼Ž
3.VC++6.0ã§ãƒ“ルドã§ãã‚‹å¤ã„ODEãªã‚‰å°Žå…¥å¯èƒ½ã ã¨æ€ã„ã¾ã™ãŒï¼ŒODEã¯å¹´ã€…進æ©ã—ã¦ã„ã‚‹ã®ã§ï¼Œå¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ãŠå‹§ã‚ã§ãã¾ã›ã‚“.ODE0.11.1ã«ãªã£ã¦ã‹ã‚‰è¡çªæ¤œå‡ºã‚‚ã‹ãªã‚Šæ”¹å–„ã•れã¦ã„ã¾ã™ï¼Ž
ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒå‚考ã«ãªã‚Œã°è‰¯ã„ã®ã§ã™ãŒï¼Žï¼Žï¼Ž
ã§ã‚€
ä½“é¨“èˆªæµ·ã¯æœ¬å½“ã«æ¥½ã—ã‹ã£ãŸã§ã™ï¼Žã¡ã³ã£åé”も大喜ã³ã§ã—ãŸï¼Ž
ã•ã¦ï¼ŒODEã¯0.11.1ã§ã—ょã†ã‹ï¼Ÿã€€
ã¾ãŸï¼Œå®Ÿè¡Œãƒ•ァイルpremake4ã¯PS3用ã®ãƒã‚¤ãƒŠãƒªã§ã™ã‹ï¼Ÿ
ã§ã‚€
ã•ã£ããã®ãŠè¿”事ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ODEã¯0.11.1ã§ã™
premake4ã¯å§‹ã‚ã¯Linux用を使ã„ã¾ã—ãŸãŒï¼ŒPS3ãŒPowerPCらã—ã„ã®ã§ï¼ŒMaxOSX用も試ã—ã¦ã¿ã¾ã—ãŸãŒé§„ç›®ã§ã—ãŸï¼Ž
premakeã®PS3用ã¯ã©ã“ã§æ‰‹ã«ã¯ã„りã¾ã™ã‹ï¼Ÿ
ODEã®0.9ã¯PS3上ã§ã‚³ãƒ³ãƒ‘イルã§ã,デモプãƒã‚°ãƒ©ãƒ ã®å‹•作確èªãŒã§ãã¾ã—ãŸï¼Ž
ã½ã£ãŸãƒ¼ 様
ã“ã‚“ã°ã‚“ã¯ã€‚
ç§ã‚‚PS3ã§ODEã‚’å°‘ã—ã‚„ã£ã¦ã„ã¾ã™ãŒã€premake4ã¯ä½¿ãˆãªã„よã†ã§ã™ã€‚ã¾ãšã€odeã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルを展開ã—ãŸä¸ã«”configure”ã¨ã„ã†ãƒ•ァイルを探ã—ã¦ãã ã•ã„。ã“れをã€å®Ÿè¡Œã—ãŸã‚ã¨makeã™ã‚Œã°å°‘ãªãã¨ã‚‚デモã¯å‹•ãよã†ã«ãªã‚Šã¾ã—ãŸã€‚PS3ã§ã‚‚ODEãŒå‹•ãã®ã‚’見るã®ã¯æ„Ÿå‹•ã§ã—ãŸãŒã€å‹•作ãŒé…ã実用的ã§ã¯ãªã„ã“ã¨ãŒæ®‹å¿µã§ã™ã€‚
chica様
アドãƒã‚¤ã‚¹ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã‚„ã¯ã‚Špremake4ã¯ä½¿ãˆãªã„ã®ã§ã™ã.
アドãƒã‚¤ã‚¹ã®é€šã‚Šconfigure, makeã§ode-0.11.1ã®ãƒ‡ãƒ¢ãƒ—ãƒã‚°ãƒ©ãƒ ãŒå‹•作ã™ã‚‹ã“ã¨ã¯ç¢ºèªã§ãã¾ã—ãŸï¼Ž
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼Ž
ã¯ã˜ã‚ã¾ã—ã¦ï¼ãã ã‚“ã•ん,
ODEã¯å‰›ä½“ã®å‹•力å¦è¨ˆç®—エンジンã§ã™ï¼Žç´ã‚’ãƒã‚§ãƒ¼ãƒ³ã§ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹æ–¹æ³•ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ï¼Ž
ã§ã‚€
回ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™.
ã‚„ã¯ã‚Šãã†ã§ã™ã‹, CFMã‚’ã„ã˜ãれã°é™ã‚Šãªãç´è¿‘ãã§ãã‚‹ã‹ãªã‚ã¨æ€ã„ã¾ã—ãŸãŒ, CFMã¯æŽ¥è§¦éƒ¨åˆ†ã®æŸ”らã‹ã•を変ãˆã‚‹ã‚‚ã®ã§ã™ã‚‚ã‚“ã. 今度10連振りåを製作ã—ã¦ã¿ã‚ˆã†ã¨æ€ã„ã¾ã™.ã¾ãŸä½•ã‹ã‚ã‹ã‚‰ãªã„ã“ã¨ãŒã‚りã¾ã—ãŸã‚‰ã©ã†ãžã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™.
ERPã¨CFMを変更ã™ã‚Œã°ãƒãƒãƒ»ãƒ€ãƒ³ãƒ‘ーシステムをシミュレートå¯èƒ½ã§ã™ãŒï¼Œã“ã®å ´åˆã¯ãƒ¦ãƒ‹ãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’使ã„ãƒã‚§ãƒ¼ãƒ³ã‚’シミュレーションã™ã‚‹ã®ãŒé©åˆ‡ã ã¨è€ƒãˆã¾ã™ï¼Ž
ã§ã‚€
ãŠå½¹ã«ç«‹ã¦ã‚Œã°ã‚りãŒãŸã„ã§ã™ï¼Ž
ã•ã¦ï¼ŒODEã¯å‰›ä½“ã®å‹•力å¦è¨ˆç®—ã¨è¡çªæ¤œå‡ºè¨ˆç®—ãŒå¯èƒ½ã§ã™ï¼Žç´°éƒ¨ãŒã‚ã‹ã‚‰ãªã„ã®ã§æ›–昧ãªå›žç”ã«ãªã‚Šã¾ã™ãŒï¼Œã§ãã‚‹ã¨æ€ã„ã¾ã™ï¼Žä½•ã‹æŠ€è¡“çš„ãªå•題ãŒã‚ã‚‹ã®ã§ã™ã‹ï¼Ÿ
ã§ã‚€
demuã•ã‚“è§£ç”ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
å‚考ã«ãªã‚Šã¾ã—ãŸï¼Ž
僕自身整ç†ã§ãã¦ã„ãªã„ãŸã‚,技術的ãªå•題ã¯å¤§ä¸ˆå¤«ã ã¨æ€ã„ã¾ã™ãŒï¼Œå…·ä½“çš„ã«ã¯ä¸Šæ‰‹ã言ãˆãªã„部分ãŒã‚りã¾ã™ï¼Žã¾ãšã¯ä¸€åº¦ä½œæˆã—ã¦ã¿ã¦ï¼Œã¤ã¾ãšãよã†ã§ã—ãŸã‚‰æ”¹ã‚ã¦è³ªå•ã•ã›ã¦ã„ãŸã ãã¾ã™ï¼Ž
KKã•ん,
dGeomGetRotationã§ã¯å›žè»¢è¡Œåˆ—ã‚’å–å¾—ã—ã¾ã™ï¼Žyawè§’ã¯ã©ã®ã‚ˆã†ã«ç®—出ã•れã¦ã„ã‚‹ã®ã§ã™ã‹ï¼Ÿ
ãªãŠï¼Œå›žè»¢è¡Œåˆ—ã¯ä¸–界座標系ã§ã™ï¼Ž
ã§ã‚€
dGeomGetRotationを使ã£ã¦yawè§’ã‚’ã©ã®ã‚ˆã†ã«å…·ä½“çš„ã«è¨ˆç®—ã—ã¦ã„ã‚‹ã‹æ•™ãˆã¦ãã ã•ã„.dGeomGetRotationã®æˆ»ã‚Šå€¤ã¯å›žè»¢è¡Œåˆ—ã¸ã®ãƒã‚¤ãƒ³ã‚¿ãªã®ã§ï¼Œãã®æˆåˆ†ã‚’使ã£ãŸè¨ˆç®—ãŒå¿…è¦ãªã¯ãšã§ã™ï¼Ž
ã§ã‚€
æã‚‰ãモデルを作るã®ãŒå¤§å¤‰ãªã®ã§ã¯ãªã„ã§ã—ょã†ã‹ï¼Ÿã“れを解決ã™ã‚‹ãƒ„ールをç¾åœ¨ä½œæˆã—ã¦ã„ã¾ã™ï¼Ž
ã¤ã¾ãšã‹ã‚ŒãŸã‚‰æ˜¯éžã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„ã.
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
yaw角(openGLåº§æ¨™ç³»ã§æç”»ã—ã¦ã„ã‚‹ã®ã§è¨ˆç®—ã®ä¸Šã§ã¯pitchè§’ã§æ±‚ã‚ã¦ã„ã¾ã™ï¼‰ã¯ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã«å€£ã£ã¦atan2(-r31, sqrt(r32*r32+r33*r33))ã§æ±‚ã‚ã¦ã„ã¾ã™ï¼Ž
ã“れã§å‡ºåŠ›ã™ã‚‹ã¨-90度ãŒå‡ºåŠ›ã•れるã®ã§ã™ãŒã€ã“れã¯åˆæœŸè¨å®šã§
dRFromEulerAngles (tableR,0,3.1415/2,0);
dBodySetRotation (boxbody, tableR);//boxbodyã¯è§’度をå–å¾—ã—ã¦ã„ã‚‹body
ã¨ã—ã¦ã„ã‚‹ã‹ã‚‰ã ã¨æ°—ã¥ãã¾ã—ãŸï¼Žã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
dWorldSetERPã§ERPã‚’ï¼ã«è¨å®šã—ãŸå ´åˆã¯ï¼Œã“れã¯å…¨ã¦ã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã«åƒãã®ã§ï¼Œã‚°ãƒãƒ¼ãƒãƒ«ERPã¨ã‚ˆã³ã¾ã™ï¼Žä¸€æ–¹ï¼Œé–¢ç¯€ã®ãƒ‘ラメータ dParamERPã§è¨å®šã—ãŸå ´åˆã¯ï¼Œãã®é–¢ç¯€ã®ã¿ã«åƒãã®ã§ãƒãƒ¼ã‚«ãƒ«ERPã¨ã‚ˆã‚“ã§ã„ã¾ã™ï¼Ž
sample3ã§ã¯ãƒãƒ¼ã‚«ãƒ«ERPã‚’è¨å®šã—ã¦ã„ãªã„ã®ã§ãŠã‹ã—ã„ã§ã™ã.
環境を教ãˆã¦ãã ã•ã„.
ã§ã‚€
Brol = dGeomGetRotation(boxgeom);
r11 = Brol[0]; r12 = Brol[1]; r13 = Brol[2];
r21 = Brol[4]; r22 = Brol[5]; r23 = Brol[6];
r31 = Brol[8]; r32 = Brol[9]; r33 = Brol[10];
pitch = atan2(-r31, sqrt(r32*r32+r33*r33));
ã¨ã—ã¦å‡ºåŠ›ã—ã¦ã„ã¾ã™ã€‚
å‰è¿°ã®ã¨ãŠã‚Šã€openGL系座標を用ã„ã¦ã„ã‚‹ã®ã§ã€ä¸–界ã«å¯¾ã—ã¦Y軸ãŒé‰›ç›´æ–¹å‘ãªã®ã§pitchを求ã‚ã¦ã„ã¾ã™ã€‚
KKã•ん,
返事ãŒé…ããªã‚Šã™ã¿ã¾ã›ã‚“.ã¤ãã°å¸‚ã¸ã„ã£ã¦ããŸã‚‚ã®ã§
ã•ã¦ï¼ŒæŽ¥è§¦ç‚¹æ•°ã¯ãã®ã¨ãŠã‚Šã§ã™ï¼ŽãŸã ã—,円ã®å ´åˆã¯é ‚点ã¯ã‚りã¾ã›ã‚“ã®ã§ï¼Œå¹³é¢ã¨æŽ¥ã—ãŸç‚¹ã§ã™ï¼Ž
ODEã¯ï¼’ã¤ã®ç‰©ä½“ãŒè¡çªã—ãŸå¾Œã«ãŠäº’ã„ã«è²«é€šã™ã‚‹ã“ã¨ã‚’許ã•ãªã„拘æŸ(non-penetration constratint)を使ã£ã¦ã„ã¾ã™ï¼Žç‰©ä½“ã®é€Ÿåº¦ãŒé€Ÿã‹ã£ãŸã‚Šï¼Œã‚¹ãƒ†ãƒƒãƒ—サイズãŒå¤§ãã„å ´åˆã¯è²«é€šã—ã¦ã—ã¾ã†ã®ã§ï¼Œç‰¹åˆ¥ãªåŠ›ã‚’ãƒœãƒ‡ã‚£ã«ã‹ã‘ã¦ãれを防ã„ã§ã„ã¾ã™ï¼ŽERPã¯ãã®ä¿®æ£å…·åˆã‚’調整ã™ã‚‹ãƒ‘ラメータã§ï¼ŒERPãŒï¼‘ãªã‚‰æ¬¡ã®ã‚¹ãƒ†ãƒƒãƒ—ã§èª¤å·®ã‚’ï¼ã«ä¿®æ£ã—,ERPãŒï¼ãªã‚‰èª¤å·®ã‚’ä¿®æ£ã—ã¾ã›ã‚“.
ç´°ã‹ã振動ã™ã‚‹å ´åˆã¯ï¼Œä¸Šè¨˜ã‚’繰り返ã™ãŸã‚ã§ã™ï¼Ž
ã§ã‚€
返信ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
環境ã¯ã€
PC::Windows XP,Visual Studio2008 EE
ODE:ver-0.11.1
ã§ã™ã€‚
C:\ode-0.11.1\program\sample3ã«Visual Studioã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆãƒ•ァイルをãŠã„ã¦å®Ÿè¡Œã—ã¦ã„ã¾ã™ã€‚
よã‚ã—ããŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
demuã•ã‚“
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
「ステップサイズãŒå¤§ãã„ã€ã¨ã„ã†ã®ã¯å…·ä½“çš„ã«ã©ã®ç¨‹åº¦ã®æ™‚é–“å¹…ã§ã—ょã†ã‹ï¼Žãれã¨ã‚‚å…·ä½“çš„ãªæ™‚é–“ãŒæ±ºã¾ã£ã¦ã„ã‚‹ã‚ã‘ã§ã¯ãªã,物体ã®é‹å‹•速度ã«ä¾å˜ã™ã‚‹ã®ã§ã—ょã†ã‹ï¼Ž
振動を繰り返ã™ãƒ¡ã‚«ãƒ‹ã‚ºãƒ ã¨ã„ã†ã®ã¯ï¼Œã‚¤ãƒ¡ãƒ¼ã‚¸ã¨ã—ã¦ã¯ãƒšãƒŠãƒ«ãƒ†ã‚£æ³•(全然詳ã—ããªã„ã®ã§ã™ãŒï¼‰ã®ã‚ˆã†ãªæ„Ÿã˜ã§ã—ょã†ã‹ï¼Ž
ãŠã—ゃるã¨ãŠã‚Šã§ã™ï¼Ž
100[m/s]ã¨1[m/s]ã¨ã§ã¯ã‚¹ãƒ†ãƒƒãƒ—サイズを変更ã™ã¹ãã§ã™ï¼Ž
ODEã¯è§£æžçš„æ‰‹æ³•ã§ãƒšãƒŠãƒ«ãƒ†ã‚£æ³•ã¨ã¯å…¨ãé•ã„ã¾ã™ï¼Žå‹•力å¦è¨ˆç®—エンジンã§ã¯è§£æžçš„æ‰‹æ³•ãŒä¸»æµã§ã™ï¼Žã‚¹ãƒ†ãƒƒãƒ—サイズやERPã®ãƒ‘ラメータを変更ã™ã‚‹ã“ã¨ã«ã‚ˆã‚ŠæŒ¯å‹•を押ã•ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã‚ˆï¼Ž
ã§ã‚€
ã§ã‚€ã•ん,ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Žã¾ãŸã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ï¼Ž
クラースã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ä»¥ä¸‹ã®æ–¹æ³•ã®ã¨ãŠã‚Šã‚„ã£ã¦ã§ããªã„ã§ã—ょã†ã‹ï¼Ÿ
http://demura.net/9ode/3962.html
今年度ã€ä¸Šã®æ–¹æ³•ã§è¬›ç¾©ã®æ¼”習を行ã£ãŸã¨ã“ã‚å•題ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚
ã§ã‚€
ãã ã‚“ã•ん,
ã“ã‚“ã°ã‚“ã‚.
ODEã®é–¢ç¯€ã¯æ‘©æ“¦ãªã—ã§ã™ï¼Žæ‘©æ“¦ã‚’ã¤ã‘ã‚‹ãŸã‚ã«ã¯è‡ªåˆ†ã§ï¼Œãã®åŠ›ã‚’é–¢ç¯€ã«åŠ ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
ãªãŠï¼ŒODEã¯å¾®åˆ†æ–¹ç¨‹å¼ã‚’1次ã®ã‚ªã‚¤ãƒ©ãƒ¼æ³•ã§è§£ã„ã¦ã„る部分ãŒã‚ã‚‹ã®ã§ï¼Œç²¾å¯†ãªã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯å‘ãã¾ã›ã‚“.ODEã®è©³ç´°ãªã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を知るãŸã‚ã«ã¯ã‚½ãƒ¼ã‚¹ã‚’èªã‚€ã—ã‹ã‚りã¾ã›ã‚“.ãれãŒã§ãã‚‹ã®ãŒï¼ŒODEã®è‰¯ã„ã¨ã“ã‚ã§ã™ã.ã•らã«ï¼Œãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã¯ã¨ã¦ã‚‚å‚考ã«ãªã‚Šã¾ã™ã‚ˆï¼Ž
ã§ã‚€
ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™,ã§ã¯æ‘©æ“¦ãŒãªã„ã®ã«å˜æŒ¯åãŒæ¸›è¡°ã—ã¦ã„ãã®ã¯ãªãœã§ã—ょã†ã‹.常ã«ä¸€å®šå‘¨æœŸã®æŒ¯ã‚Šåを作æˆã—ãŸã„ã®ã§ã™ãŒ.
ã©ã®ã‚ˆã†ã«å®Ÿè£…ã—ã¦ã„ã‚‹ã‹ã‚ã‹ã‚‰ãªã„ã®ã§ã€åŽŸå› ãŒã‚ã‹ã‚Šã¾ã›ã‚“。
ï¼‘å€‹ã®æŒ¯ã‚Šåã§ã‚‚減衰ã™ã‚‹ã§ã—ょã†ã‹ï¼Ÿã€€æ¸›è¡°ã™ã‚‹å ´åˆã€ãã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’見ã›ã¦é ‚ã‘ã¾ã›ã‚“ã‹ï¼Ÿ
ã§ã‚€
ã‚ã‹ã‚Šã¾ã—ãŸ, ã“ã“ã§é•·æ–‡ã‚’書ã„ã¦ã‚‚ä»–ã®æ–¹ã«å¤±ç¤¼ã§ã¯ãªã„ã‹ã¨æ€ã„ã¾ã™ã®ã§,メールã§é€ã‚‰ã›ã¦ã„ãŸã ãã¾ã™. 完全ã«è§’速度ãŒ0ã«ãªã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“ãŒ, 大車輪状態ã‹ã‚‰ã‚る程度ã¾ã§æ¸›è¡°ã—ã¾ã™.
onionã•ん,
毎度ã”ã²ã„ãã«ã—ã¦é ‚ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼Ž
ã•ã¦ï¼Œkensei.cppã‚’å°‘ã—変ãˆãŸãらã„ã§ã¯æ©ãã“ã¨ã¯å›°é›£ã ã¨æ€ã„ã¾ã™ï¼Ž
ãã£ã¡ã‚Šæ©ã‹ã›ã‚ˆã†ã¨ãŠè€ƒãˆãªã‚‰æ¢¶ç”°å…ˆç”Ÿã®ã€Œãƒ’ューマノイドãƒãƒœãƒƒãƒˆã€ã‚ªãƒ¼ãƒ 社を勉強ã—ã¦å®Ÿè£…ã—ã¦ãã ã•ã„.
ã¨ã‚Šã‚ãˆãšæ©ã‘ã°ã¨ã„ã†ã“ã¨ãªã‚‰ï¼Œã‚¦ã‚§ãƒ–を探ã›ã°ã„ã‚ã„ã‚見ã¤ã‹ã‚‹ã¨æ€ã„ã¾ã™ï¼Ž
å‹•æ©è¡Œã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯ç¾æ™‚点ã§ã¯ã‚¢ãƒƒãƒ—ã™ã‚‹äºˆå®šã¯ã‚りã¾ã›ã‚“.苦労ã—ã¦æ©ã‹ã›ã‚‹ã¨ã¨ã¦ã‚‚力ãŒã¤ãã¾ã™ã‚ˆï¼Ž
ã§ã‚€
ã©ã‚“ãりã•ん,
ODEã¯å‹•力å¦è¨ˆç®—エンジンã§ï¼ŒGUIã®ãƒ©ã‚¤ãƒ–ラリã§ã¯ã‚りã¾ã›ã‚“ã®ã§ï¼Œãã®ã‚ˆã†ãªæ©Ÿèƒ½ã¯ã‚りã¾ã›ã‚“.
ãªãŠï¼ŒODEデモプãƒã‚°ãƒ©ãƒ ã¯drawstuffã¨ã„ã†OpenGLベースã®ç°¡å˜ãªæç”»ãƒ©ã‚¤ãƒ–ラリを使ã£ã¦ã„ã¾ã™ï¼Ž
OpenGLã§ã¯ç°¡å˜ã«ã‚°ãƒ©ãƒ•を作æˆã§ããªã„ã®ã§ï¼ŒQtã‚„ä»–ã®GUIライブラリを使ã„,ã”自分ã§å®Ÿè£…ã™ã‚‹ã—ã‹ã‚りã¾ã›ã‚“.
ODEã¯å‹•力å¦è¨ˆç®—エンジンã«ç‰¹åŒ–ã—ã¦ã„ã‚‹ã®ã§ï¼ŒODEã®å•題ã§ã¯ãªã„ã‚‚ã®ã®ãƒ¦ãƒ¼ã‚¶ã«ã¨ã£ã¦ã¯ä½¿ã„ã¥ã‚‰ã„ã§ã™ã.
ã”å‚考ã¾ã§ã«ã©ã®ã‚ˆã†ãªæ©Ÿèƒ½ãŒã‚れã°ã†ã‚Œã—ã„ã§ã—ょã†ã‹ï¼Ÿå€‹äººçš„ã«ä¸Šè¨˜ã®å•題点を解決ã™ã‚‹ãƒ©ã‚¤ãƒ–ラリ作æˆä¸ã§ã™ï¼Ž
ã§ã‚€
 早速ã®ãŠè¿”事ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
ã”返信内容よりã€ã“ã‹ã‚‰èª¿æŸ»ã™ã¹ãé …ç›®ã‚„æ–¹å‘æ€§ãŒæ˜Žç¢ºã¨ãªã‚Šå¤§å¤‰åŠ©ã‹ã‚Š
ã¾ã—ãŸã€‚
ç§ã¯ç¾åœ¨ã€äºŒè¶³æ©è¡Œãƒãƒœãƒƒãƒˆã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ãƒˆãƒ©ã‚¤ã—ã¦ã„ã‚‹ã®ã§ã™ãŒ
ã“ã®è§£æžã§é–¢ç¯€ã«åŠ ã‚るトルクç‰ã‚’「時系列的ã«ãƒ—ãƒãƒƒãƒˆã€ã—ãŸã‚°ãƒ©ãƒ•表示ãŒ
ã§ãã¾ã™ã¨è§£æžä½œæ¥ãŒã¨ã¦ã‚‚明確ã§ã‚„り易ããªã‚‹ã¨è€ƒãˆã¾ã™ã€‚
ã¾ãŸã€æœ€ä½Žé™ã„ã‚ã„ã‚ãªå¤‰æ•°ã‚’リアルタイムã§ç›£è¦–ã§ãる「インジケータã€
ã ã‘ã¯å¿…è¦ãªã®ã§ã™ãŒï¼¤ï¼¯ï¼³ç”»é¢ã«ç›´æŽ¥ãƒ—リント命令ã§å‡ºåŠ›ã™ã‚‹å½¢å¼ã§ã¯
ã‹ãªã‚Šè‹¦ã—ã„ã‚‚ã®ãŒã‚りã¾ã™ã€‚
ãã“ã§å–りåˆãˆãšã®æ–¹æ³•ã¨ã—ã¦ãƒ‡ãƒ¼ã‚¿ã‚’ファイルã«è¨˜éŒ²ã—ã€å¾Œã‹ã‚‰ãƒ‡ãƒ¼ã‚¿è§£æž
グラフ化ã—ã¦ã¿ã‚ˆã†ã‹ãƒ»ç‰ã€…ç¾åœ¨æ¤œè¨Žä¸ã§ã™ã€‚
本サイトç‰ã§ODEã«é–¢ã™ã‚‹è¦ªåˆ‡ã§å¤§å¤‰å½¹ã«ç«‹ã¤æƒ…å ±ã‚’ã”æä¾›é ‚ã心より感è¬
申ã—上ã’ã¾ã™ã€‚
ã™ã¿ã¾ã›ã‚“ãŒã€ã“ã®å°‘ãªã„æƒ…å ±ã§ã¯ã‚ã‹ã‚Šã‹ãã¾ã™ã€‚
ã§ã‚€
GUIã®éƒ¨åˆ†ã‚’別プãƒã‚»ã‚¹ã‹ã‚¹ãƒ¬ãƒƒãƒ‰ã§å®Ÿè£…ã™ã‚‹ã¨æ¯”較的簡å˜ã«ãŠæœ›ã¿ã®ã“ã¨ãŒã§ãã‚‹ã¨æ€ã„ã¾ã™ã€‚
今後ã¨ã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã§ã‚€