soc 로봇워 참가자 교육

Post on 04-Feb-2016

90 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

SoC 로봇워 참가자 교육. 목차. 1. DRS-0101 주요 레지스터 2. DRC-005T 주요 레지스터 3. DRS-0101 & DRC-005T 프로토콜 4. DR-Visual Logic 활용 5. 두뇌보드 프로그래밍 방안 6. Q&A. 1. DRS-0101 주요 레지스터. 비휘발성 (EEPROM) 과 휘발성 (RAM) 메모리 비휘발성 : 전원이 꺼져도 유지 . 설정 값 저장 - PowerPoint PPT Presentation

TRANSCRIPT

SoC 로봇워 참가자 교육

2

목차

1. DRS-0101 주요 레지스터2. DRC-005T 주요 레지스터3. DRS-0101 & DRC-005T 프로토콜4. DR-Visual Logic 활용5. 두뇌보드 프로그래밍 방안6. Q&A

3

1. DRS-0101 주요 레지스터

비휘발성 (EEPROM) 과 휘발성 (RAM) 메모리– 비휘발성 : 전원이 꺼져도 유지 . 설정 값 저장– 휘발성 : 전원이 꺼지면 지워짐 . 동작에 직접적 영향 . 설정 값 , 상태 , 센

서 값 등 저장– 비휘발성 메모리 중 설정 값 영역이 부팅 시 휘발성 메모리에 복사

RW( 읽기 / 쓰기 가능 ) 와 RO( 읽기만 가능 ) 로 나뉨

값을 바꿀 때– 비휘발성 : 현재 동작에 영향 없음 . 재부팅 이후 부터 영향– 휘발성 : 현재 동작에 영향 있음 . 재부팅 시 사라짐 설정 값을 변경 시 비휘발성 & 휘발성 모두 바꾸거나 비휘발성 바꾼 후 재부팅

시켜야 .

레지스터와 프로토콜은 모두 Little Endian– 하위 바이트가 더 메모리의 앞에 위치 . 0x1234 는 0x34, 0x12

4

1. DRS-0101 주요 레지스터

ID(RW, EEP 6/RAM 0) Ack Policy(RW, EEP 7/RAM 1) Torque Policy(RW, EEP 9/RAM 3) Position Kp(RW, EEP 30/RAM 24) Position Kd(RW, EEP 32/RAM 26) Position Ki(RW, EEP 34/RAM 28) Calibration Difference(RW, EEP 53/RAM 47) Status Error(RW, RAM 48) Status Detail(RW, RAM 49) Torque Control(RW, RAM 52) Calibrated Position(RO, RAM 58) Absolute Position(RO, RAM 60)

5

1. DRS-0101 주요 레지스터

ID(RW, EEP 6/RAM 0)– Servo 식별 ID. 0x00~0xFD. 동일 ID 가 같이 연결된 경우 오동작

Ack Policy(RW, EEP 7/RAM 1)– 요청 패킷 수신 시 응답 패킷을 보낼지 여부에 대한 정책

• 0: 무응답• 1: Read CMD(EEP_READ, RAM_READ) 에만 응답• 2: 모든 패킷에 응답

– 패킷의 pID 가 254(broadcasting) 일 경우 무응답– 단 CMD 가 STAT 일 경우 무조건 응답 (254 일 경우도 )

Position Kp, Kd, Ki(RW, EEP 30, 32, 34/RAM 24, 26, 28)– 위치 제어기의 PID 게인 .– 서보에서 덜덜 거리는 소리가 날 경우 Kd 를 낮춰 보는 것을 추천

6

1. DRS-0101 주요 레지스터

Status Error(RW, RAM 48)– 서보의 에러 상태를 나타내는 레지스터

Status Detail(RW, RAM 49)– 서보의 상태와 에러의 상세 내역을 나타내는 레지스터

7

1. DRS-0101 주요 레지스터

Torque Policy(RW, EEP 9/RAM 3)– Status Error 와 비교해서 1 로 설정된 비트에 해당하는 에러가 발생 시

서보의 토크를 자동으로 해제– Status Error 를 해제 후 다시 Torque Control 값을 수동으로 바꿔 주어야

복귀

Torque Control(RW, RAM 52)– 토크의 인가 상태를 제어 .

• 0x00 : Torque Off• 0x40 : Break On( 초기 상태 )• 0x60 : Torque On

8

1. DRS-0101 주요 레지스터

Calibration Difference(RW, EEP 53/RAM 47)– 영점 조절 시 사용하는 -128~127 의 값– Calibration Difference = Absolute Position – Calibrated Position

Calibrated Position(RO, RAM 58)– Calibration Difference 가 적용된 현재 위치 + GPIO 입력 값– LSB 13 비트 (0~12 번 비트 ) : 위치 값– 그 위 2 비트 (13~14 번 비트 ) : GPIO 입력 값 (Active Low)– 마지막 MSB 1 비트 (15 번 비트 ) : reserved– 모터 움직이는 명령은 모두 Calibrated Position 이 기준

Absolute Position(RO, RAM 60)– 보정되지 않은 현재 위치의 Raw Data– 각도 = Raw Data * 0.325

9

2. DRC-005T 주요 레지스터

Special Function(RW, EEP 5) ID(RW, EEP 7/RAM 0) Ack Policy(RW, EEP 8/RAM 1) Torque Off Policy(RW, EEP 9/RAM 2) Status Check Policy(RW, EEP 11/RAM 4) Remocon Channel(RW, EEP 15/RAM 8) Status Error(RW, RAM 16) Status Detail[5](RW, RAM 17) Servo Count(RO, RAM 34) Servo ID[33](RO, RAM 35) Playing Motion(RO, RAM 68) Playing Task(RO, RAM 69) Remocon Length(RO, RAM 74) Remocon Data(RO, RAM 75) ADC Port 1 Sensor Type(RO, RAM 79) ADC Port 2 Sensor Type(RO, RAM 80) ADC Port 1 Sensor Value(RO, RAM 81) ADC Port 2 Sensor Value(RO, RAM 83) ACC/GYRO Connected(RO, RAM 85) ACC X/Y/Z Value (RO, RAM 86, 88, 90) GYRO X/Y/Z Value (RO, RAM 92, 94, 96) Servo Status Error & Detail[32](RO, RAM 106) Servo Position[32](RO, RAM 170)

10

2. DRC-005T 주요 레지스터

ID(RW, EEP 7/RAM 0)– 제어기 식별 ID. 0x00~0xFD. 기본 값 0xFD

Ack Policy(RW, EEP 8/RAM 1)– 요청 패킷 수신 시 응답 패킷을 보낼지 여부에 대한 정책

• 0: 무응답• 1: Read CMD 와 CON_CHECK 등 몇몇 CMD 에 대해서만 응답• 2: 모든 패킷에 응답

– 패킷의 pID 가 254(broadcasting) 일 경우 무응답– 단 CMD 가 STAT 일 경우 무조건 응답 (254 일 경우도 )

Torque Off Policy(RW, EEP 9/RAM 2)– 상태 에러 발생 시 제어기에 연결된 서보 모터의 토크를 풀 것인지 여부– Status Error 와 비교해서 1 로 설정된 비트에 해당하는 에러가 발생 시

연결된 모든 서보의 토크를 자동으로 해제

11

2. DRC-005T 주요 레지스터

Status Error(RW, RAM 16)– 제어기의 상태 오류 내역

Status Detail[5](RW, RAM 17)– 제어기 상태 오류의 더 상세한 내역 코드 ( 최근 5 개 )

12

2. DRC-005T 주요 레지스터

Servo Count(RO, RAM 34)– 연결된 서보의 총 수 ( 최대 32 개 )

Servo ID[33](RO, RAM 35)– 연결된 서보의 ID 가 오름차순으로 저장– 연결된 수만큼 저장되며 나머지 공간은 0xFE(Broadcasting ID)

13

2. DRC-005T 주요 레지스터

Remocon Channel(RW, EEP 15/RAM 8)– 리모컨의 채널 값 (0x61~0x6A)– 현재 사용하는 리모컨의 채널이 일치해야 리모컨 값을 인식할 수 있음

Remocon Length(RO, RAM 74)– 리모컨 버튼이 눌린 길이 . 리모컨 버튼 신호가 들어온 순간부터 125ms

마다 1 증가

Remocon Data(RO, RAM 75)– 리모컨 키 값 . 리모컨 신호가 안 들어올 때는 0xFE

14

2. DRC-005T 주요 레지스터

Playing Motion(RO, RAM 68)– 저장된 모션이 실행 중인지 여부 (실행 중 :1, 아님 : 0)– 모션이 끝날 때까지 대기하려면 이 레지스터가 0 이 될 때까지 기다리면 됨

Playing Task(RO, RAM 69)– 저장된 Task 가 실행 중인지 여부 (실행 중 :1, 아님 : 0)

15

2. DRC-005T 주요 레지스터

Status Check Policy(RW, EEP 11/RAM 4)– 연결된 서보의 현재 위치와 상태를 지속적으로 읽어올지 여부를 설정– 1 로 설정되어 있을 때 , Servo Status Error & Detail 과 Servo Position 을

지속적으로 업데이트

Servo Status Error & Detail[32](RO, RAM 106)– 연결된 서보의 Status Error 와 Status Detail 값이 저장 (2 바이트 )– Status Check Policy 가 1 일 때 지속적으로 업데이트– 단선이 되어 통신이 안되는 경우 0x80, 0x00 으로 변경

Servo Position[32](RO, RAM 170)– 연결된 서보의 Calibrated Position 값이 저장 (2 바이트 )– Status Check Policy 가 1 일 때 지속적으로 업데이트– Calibrated Position = 위치 (13 비트 ) + GPIO(2 비트 )임을 주의

16

2. DRC-005T 주요 레지스터

ACC/GYRO Connected(RO, RAM 85)– 가속도 / 자이로 센서 모듈 연결 여부– I2C 통신이 정상적으로 이루어지면 1, 아니면 0

ACC X/Y/Z Value(RO, RAM 86, 88, 90)– -4096~+4095(-16g~+16g)– 정지 상태에서는 바닥 방향으로 -1g(약 -256) 작용– 서있는 경우 ACC X, Y, Z = 0, -256, 0– 엎드린 경우 ACC X, Y, Z = 0, 0, 256– 누운 경우 ACC X, Y, Z = 0, 0, -256

GYRO X/Y/Z Value(RO, RAM 92, 94, 96)– -32768~32767(-2000dps~+2000dps)– 축의 +방향에서 보았을 때 반시계면 +– 100dps 로 회전 중일 때 레지스터 값은 약 1600

17

2. DRC-005T 주요 레지스터

ADC Port 1 Sensor Type(RO, RAM 79) ADC Port 2 Sensor Type(RO, RAM 80)

– ADC Port 1(좌측 ), 2( 우측 ) 으로 연결된 센서의 종류• 0 : 센서가 연결되지 않음• 1 : PSD 센서가 연결 되었음• 2 : 디지털 거리 센서가 연결 되었음• 3 : DRX-0001M 이 연결 되었음 (Genie)

ADC Port 1 Sensor Value(RO, RAM 81) ADC Port 2 Sensor Value(RO, RAM 83)

– ADC Port 1(좌측 ), 2( 우측 ) 으로 연결된 센서 값• Sensor Type 0 일 경우 : 0• Sensor Type 1 일 경우 : 3~40(cm 단위 )• Sensor Type 2 일 경우 : 0~1(10cm 이상 :1, 이내 :0)• Sensor Type 3 일 경우 : 0

18

2. DRC-005T 주요 레지스터

Special Function(RW, EEP 5)– DRC-005T 를 특수 용도로 쓰고 싶을 때 사용

– 사용자 센서 모드• 0 : 센서 포트에 PSD 혹은 디지털 거리 센서 1 개를 사용 ( 총 2 개 )• 1 : 임의의 아날로그 센서 1 개와 디지털 센서 1 개를 달 수 있음 ( 총 4 개 )

– TTL 통신 모드• Zigbee Serial Interface(TTL 3.3V) 로 통신 가능

– 기본 제공 센서 사용하실 분은 0x02, 직접 제작 센서 사용하실 분은 0x03 으로 세팅하세요 .

19

2. DRC-005T 주요 레지스터

사용자 센서 모드– GND, 5V 로 센서에 전원 공급– Analog 출력을 3 번에 연결– Digital 출력을 4 번에 연결

– 아날로그 센서 값은 ADC Port 1/2 Sensor Value 에 10 비트 0~1023 ADC Raw Data 로 저장

• 변환 식 : Raw Data / 1024 * 5V = Analog 출력 (V)

– 디지털 센서 값은 ADC Port 1/2 Sensor Type 에 0~1 로 저장

20

Header : 0xFF 0xFF Packet Size : 총 바이트 수 pID : 제어할 서보 / 제어기 ID. 0xFE(254) 일 경우 Broadcasting CMD : 명령

– 요청 패킷 : 서보 0x01~0x09, 제어기 0x11~0x1E– 응답 패킷 : 서보 0x41~0x49, 제어기 0x51~0x5E

Check Sum1 : (Packet Size ^ pID ^ CMD ^ Data[0] ^ … ^ Data[n-1]) & 0xFE

Check Sum2 : (~(Packet Size ^ pID ^ CMD ^ Data[0] ^ … ^ Data[n-1])) & 0xFE

Optional Data : CMD 종류에 따라 다름

3. 프로토콜 – 패킷 구조

21

3. 프로토콜 – CMD 종류 ( 서보 )

22

3. 프로토콜 – CMD 종류 ( 서보 )

23

3. 프로토콜 – CMD 종류 ( 제어기 )

24

3. 프로토콜 – CMD 종류 ( 제어기 )

25

3. 프로토콜 – 자주 쓰는 CMD

RAM_WRITE( 서보 )– Address 부터 Length 바이트만큼 RAM Data 로 쓴다 .

예시 – 모든 서보의 Torque ON(52 번 주소 , 1 바이트 , 0x60)

구분 Header Packet Size pID CMD CheckSum Data[0]Data[1

]

Value0xF

F0xF

F7+(2+Lengt

h)0~0xFE 0x03 CS1 CS2

Address

Length구분 Data[2] … Data[Length+1]

Value RAM Data[0] … RAM Data[Length-1]

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Data[1]

Data[2]

Value0xFF

0xFF

0x0A 0xFE0x03

0xA2

0x5C

0x34 0x01 0x60

26

3. 프로토콜 – 자주 쓰는 CMD

RAM_READ( 서보 ) – 요청 패킷– Address 부터 Length 바이트만큼 읽는다 .

예시 – 0 번 서보 Calibrated Position 읽기 (58 번 주소 , 2 바이트 )

구분 Header Packet Size pID CMD CheckSum Data[0]Data[1

]

Value0xF

F0xF

F7+2

0~0xFD

0x04 CS1 CS2Addres

sLength

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Data[1]

Value0xFF

0xFF

0x090x00

0x04

0x34

0xCA

0x3A 0x02

27

3. 프로토콜 – 자주 쓰는 CMD

RAM_READ( 서보 ) – 응답 패킷– Address 부터 Length 개 값을 RAM Data 와 상태를 넣어 응답한다 .

예시 – 0 번 서보 Calibrated Position 응답 (58 번 주소 , 2 바이트 )

구분 Header Packet Size pID CMD CheckSum Data[0]Data[1

]

Value0xF

F0xF

F7+(2+Length)

+20~0xF

D0x4

4CS1 CS2

Address

Length구분 Data[2] … Data[Length+1] Data[Length+2] Data[Length+3]

ValueRAM Data[0]

… RAM Data[Length-1] Status Error Status Detail

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Data[1]

Value0xFF

0xFF

0x0D0x00

0x44

0xFA

0x04

0x3A 0x02

구분 Data[2]

Data[3] Data[4] Data[5]

Value 0xE8 0x63 0x00 0x00

28

3. 프로토콜 – 자주 쓰는 CMD

  요청 패킷 CMD 응답 패킷 CMD

EEP_WRITE( 서보 ) 0x01 0x41

EEP_READ( 서보 ) 0x02 0x42

RAM_WRITE( 서보 ) 0x03 0x43

RAM_READ( 서보 ) 0x04 0x44

EEP_WRITE( 제어기 ) 0x11 0x51

EEP_READ( 제어기 ) 0x12 0x52

RAM_WRITE( 제어기 ) 0x13 0x53

RAM_READ( 제어기 ) 0x14 0x54

서보와 제어기의 WRITE/READ CMD

29

3. 프로토콜 – 자주 쓰는 CMD

S_JOG( 서보 )– N 개의 서보를 Play Time 동안 동시에 움직인다 .

구분 Header Packet Size pID CMD CheckSum Data[0]

Value0xF

F0xF

F7+(1+4*N) 0xFE

0x06

CS1 CS2 Play Time

구분 Data[1]~Data[4]

…Data[4*N-3]~Data[4*N]

Value SJOG Data[0] … SJOG Data[N-1]

30

3. 프로토콜 – 자주 쓰는 CMD

S_JOG( 서보 )– N 개의 서보를 Play Time 동안 동시에 움직인다 .

Play Time– 목표 /속도에 도달하는 데 걸리는 시간– 값 * 11.2ms = 시간 . 예 )50 = 560ms

JOG– 목표 위치 /속도– 속도 제어 시 14 번 비트 = 역회전

SET– Stop Flag -> 모터 즉시 정지– Mode -> 0: 위치 , 1: 속도– LED -> LED 점등 여부– Invalid -> JOG 명령 무시

ID– 제어할 ID

31

3. 프로토콜 – 자주 쓰는 CMD

S_JOG( 서보 ) 예시 – 0 번 서보 , 1 번 서보 동시 제어– 실행 시간 : 100(1.12ms)– 0 번 서보 : 위치 제어 , 512, Green LED 점등– 1 번 서보 : 위치 제어 , 400, Blue LED 점등

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Value0xFF

0xFF

0x10 0xFE0x06

0x12

0xEC

0x64

구분 Data[1]

Data[2] Data[3] Data[4] Data[5] Data[6] Data[7] Data[8]

Value 0x00 0x02 0x04 0x00 0x90 0x01 0x08 0x01

32

3. 프로토콜 – 자주 쓰는 CMD

PLAY_MOTION( 제어기 )– Motion No 번 모션을 실행한다 .

Motion No : 모션 번호 0~127. (254 이면 현재 모션 정지 ) Motion Ready : 모션 준비자세 여부 (1 이면 모션의 첫 프레임만 느리게 )

예시 – ID 253 인 DRC 에서 모션 1 번 실행

예시 – ID 253 인 DRC 에서 모션 2 번 첫 프레임만 실행

구분 HeaderPacket

SizepID CMD CheckSum Data[0] Data[1]

Value0xF

F0xF

F7+2

0~0xFE

0x16

CS1 CS2Motion

No.Motion

Ready

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Data[1]

Value0xFF

0xFF

0x090xFD

0x16

0xE2

0x1C

0x01 0x00

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Data[1]

Value0xFF

0xFF

0x090xFD

0x16

0xE0

0x1E

0x02 0x01

33

3. 프로토콜 – 자주 쓰는 CMD

PLAY_TASK( 제어기 )– 제어기의 Task 를 실행한다 .

Instruction– 0 일 때 : 일반 모드로 Task 실행– 254 일 때 : Task 정지– 1 일 때 : 디버깅 모드로 Task 실행– 2 일 때 : 디버깅 모드일 때 , Task 를 한 스텝만 진행 후 멈춤

예시 – ID 253 인 DRC 에서 Task 실행

구분 HeaderPacket

SizepID CMD CheckSum Data[0]

Value0xF

F0xF

F7+1

0~0xFE

0x17

CS1 CS2Instructio

n

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Value0xFF

0xFF

0x080xFD

0x17

0xE2

0x1C

0x00

34

3. 프로토콜 – 자주 쓰는 CMD

REMOCON( 제어기 )– 제어기에 리모컨을 쏜다 .(IR 리모컨을 쏜 것과 동일한 효과 )

Channel : 리모컨의 채널 (0x61~0x6A) Length : 리모컨 버튼이 눌린 시간 (0~240, 1 당 125ms) Data : 리모컨 버튼 키

예시 – 모든 DRC 에 0x61 의 채널로 1 초 동안 버튼 0x21 이 눌림

구분 HeaderPacket

SizepID CMD CheckSum Data[0]

Data[1]

Data[2]

Value0xF

F0xF

F7+3

0~0xFE

0x1C

CS1 CS2Channe

lLength Data

구분 HeaderPacket Size

pID CMD CheckSum Data[0]

Data[1]

Data[2]

Value0xFF

0xFF

0x0A 0xFE0x1D

0xA0

0x5E

0x61 0x08 0x21

35

4. DR-Visual Logic

로봇 Task 프로그래밍 툴 모듈 배치와 Input/Output 핀 연결로 프로그램 작성 프로그램 -> C-like script -> 로봇에 다운로드 실시간 디버깅 기능 ( 스텝 진행 , 중단점까지 진행 )

36

4. DR-Visual Logic

Motion– Move : 모션 실행– Motor : 모터 제어– LED : 제어기 & 머리 LED 제어– Sound : 버저 음계 , 멜로디 재생

– 로봇의 행동을 제어

37

4. DR-Visual Logic

Sensor– Sound Sensor : 소리 방향 센서– Touch Sensor : 머리 터치 센서– Light Sensor : 빛 밝기 센서– Distance Sensor : 거리 센서 (PSD, 디지털 )– Dynamics Sensor : 가속도 / 자이로 센서– Hand Touch Sensor : 손바닥 터치 센서

– 센서의 감지 여부나 기준값 과의 비교 결과를 True/False 로 출력

38

4. DR-Visual Logic

Communication– IR Receive : IR 리모컨 수신– Button : Button

– 모듈에 설정된 IR 리모컨 Key 나 Button 입력이 들어왔는지 여부를 True/False 로 출력

39

4. DR-Visual Logic

Data– Operator : 연산자 (산술 , 논리 , 비교 , 비트 , 증감 )– Variable : 제어기 / 서보 RAM Data, 사용자 변수 , 상수

– 제어기 / 서보의 RAM Data, 사용자가 선언한 변수 , 상수 등과 연산자를 사용해 계산을 하는 모듈

40

4. DR-Visual Logic

Flow– Loop : 무한 반복 / for문– While : while문– Switch : If-else문– Wait : 내용 없는 while문– Delay : 지정한 시간 대기– Continue : 반복문 처음부터 시작– Break : 반복문 빠져 나가기

– 프로그램의 흐름을 제어하는 모듈

41

4. DR-Visual Logic

My Module– 기존에 저장되어 있는 dts 파일을 불러와서 함수처럼 사용– 파라미터 없는 void function

42

4. DR-Visual Logic

커넥터– 모듈의 Input 과 Output 을 서로 이어 한 모듈의 Output 이 다른 모듈의

Input 으로 들어가도록 프로그래밍

43

4. DR-Visual Logic

Task 예제– 거리 센서 사용 예제– 넘어짐 감지 예제– 리모컨 모션 예제– 양산 기본 Task

44

5. 두뇌보드 프로그래밍 방안

1. 순수 두뇌보드 프로그래밍 두뇌보드에서 프로토콜로 모든 제어를 하는 프로그래밍

2. 두뇌보드 – DRC 분담 프로그래밍 DRC 에 Task 를 작성해 무한 반복으로 돌려 놓고 두뇌보드에서는 REM

OCON 패킷을 사용해 제어하는 프로그래밍 두뇌보드의 연산과 통신라인의 부담이 줄음

예 ) 1 번 키를 보내면 좌회전 3회 , 직진 3회 두뇌보드 : PLAY_MOTION->RAM_READ 로 Playing Motion Register 감시 -> 완료 후 다시 PLAY_MOTION 을 6 번 반복

두뇌보드 +DRC : REMOCON

45

6. Q&A

문의사항 : jgahn@dongbu.com Soc관련 자료 : www.dongburobot.com 서비스로봇 자료실 오늘 PPT 자료 , 펌웨어 , 예제 자료 업로드

46

감사합니다 .

top related