일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- RTK
- C++
- turtlebot3
- Gazebo
- Simulation
- GPS
- 자율탐사
- Jetson
- 강화학습
- ubuntu
- Visual SLAM
- 로봇
- Puck LITE
- QT
- 인공지능
- WSL2
- 자율주행
- DevOps
- U-blox
- 티스토리챌린지
- 젯슨
- 터틀심
- WSL
- ZED2
- 오블완
- ROS2
- ROS
- SLAM
- turtlesim
- GUI
- Today
- Total
직관적인느낌
가속도,자이로 센서 동작, 사용하기_Gyro, Acceleration Sensor- 9DOF-IMU(AHRS) EBIMU-9DOFV3 (E2BOX) 본문
가속도,자이로 센서 동작, 사용하기_Gyro, Acceleration Sensor- 9DOF-IMU(AHRS) EBIMU-9DOFV3 (E2BOX)
범슐랭 2023. 3. 4. 09:42AHRS EBIMU-9DOFV4
출처: E2BOX
기술정보 및 자료/EBIMU-9DOFV4

UART Protocol
DataBit: 8 Data bits
StopBit: 1 Stop bit
Baudrate: 115200 bps (default)




아두이노 예제
////////////////////// EBIMU FUNCTION /////////////////////////////
#define SBUF_SIZE 64 // 센서로 부터 수신된 1packet(1줄)을 저장하는 버퍼의 크기를 지정한다.
// 1packet(1줄)당 수신된는 최대 바이트수 보다 크게 설정해야합니다.
char sbuf[SBUF_SIZE];
signed int sbuf_cnt=0;
int EBimuAsciiParser(float *item, int number_of_item) // item: 수신된 데이터를 저장할 주소를 입력
{ // number_of_item: EBIMU의 1PACEKT 당 수신 항목 수를 입력
int n,i;
int rbytes;
char *addr;
int result = 0; // return 값: 리턴 값은 0또는 1. 데이터를 수신하여 item내용이 갱신되었을 경우 1을 리턴. 갱신된 내용이 없을 경우 0을 리턴합니다.
rbytes = Serial.available();
for(n=0;n<rbytes;n++)
{
sbuf[sbuf_cnt] = Serial.read();
if(sbuf[sbuf_cnt]==0x0a)
{
addr = strtok(sbuf,",");
for(i=0;i<number_of_item;i++)
{
item[i] = atof(addr); // atof: 문자열의 앞 부분에 부호와 정수 문자, 소수점 문자, 정수 문자로 구성한 부분을 float 형식의 값으로 계산하여 반환합니다.
만약 계산할 수 없는 문자를 발견하면 현재까지 계산한 값을 반환
addr = strtok(NULL,","); //strtok: 문자열 자르는 함수 (string.h 헤더 파일에 선언되어 있습니다) / strtok(대상문자열, 기준문자)
} //NULL: 문자열에는 문자열의 종료를 알리는 특수 문자 Nul이 항상 마지막에 위치한다
* 아스키 코드 십진수 0 = 16진수 0x00 = 이진수 0b00000000 = Nul(null, 널 문자) = '|0'
result = 1;
// Serial.print("\n\r");
// for(i=0;i<number_of_item;i++) { Serial.print(item[i]); Serial.print(" "); }
}
else if(sbuf[sbuf_cnt]=='*')
{ sbuf_cnt=-1;
}
sbuf_cnt++;
if(sbuf_cnt>=SBUF_SIZE) sbuf_cnt=0;
}
return result;
}
/////////////////////// EBIMU FUNCTION /////////////////////////////
////////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(115200);
}
void loop() {
float euler[3];
if(EBimuAsciiParser(euler, 3))
{
Serial.print("\n\r");
Serial.print(euler[0]); Serial.print(" ");
Serial.print(euler[1]); Serial.print(" ");
Serial.print(euler[2]); Serial.print(" ");
}
}

'공학 > 센서' 카테고리의 다른 글
Complementary Filter for Two wheel System (0) | 2023.03.04 |
---|