Q&A Home > 고객지원 > 기술지원 > Q&A
[re]로보카 컴퍼스모듈에 관해서 여쭙고 싶습니다.
카테고리Intelligent Robot System
작성자HB_Robot 아이피121.183.237.63
작성일09-07-13 14:09 조회수6229
파일

안녕하세요. 한백전자입니다.
우선 컴파스 모듈에는 MDS-CPE라는 컴파스 센서를 사용합니다.
이 컴파스 센서는 방위각을 측정하기 전에 먼저 Calibration을 하여
그 데이터를 토대로 방위각을 읽어냅니다.
Calibration은 주변 자기장의 환경을 고려한 방위 정보를 읽기 위해
행하는 동작입니다.
Calibration동작은 자북에서 시작하여 다시 자북으로(시계방향) 회전시키면서
50ms 마다 Calibration 데이타를 종합하여 생성합니다.(컴파스 센서 자체에서
그 값들을 계산함) 그런데  컴파스 센서 내부에 메모리가 없어서 전원이 나가면
이전에 측정했던 Calibration 데이터가  사라집니다. 그렇기 때문에 Calibration
데이터를 저희 컴파스 모듈(Atmega8)의 eeprom에  저장해두어 전원이 나가더라도
그 데이터를 저장해두고 있는 것 입니다.

Cali(); 함수는 로보카를 통해서 컴파스 모듈의 Calibration 을 하게끔 하는 함수입니다.
로보카를 북쪽으로 향하게 두고 컴파스 모듈의 Calibration을 시작시키고 회전을 합니다.
로보카의 엔코더 값을 통해서 한바퀴 회전을 한후 로보카는 정지시키며 Calibration
데이터를 저장하고 종료합니다.
Calibration 데이터는 컴파스 모듈에 저장 되어 있기 때문에 매번 하실필요가 없습니다.
다만 사용중에 외부적인 요인으로(주변환경변화) 등으로 컴파스 데이터가 부정확하다고
생각되시면 하시면 됩니다.

안녕히 계십시오.
한백전자 드림.

----------------------------------------


안녕하세요.

경희대학교 박재용 입니다.

로보카에 대한 질문이 있어서 이렇게 글을 남깁니다.
현재 미리 한대를 받은것을 시험해 보고 있습니다.
 
예제에 있는 Cali() 함수에 대하여 여쭤보고 싶습니다. (함수내용은 하단에 붙여넣겠습니다.)
저희는 이 함수가, 로보카모터로 인한 나침반값의 오차를 보정하기 위한 함수로 알고 있습니다.

코드내용 중에서
compass_paket[1] = 0x09;        compass_paket[5] = 0x01;

를 수신한 UART0에 있는 컴퍼스 모듈은 정확히 어떤동작을 하게 되나요? (어떤변화를 측정하며 어떠한 계산을 하게 되는지요?)
또한 매번 파워를 넣을때마다 이함수를 수행해야하는지요?

바쁘시겠지만, 답변좀 부탁드립니다.
 
좋은하루 되세요.
감사합니다.

  - 박재용
 
void Cali()
{
//콤파스 센서 cali 
    //추가된 콤파스 센서 캘리 처리루틴. 
    //로보카를 1바퀴 회전시키면서 센서를 초기화한다.
    //반드시 북쪽을 바라보게 한다음, 실행해야 한다.
    compass_paket[1] = 0x09;    
    compass_paket[5] = 0x01;    
   
    for(i=0;i<24;i++) //calib Start
     putch_u0(compass_paket[i]);
    
    ms_delay(50);
 
    Motor_mode(RIGHT_U);
    
    cli();
 
    wheel_cnt_r=Right_cnt=0;
 
    while(1)
    {
     Count_Pulse(); 
     _delay_us(50);
     if(Right_cnt+wheel_cnt_r*650 >= TARGET_CNT(360)) break;
    }
 
    sei(); 
 
    ms_delay(100);
 
    Motor_mode(STOP);
    
    compass_paket[1] = 0x09;    
    compass_paket[5] = 0x02;
 
    for(i=0;i<24;i++)  //calib End
     putch_u0(compass_paket[i]);   
 
    for(i=0;i<24;i++)  //Chk calib End 
     getch_u0();
}
 

다음글 로보카 컴퍼스모듈에 관해서 여쭙고 싶습니다.
이전글 로보빌더에 대해서 문의 드립니다

댓글 등록은 로그인 하신후 이용하실 수 있습니다.