2006-02-27 21:17:00 idhzone
Dynamixel의 Control table중 Moving은 완벽한 "움직임 완료"의 의미가 아닙니다. 물론, 이와 유사한 개념으로 사용될 수는 있습니다. 결론을 말씀드리면, Dynamixel에 위치 값을 전송하여 움직이게 하신 후, 약간 시간적 간격을 둔 후 Moving을 체크하시기 바랍니다. 올려주신 소스를 보면 명령을 준 후 바로 읽음으로 인해 미처 Flag가 바뀌기 전의 값이 사용되었기 때문으로 추측됩니다.
:
:
:while(true)
:{
: if(DXL_robot_ctrlmove( &m_DXL_Robot ) == TRUE)
:
: {
:
: if(DXL_actuator_get_state( &m_DXL_Robot.pDXL_list[0] ) ==
:
: SUCCESS_COMMUNICATION)
:
: {
: if(m_DXL_Robot.pDXL_list[0].State.Moving == NOT_MOVING)
:
: {
:
: break;
:
: }
:
: }
:
: }
:}
:
:이겁니다. 다이나믹셀이 구동중이면 루프를 돌다가 다이나믹셀이 대기중이되면 루프를 빠져나와야 하는데,, 다이나믹셀이 구동중임에도 루프를 빠져나옵니다.
:
:
: