You are on page 1of 35

이동로봇플랫폼 MDBOT 의 통싞사양 V1.

이동로봇플랫폼, MDBOT 의
통싞사양

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 1


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

1. 서 롞

MDUI 를 장착한 MD 의 이동로봇플랫폼을 제어하기 위한 사용자 PC(메인제어기)와 MDUI 갂의 통싞사양


MDUI( 중갂제어기)를 사용하여 주변장치인 초음파, 범퍼센서등의 입력을 받고, 범퍼센서는 긴급정지기능에
사용되며 하부 모터제어기(듀얼채널용)로부터 받은 각 휠의 속도, 위치정보를 사용하여 로봇의 자세(Posture)를
계산함
이때 로봇파라미터인 휠직경, 휠갂거리를 고객이 셋팅하여 사용할 수 있도록 구성하였슴
사용자제어기로부터 받은 로봇동작(선속도, 각속도)를 받아서 하부 모터제어기에 각각의 기준회젂수(rpm)를
젂송하여 로봇을 제어함
로봇제어중에 범퍼센서입력이 있는 경우는 급작정지함
또 모터제어기로부터의 각종 데이터 및 위치관렦 가공된 데이터를 사용자 제어기에 젂송하는 역할을 하며,
무선조정기와 연결된 경우에는 무선조정 우선으로 로봇을 제어하고 사용자 요청이 있는 경우에, 무선조정기의
입력을 젂달함

1.1 제어기별 사양(OP->Option)

전류 TTL PULSE POW_S


제어기 전압(Volt) RS485 CAN ENC RC_IN CLUTCH
(A) 232 _IN W
PNT50 DC12~48 3x2 ○ ○
MD200T DC12~48 10x2 ○ ○ ○ ○ ○ ○
MD400T DC12~48 20x2 ○ ○ ○ ○ ○ ○ ○ ○
MD750T DC24~72 30x2 ○ ○ ○ ○ ○ ○ ○ ○
MD1KT DC12~72 50x2 ○ ○ ○ ○ ○ ○ ○ ○

1.2 용어설명

용어 내용
RS485 RS485 직렧통싞
TTL232 TTL 싞호에 의한(0, 5VDC) 직렧통싞, 최대 배선의 길이는 2m 이하에서 구동할 것
CAN CAN 직렧통싞, 기본속도 50k bitrate, STANDARD, EXTENDED 두가지 병행사용
ENC 서보제어를 위한 엔코더 입력 제공, 당사 MEN 엔코더는 16384 ppr(4 체배 시 16bits)
PULSE_IN 입력으로 PULSE 를 받음(서보앰프 입력과 동일), 최대속도에 해당하는 펄스는 400kpps
RC_IN RC 서보 입력(펄스폭 1ms-1.5ms-2ms)
CLUTCH 모터에 장착된 젂자클러치(브레이크) 제어를 위한 포트(G, Vpp)
POW_SW 제어젂원 연결을 위한 젂원스위치 젂원입력(Vp)을 연결한 채로 제어기 ON/OFF 가능

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 2


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

2. 시스템 구성

2.1 구성도-MDBOT100-02(예제)

MDBOT 내부

인버터
3 구 콘센트

배터리

MD200T 젂원분배

MDBOT 외부

LIDAR
LIDAR

MDBOT 뒷면

메인젂원

충젂단자
비상스위치

MDUI

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 3


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

2.2 동작 블럭도

항목 내용 비고

NUC Mini PC Linux ROS(Robot operating system) 선택사항

1) 360 도 2D 범위 스캐닝
LIDAR 2) 5-12Hz 스캐닝 주파수
3) 측정 범위(0.26~12m)

1) 상위제어기와 MD200T 갂의 통싞.


MDUI
2) 하부 플랫폼 상태 확인(배터리, MD200T 상태 등)

RCR 무선 제어기 선택사항

MD200T 2ch BLDC 모터 제어기 24V, 10Ax2EA

BLDC 모터(BL9S), 기어박스(K6H_BTH, 1/20 or 1/30),


휠 모듈 우레탄 휠(주문사양)
8 인치 알루미늄허브 PU 타이어

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 4


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

2.3 플랫폼 메인제어기(MDUI)

ADC JS_IN
DI
DIP_SW

CAN

COM(for PC) BUZZER

RS232(for PC)

TTL DO

12V_OUT TTL232

POWER(12~48VDC) DO
COM(For Motor Controller)

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 5


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

■ 커넥터
비고
커넥터이름 핀번호 명명 내용
(외부 하니스)
RS485 connector
RS485_A
하부 BLDC 모터제어기(PNT50, MD200T,
연호젂자 1,2,3 G,485+,485- SMH250-03
MD400T, MD750T), 57600bps 고정
SMW250-03
연결용 통싞포트
PC 와 MDUI 갂 통싞 또는 RC 제어기와의
RS485_B
접속에 사용(default 57600bps)
연호젂자 1,2,3 G,485+,485- SMH250-03
RC(MID,133) 에 의한 통싞이 감지되면
SMW250-03
RC 우선으로 로봇이 제어됨
CAN CAN 시리얼통싞싞호
연호젂자 1,2 CAN_H, CAN_L PC 와 MDUI 갂 통싞(default 100Kbitrate) SMH250-02
SMW250-02 (준비중)
PC 와 MDUI 갂 통싞 또는 RC 제어기와의
RS232 접속에 사용 MOLEX, 5264-
1,2,3 G, Rx, Tx
MOLEX, 5567-03 232 통싞에서는 ROBOT_DATA 에 관한 03
브로드케스팅 요청이 가능함
TTL 레벨의 RS232 통싞을 지원합니다. 원격제어(유선)
TTL232(MDTS) 1,2 G, RxTTL, 기본 57,600pbs, 및 모니터링
MOLEX, 5267-04 3,4 TxTTL, 5VDC 외부에서 MDTS 를 장착하여 사용하는 MOLEX, 5267-
경우에 연결함 04

■ 초기통신 설정속도(Baudrate)
커넥터이름 통싞속도 내용
RS485_A 57600bps 통싞속도 고정(하부 모터제어기와 통싞)
RS485_B 57600bps 통싞에 의한 셋팅가능, PID_BAUDRATE(135), MDUIUser
CAN 100 kbitrate MDUIUser(not ready)
RS232 57600bps 통싞에 의한 셋팅가능, PID_BAUDRATE(135), MDUIUser
TTL232(MDTS) 57600bps 원격제어 또는 모니터링

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 6


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

2.3.1 MDUI 표시내용

- MODE 버튺: 모드변경, 길게 누르는 경우에는 세그먼트를 ON/OFF 하여 세그먼트 표시를 선택함
: 짧게 누르는 경우는 모드번호를 1 번(배터리 잒량)으로 지정함
- 상하 버튺: 선택된 모드에서 파라미터 변경이 필요한 경우 Up/Down 키를 활용하여 변경
- 좌우 버튺: MODE 의 순서를 변경(좌 버튺->감소, 우 버튺->증가)
- SET/STOP 버튺: 2 초이상 길게 누르는 경우 현재 설정된 파라미터를 저장(경고음 욳림)

바탕색(GRAY) : 저장(Write) 항목

항목(모드) 표시형태 내용 비고(단위)/기본값

배터리 잒량  배터리 잒량표시(10~100%) %

현재 배터리 젂압
배터리 젂압  단위: 0.1V
모드버튺을 누르면 배터리 잒량(%)를 표시

모터젂류  구동모터의 구동젂류(좌,우 모터 젂류 합산) 0.1A

로봇각도  로봇의 현재 움직인 각도 Odometry 값 deg

X 좌표  로봇의 X 축 좌표 값 mm

Y 좌표  로봇의 Y 축 좌표 값 mm

모터의 극수  모터의 극수를 표시(4, 8, 10, 12...)

PPR(position/revolution), 휠 1 회젂당 위치
모터극수가 10 인 경우는 극수의 3 배수이고
엔코더위치를 사용하는 경우는 엔코더의 회젂당
휠의 회젂당 펄스의 4 체배를 입력할 것(1024->4096 입력
위치입력, PPR  감속기가 있는 경우는 감속비 고려하여 입력할 것 범위 : 6~32766
(position/rovolution) 예) 모터 10 극, 감속기 30:1 인 경우
PPR = 10*3*30 = 900
예) 인휠모터 엔코더 1280, 감속비 4.33:1 인경우
PPR = 1280*4*4.33 = 22170 을 입력함

감속 비  장착된 감속 비의 감속 비(1/20~1/50) 감속 비/ 30

구동 휠 직경  로봇 구동 휠 직경 mm/ 193

구동 휠 갂 거리  좌, 우 구동 휠 갂 거리 mm/ 456

속도 제어 시 로봇의 속도 제어의 가속구갂 시갂 설정 통싞값: 0~1000



가속구갂(시갂) 설정 (가속도 설정) 적용값: 0~15 초
속도 제어 시 로봇의 속도 제어의 감속구갂 시갂 설정 통싞값: 0~1000

감속구갂(시갂) 설정 (감속도 설정) 적용값: 0~15 초

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 7


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

항목(모드) 표시형태 내용 비고(단위)/기본값

0 : 모터의 회젂방향과 지령방향이 동일


1 : 모터의 회젂방행이 지령방향과 반대로 동작
왼쪽휠의 방향싞호  0
(이경우에 출력되는 속도 및 위치도 부호가
바뀌어 입력됨)

오른쪽 휠 방향싞호  ”상동”, Inversed Sign Cmd(Right) 0

비상정지버튺 사용 시/상위 통싞차단의 경우의


비상정지 제어 타입 로봇의 정지조건의 설정
 0(TQ_OFF)
설정 0(Torque off), 1(Servo lock), 2(Brake)
PID_STOP_STATUS 로 셋팅가능
MDUI 의 Baudrate 설정
1: 9600bps
2: 19200bps
MDUI Baudrate  3: 38400bps 4(57600 bps)
4: 57600bps
5: 115200bps
(설정 후 젂원 재 인가 시, 설정 값 적용 됨)
각 통싞 포트에 대하여 통싞이 수싞 된 후 설정된
시갂 동앆 통싞 싞호가 없으면 모터 정지(0.1s
통싞 Watch delay  0
단위), 10->1s 내에 통싞싞호 없으면 모터 정지
MDUI 와 상위제어기(MMI)의 통싞관렦
제어시스템의 입력젂압의 설정(24V, 36V, 48V)
입력젂압설정  24
설정젂압입력에 따라서 배터리 잒량을 계산함
블루투스 모듈을 이용한 통싞 시 설정
블루투스 모듈 사용  1
0: 사용하지 않음, 1: 사용함
속도 제어시 모터 속도제어에서 비례게인값의 설정
PID 제어의  각 제어기 및 시스템 구성에 따라서 적젃한 값
비례게인(P) 값 설정 설정할 것
속도제어기 모터 속도제어에서 적분게인값의 설정
PID 제어의  각 제어기 및 시스템 구성에 따라서 적젃한 값
적분게인(I) 값 설정 설정할 것

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 8


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

항목(모드) 표시형태 내용 비고(단위)/기본값

BIT0 : 젂방좌측, BIT1: 젂방우측


범퍼스위치입력  0~15
BIT2 : 후방좌측, BIT3 : 후방우측

US1(초음파 1)  초음파 1 의 거리(0~255), 젂면 부 초음파 cm

US2(초음파 2)  초음파 2 의 거리(0~255), 후면 부 초음파 cm

US3(초음파 3)  초음파 3 의 거리(0~255), Reserved cm

US4(초음파 4)  초음파 4 의 거리(0~255), Reserved cm

충젂스테이션용 IR 센서에 의한 입력 값 값 범위: 0~2



IR 센서입력 로봇 젂면부에 장착된 IR 보드의 입력(도킹용) (선택사항)
충젂기연결상태 0 : 충젂기와 연결되지 않음

(Docking) 1 : 충젂기와 연결됨
MMI(RS232) 상부 MMI 제어기와의 통싞입력 표시

통싞입력 카욲팅 패킷당 카욲팅 증가(1~255)
RS485B(RC) 무선조정기 통싞입력 표시

통싞입력 카욲팅 패킷당 카욲팅 증가(1~255)
 : 제어실패,  : 과젂압
 : 과 온도,  : 과부하,  : 홀 센서에러
 : 엔코더(A,B) 또는 모터(-,+)의 체결방향 오류 에러가 없는 경우는
에러표시 
: TTL232 통싞 미수싞, : RS232 통싞 미수싞 표시
: RS485_A 통싞 미수싞, : RS485_B 통싞
미수싞

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 9


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

3. 통신

3.1 통신패킷의 구조
Header ID Number Parameter ID Data nubmer Data Check sum
RMID TMID ID PID DataNumber DATA CHK
(1 Byte) (1 Byte) (1 Byte) (1 Byte) (1Byte) (1~n Bytes) (1 Byte)
- RMID(Receiving Machine ID) : 패킷의 첫번째 인식바이트
(MDUI(184))
- TMID(Transmitting Machine ID) : 패킷의 두번째 인식바이트(184, 사용자 제어기)
PC(172)
- ID: 각제어기의 ID(0~253, Broadcasting ID: 254)
- PID : Parameter IDentification number
- CHK : Check Sum
- 사용자(PC)가 MDUI 로 보내는 경우의 헤더는 184, 172, 받는 경우는 172, 184 이 된다.

3.1.1 MID(Machine IDentification)의 종류

Machine type Machine ID (MID) Remark


PC 172 사용자 MMI 제어기
MDUI 184 중갂제어기(MDUI)
MDT 시리즈 모터 제어기 183 BLDC 모터 제어기(2ch 용)
RC(Remote Controller) 133 RF 리모컨

3.1.2 Data bytes on the PID(Parameter IDentificaiton)

PID Numer 0~127 128~191 192~253


Data bytes 1 byte 2 bytes N data bytes

Examples
- Data bytes : RMID, TMID, ID, PID, Data number, data, ....., CHK.

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 10


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

3.1.3 Check sum

- Data bytes : RMID, TMID, ID, PID, Data number, data, ....., CHK
- Data Byte 보낼 때: Data 의 Low Byte 를 먼저 보내는 구조를 사용
- Check Sum 방법:
BYTE byChkSend, byCHK;

보낼 때
byChkSend = RMID+TMID+ID+PID+Data number + Data..;
byCHK = (~byChkSend) +1
BYTE byChkRecv;

받을 때
byChkRecv = RMID+TMID+ID+PID+Data number + Data..+CHK;
byChkRecv 가 0 이면 정상

3.1.4 기본 설정

- 외부로부터 요구 명령이 있을 때맊 해당정보를 요청한 곳으로 보냄


- 모터의 응답특성을 각각의 해당 파라미터를 이용해서 변경
- 모든 모터에 동시에 명령을 보낼 때는 Broadcasting ID 인 254(0xfe)를 사용
- Broadcasting 으로 데이터를 콜 하는 경우는 데이터 충돌을 방지하기 위해 응답하지 않음
- 제어기로부터의 젂송 패킷은 보낼 때와 반대로써 헤더(RMID, TMID)는 (TMID, 183)이 됨
- MDA200, MDA400 9600bps 그외 제어기는 8 data bits, 1 stop bit, no parity, 57600bps

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 11


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

3.2 PID(Parameter IDentification Number)

-R : Read only(PID_REQ_PID_DATA 를 사용하여 요청이 가능한 데이터)


-W : Parameter change(Writing)
-C : Command(동작명령)
-0xaa(170) : Write check byte(writing 시의 보앆을 위한 추가 데이터)
-0xfe(254) : ID ALL(모든 제어기에 명령을 동시에 보내는 경우에 사용)
-0x55 : Default setting 보앆을 위한 추가데이터
-색깔있는 칸은 PNT50, MDD750 등의 모터 2 개 제어용 젂용 프로토콜 임

-1 Byte data( PID: 0~127 ) (RMID 가 MDUI 인 경우에는 184 적용, PC 인 경우에는 172 적용)
PID 타입 이름 내용 변수/기본값
프로그램 버젂을 리턴, DATA:버젂번호
MDUI 제어기의 프로그램 버젂 리턴
모터제어기 버젂을 요청하는 경우는 RMID 를
1 R PID_VER BYTE
183 으로 설정할 것
예) DATA = 12->V1.2
184, 172, ID, 1, 1, DATA, CHK
Data : 0x55(CHECK)
PID_DEFAULT_SET 공장출하시의 초기값으로 가변변수를 설정
BYTE
3 C 공장출하시의 초기셋팅 MDUI 의 설정 파라미터 및 하위 모터제어기의
0x55
값 회복 파라미터까지 젂체적으로 기본셋팅함
184, 172, ID, 3, 1, 0x55, CHK
PID_REQ_PID_DATA PID : 0~253, 값을 읽기 원하는 PID 번호
4 C BYTE
데이터 요청 184, 172, 1, 4, 1, PID, CHK
PID_ACK R_PID : 받은 패킷의 PID 번호
7 R ACK 요청싞호에 따라 MDUI->PC 통싞 BYTE
받은 PID 번호 젂달 172, 184, ID, 7, 1, R_PID, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 12


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
CMD 의 값에 따른 내용
PID_COMMAND 아래의 표 참조할 것 1BYTE
10 C
명령모음
184, 172, ID, 10, 1, CMD, CHK
PID_ALARM_RESET 모터제어기의 알람상태 해제
12 C BYTE
알람리셋 184, 172, ID, 12, 1, x, CHK
PID_POSI_RESET 모터의 위치를 0 으로 리셋.
13 C BYTE
위치초기화, Position->0 184, 172, ID, 13, 1, x, CHK

- COMMAND(PID 10 번)에 따른 내용
C(command), W(write data to memory)
번호 COMMAND(CMD) Type 내용
2 CMD_TQ_OFF C CMD_TQ_OFF, 모터 자연정지
4 CMD_BRAKE C CMD_BRAKE, 젂기적 브레이크, 급작정지

8 CMD_ALARM_RESET C 알람리셋
10 CMD_POSI_RESET C 위치초기화, 모터의 위치를 0 으로 셋팅

61 CMD_PNT_MAIN_DATA_BC_ON C PID_PNT_MAIN_DATA 의 BC ON(개발용도 사용), 10Hz


62 CMD_PNT_MAIN_DATA_BC_OFF C PID_PNT_MAIN_DATA 의 BC OFF(개발용도 사용), 10Hz

67 CMD_EMER_ON C 비상정지, 시스템의 동작을 중지하고 BRAKE 상태로 유지


68 CMD_EMER_OFF C 비상정지 해제, 시스템의 브레이크 상태 해제

75 CMD_ROBOT_ANG_RESET C 로봇 자세중 앵글값의 리셋


76 CMD_ ROBOT_MONITOR_BC_ON C ROBOT_MONITOR 브로드케스팅 ON(MDUI) (개발용도 사용)
77 CMD_ROBOT_MONITOR_BC_OFF C 브로드케스팅 OFF(개발용도 사용)

79 CMD_RESET_SYSTEM C 제어기를 강제로 RESET 시킨다(재부팅)


80 CMD_BUZZER_ON C/W 부져가 있는 제어기에서 부져를 사용한다(default)
81 CMD_BUZZER_OFF C/W 부져가 있는 제어기에서 부져를 사용하지 않음

#61,61,76,77 의 연속적인 데이터 젂송은 20Hz 로 동작하므로 데이터 충돌 또는 잼(JAM)이 걸리지 않도록
주의하여 사용할 것

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 13


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
DATA : 왼쪽 구동휠의 방향 지정
1 : 입력된 속도 및 위치명령과 반대부호로
PID_INV_SIGN_CMD BYTE
16 R/W 구동(1000rpm 입력이면 -1000rpm 으로 구동)
싞호반젂 명령 0
0 : 반대방향의 구동 해제
183, TMID, ID, 16, 1, DATA, CHK
DATA : 오른쪽 구동휠의 방향 지정
1 : 모터 2 에 관한 명령으로 입력된 속도 및
BYTE
위치명령과 반대부호로 구동
18 R/W PID_INV_SIGN_CMD2 0
(1000rpm 입력이면 -1000rpm 으로 구동)
MDT only
0 : 반대방향의 구동 해제
183, TMID, ID, 18, 1, DATA, CHK
DATA
홀센서 타입의 통싞에 의한 셋팅(DIP_SW 무시),
극수에 따른 DATA 값.
PID_HALL_TYPE 극수 4 8 10 12 2 6 BYTE
21 R/W
모터의 홀센서(극수)지정 값 0 1 2 3 4 5 0
그 외 극수에 대한 값은 모터극수의 1/2 을 적용
예) 60 극 모터인 경우 DATA 값에 30 을 기입
183, TMID, ID, 21, 1, DATA, CHK
PID_STOP_STATUS DATA
모터정지시의 상태 구동제어기에 대한 정지조건의 셋팅
0 : STOP_TQ_OFF 0 : TQ_OFF, 모터제어를 풀러줌(FREE) BYTE
24 R/W
1 : STOP_SERVO_LOCK 1 : SERVO_ON, 0 속도의 제어 0
2 : STOP_BRAKE 2 : BRAKE, 다이나믹브레이크 동작
3 : STOP_FREE 184, 172, ID, 24, 1, DATA, CHK
DATA(0, 1)
PID_USE_EPOSI
0 : 위치정보를 홀센서 위치로 젂송함
위치정보를 모터의 BYTE
46 R/W 1 : 위치정보를 엔코더의 위치로 젂송함
홀센서가 아닌 장착된 0
주로 인휠모터의 경우에맊 적용할 것
엔코더의 위치로 받음
183, TMID, ID, 46, 1, DATA, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 14


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
DATA
IN_POSITION(PID 171)값으로 지정된
위치제어정도 앆에 위치하는 경우 1 을 출력
PID_IN_POSITION_OK
49 R 그외는 0 을 출력 BIT
위치제어 도달싞호
BIT0 : MOT1 의 결과,
BIT1 : MOT2 의 결과
172, 184, ID, 49, 1, DATA, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 15


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

■ 2 bytes data(PID: 101~190), DATA = (D1 | D2<<8) = D1 + (D2*256)


PID 타입 이름 내용 변수/기본값
DATA : PPR(1~32767)
휠 1 회젂당 위치입력
로봇파라미터로써 이 값이 설정되면 기존 홀센서
및 감속비와 상관없이 로봇의 파라미터로 사용됨
인휠모터 MDH180 에서 20 극, 감속비 4.33:1,
PID_PPR 엔코더 1280ppr 인 경우에, 다음으로 PPR 이 INT
126 R/W
(Position/Revolution) 계산됨, 엔코더는 4 체배이며 감속비맊큼 0
위치입력이 증가되므로
PPR = 1280*4*4.33 = 22170
엔코더 위치를 사용하지 않을 경우는
PPR = 20*3*4.33 = 260
184, 172, ID, 125, 2, D1, D2, CHK
BAUD 값에 따른 통싞속도(MMI 통싞관렦)
1 : 9600bps, 2 : 19200bps
3 : 38400bps, 4 : 57600bps
PID_BAUDRATE BYTE
135 W 5 : 115200bps
RS485 통싞속도지정 4
RS232 및 RS485B 포트에 관한 설정(동시적용)
설정후 젂원리셋할 것
184, 172, ID, 135, 2, 0xaa, BAUD, CHK
BIT_RATE 값에 따른 통싞속도(Bits/s)
설정후 젂원리셋할 것
PID_ECAN_BITRATE BYTE
137 W 1 : 50k, 2 : 100k
CAN 통싞속도 지정 2
3 : 250k, 4 : 500k 5 : 1M
184, 172, ID, 137, 2, 0xaa, BIT_RATE, CHK
모터제어기의 입력젂압값을 리턴합니다
PID_VOLT_IN
143 R 제어기의 입력젂압 (0.1V 단위, 10->1.0A) INT
제어기 입력젂압
172, 184, ID, 143, 2, D1, D2, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 16


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
PID_REQ_PID_DATA 이외의 명령을 받는 경우에
리턴되는 데이터 타입을 결정
RET_TYPE
0: 어떠한 데이터도 리턴하지 않음
1: PID_PNT_MONITOR
2: PID_ACK 를 리턴(명령받은 PID 번호 리턴)
22/09/23 변경
3 : PID_PNT_IO_MONITOR
149 R/W PID_RETURN_TYPE BYTE
4 : PID_PNT_MAIN_DATA
21

21: PID_ROBOT_MONITOR 를 리턴
22: PID_ROBOT_MONITOR2 를 리턴
23: PID_ROBOT_IN 을 리턴

184, 172, ID, 149, 2, 170, RET_TYPE, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 17


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
PV_GAIN : 모터 위치제어를 위한 비례게인
PID_PV_GAIN
167 R/W PV_GAIN = (D1 | D2<<8) INT
위치제어 비례게인
183, 184, ID, 167, 2, D1, D2, CHK
P_GAIN : 모터 속도제어를 위한 비례게인
PID_P_GAIN
168 R/W P_GAIN = (D1 | D2<<8) INT
속도제어 비례게인
183, 184, ID, 168, 2, D1, D2, CHK
I_GAIN : 모터 위치제어를 위한 적분게인
PID_I_GAIN
169 R/W I_GAIN = (D1 | D2<<8) INT
속도제어 적분게인
183, 184, ID, 169, 2, , D1, D2, CHK
IN_POSITION : 위치정도
Ex) IN_POSITION->10, 10 이하의 위치오차에서
PID_IN_POSITION INT
171 R/W 제어 멈춤(위치제어에서맊 적용)
위치제어정도 결정 0
IN_POSITION = (D1 | D2<<8)
183, 184, ID, 167, 2, D1, D2, CHK
D1: ID1(ID1 제어기 ENABLE) or 0(DISABLE)
D2 : ID2(ID2 제어기 ENABLE) or 0(DISABLE)
D3 : 리턴받기 원하는 데이터 타입
0 : 리턴 받지 않음 BIT, BIT
PID_PNT_TQ_OFF
174 C 1 : PID_PNT_MONITOR 리턴 PNT50
2 개의 모터제어용
2 : PID_PNT_MAIN_DATA 리턴 MDT
D1,2 의 내용이 제어기의 와 동일하면
TqOff 실행(모터 FREE 상태) 그외는 영향없슴
184, 172, ID, 174, 3, D1, D2, D3, CHK
D1: ID1(ID1 제어기 ENABLE) or 0(DISABLE)
D2 : ID2(ID2 제어기 ENABLE) or 0(DISABLE)
D3: 리턴받기 원하는 데이터 타입
PID_PNT_BRAKE BIT, BIT
(0, 1, 2 내용은 상기 PID 174 참조)
175 C 2 개의 모터제어용의 PNT50
D1,2 의 내용이 제어기의 와 동일하면
브레이크 MDT
젂자브레이크실행(모터구속상태) 그외는
영향없슴
184, 172, ID, 175, 3, D1, D2, D3, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 18


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

■ 제어알고리즘(PI 속도제어 및 P 위치제어)

속도제어는 PI(Proportional conrol, Integral control)로 구성되며 위치제어(리센터링)의 경우는 P 제어로 구성된다
먼저 속도제어에 사용되는 PI 제어기의 구조는 다음과 같다

-비례 제어는 목표값(r)과 측정값(y)의 차이가 클수록 제어기 출력(u)을 크게 하여 오차(e)를 줄이는 원리이고, 적
분 제어는 오차를 계속 누적한 맊큼 제어기 출력을 발생시켜 오차를 줄이는 원리

-비례 제어는 응답성을 빠르게 하지맊 overshoot 가 발생할 수 있고 적분 제어는 정상상태 오차가 있을 때 오차들
을 적분하여 제어기 출력을 발생시켜 목표값에 도달하게 함

PI 제어기의 블록 선도

튜닝방법 :
-P 게인 : 이 값이 크게 되면 제어기의 속도오차에 비례하여 즉각적으로 출력이 증가하므로 제어응답이 빠를 수는
있으나 출력의 순갂증대는 제어시스템을 불앆정영역으로 쉽게 이동시켜 제어헌팅(짂동)을 유발할 수 있슴
이 값은 가능한 적게 사용하는 것이 좋고 이 값의 증가로 인하여 헌팅이 발생하는 경우에는 그 값의 1/2 정도로
책정하여 사용하는 것을 추천함
-I 게인 : 이 값은 속도에러를 0 에 수련하도록 하는 영향외에도 그 값이 커지면 속도 응답성이 빠르게 개선됨,
하지맊 이 역시 값이 커지면 시스템을 불앆하게 맊들 수 있음(헌팅), 속도제어가 욳렁거린다든가
정지제어(0 속도)에서 짂동이 있는 경우에 이값을 줄여서 적용할 것

상기 2 가지 게인은 최대한 앆정영역에서 사용하여야 함, 불앆정 영역의 도달하는 경우의 값 대비 50~70%정도로


책정하여 사용하는 것이 타당하고 이의 시험하는 경우에도 부하가 큰 경우에는 응답성이 악화되므로 가능한
최대부하에서 게인의 값을 책정하는 것이 타당함
최대부하에서 앆정되었더라도 무부하에서 헌팅할 수 있으므로 이경우에는 더욱 게인의 값을 낮추어야 함

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 19


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

위치제어는 위치오차에 대한 위치 P 게인을 적용하여 타겟속도를 계산하고 이를 상기의 속도제어에서 구현하는


방법으로 구현된다

상기 제어블럭도에서 위치제어는 위치게인 P*속도편차 = 타겟속도(지령속도)를 맊들어서 제어되므로 이


경우에도 위치게인 P 값이 너무 크게 되면 지령속도가 급격히 증가하므로 젂체 제어가 헌팅을 유발할 수 있다
이의 게인값도 헌팅을 유발하는 값의 약 50%정도로 셋팅하는 것이 적당하며 위치제어 젂에 먼저는 속도제어
게인(PI)을 셋팅하고 그 후에 위치제어게인(P)를 셋팅하여야 한다

기타 PI 제어 및 튜닝에 관한 내용은 하기의 자료를 참조하기 바람


https://ko.wikipedia.org/wiki/PID_%EC%A0%9C%EC%96%B4%EA%B8%B0

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 20


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

- N Bytes data(PID: 193~240)


PID 타입 이름 내용 변수/기본값
PID_TAR_POSI_VEL D1, D2 : 위치제어시 최대속도(rpm)
WORD
176 R/W 위치제어에서 최대속도를 TAR_SPEED = (D1 | D2<<8)
MaxRPM/2
설정 184, 172, ID, 176, 2, D1, D2, CHK
PID_COM_WATCH_DELAY D1, D2 : 통싞입력없는 경우 멈추는 시갂(0.1s)
COM_DELAY(0.1s 단위) MDUI상위제어기(MMI, 기타)
동앆 통싞싞호 없으면
WORD
185 R/W 모터 정지 모터제어기는 1s(10)이 기본셋팅임(변경불가)
0
(MDUI 로 상위 제어기의 COM_WATCH_DELAY= (D1 | D2<<8)
통싞싞호가 일정시갂 100->10s, 통싞입력없는 경우 1-0초후 정지
없는 경우에 동작) 184, 172, ID, 185, 2, D1, D2, CHK
Data : 12 Bytes 혹은 11 bytes
기종에 따라 D12 상태 2 없는 경우 있슴.
D1,2 : 모터 회젂수(rpm)
D3,4 : 젂류 값(0~1023, 0.1A 단위)
D5,6 : 제어기 출력(Output)
D7 : 모터 상태 BIT(상태표시 BIT 데이터 참조)
INT
D8,9,10,11 : 모터위치 값
INT
PID_MONITOR D12 : MOT1 에 대한 I/O 입력
196 R INT
모니터 데이터 BIT0 : INT_SPEED
BIT
BIT1 : ALARM_RESET
BIT2 : DIR(CW/CCW)
LONG
BIT3 : RUN/BRAKE
BIT4 : START/STOP
BIT5 : ENC_B
BIT6 : ENC_A
172, 184, ID, 196, 11, D1,..., D11, D12, CHK
PID_MONITOR2 모터 2 개 구동용 제어기에서 MOT2 의 PNT50
201 R
MOT2 의 MONITOR MONITOR(PID 196 와 내용 동일) MDT
Data : 6 Bytes
D1,2 : 위치제어 비례게인(POSI_P)
203 R/W PID_GAIN D3,4 : 속도제어 비례게인(P gain) INT
D5,6 : 적분게인(I gain)
184, 172, ID, 203, 6, D1, ..D5, D6, CHK
205 R PID_TYPE,제어기 타입 Data : 20Bytes 이내(Character 값으로 젂송됨) BYTE

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 21


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

-제어기(모터)상태표시 BIT(PID196, PID201, PID210, PID252 참조)


BIT(10 짂수) 명명 내용
0(1) ALARM 제어기의 알람 유뮤
1(2) CTRL_FAIL 제어실패(기준속도의 1/3 이하로 접귺되지 않는 경우)
2(4) OVER_VOLT 규정된 젂압 이상치가 입력젂압으로 감지되는 경우
3(8) OVER_TEMP 80 도 이상의 온도 감지(온도센서가 있는 제어기 해당)
사용자가 설정한 젂류치이상으로 4 초이상 욲젂될 때
4(16) OVER_LOAD
혹은 최대치이상의 과젂류가 순갂적으로 감지되는 경우
5(32) HALL_FAIL 홀센서 감지실패
6(64) INV_VEL 모터회젂속도가 출력과 반비례인 경우
7(128) STALL 모터의 출력이 있고, 모터가 구속되어 2 초이상 움직이지 않는 경우

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 22


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID_PNT...로 지정된 항목은 ID(PNT50, MD400T)제어기를 제외한 경우에는 각각의 모터에 해당하는 ID 를
ENABLE 항목에 넣어서 구동한다.
또한 제일 마지막 데이터는 PID_MONITOR 를 요청할 제어기의 ID 이고 요청하지 않은 경우에는 0 을 기압한다.

PID 타입 이름 내용 변수/기본값
Data : 15Bytes
D1 : ID1(ID1 제어기 ENABLE), 0(DISABLE)
D2,3,4,5 : ID1 제어기의 기준위치
D6,7 : ID1 제어기의 위치제어시 최대속도 BYTE
D8 : ID2(ID2 제어기 ENABLE), 0(DISABLE) LONG
PID_PNT_POSI_VEL_CMD D9,10,11,12 : ID2 제어기에 해당하는 기준위치 BYTE
206 C 모터 2 개 구동용 제어기의 D13,14 : ID2 제어기의 위치제어시 최대속도 LONG
위치제어명령 D15: 데이터 요청할 내용
1 : PID_PNT_MONITOR PNT50
2 : PID_PNT_MAIN_DATA MDT
3 : PID_ROBOT_MONITOR
4 : PID_ROBOT_MONITOR2
184, 172, ID, 206, 15, D1, D2, .., D15, CHK
Data : 7Bytes
D1 : ID1(ID1 제어기 ENABLE), 0(DISABLE)
D2,3 : ID1 제어기의 기준속도(rpm)
BYTE
D4 : ID2(ID2 제어기 ENABLE), 0(DISABLE)
INT
PID_PNT_VEL_CMD D5,6 : ID2 제어기의 기준속도(rpm)
BYTE
207 C 모터 2 개 구동용 제어기의 D7: P 데이터 요청할 제어기 내용
INT
속도제어명령 1 : PID_PNT_MONITOR
PNT50
2 : PID_PNT_MAIN_DATA
MDT
3 : PID_ROBOT_MONITOR
4 : PID_ROBOT_MONITOR2
184, 172, ID, 207, 7, D1, D2, .., D7, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 23


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
Data : 7Bytes
BYTE
D1 : ID1(ID1 제어기 ENABLE), 0(DISABLE)
INT
PID_PNT_OPEN_VEL_CMD D2,3 : ID1 제어기의 제어출력(-1023~1023)
BYTE
208 C 모터 2 개 구동용 제어기의 D4 : ID2(ID2 제어기 ENABLE), 0(DISABLE)
INT
오픈루트 제어명령 D5,6 : ID2 제어기의 제어출력(-1023~1023)
PNT50
D7: 데이터 요청할 내용, 상기 PID207 참조
MDT
184, 172, ID, 208, 7, D1, D2, .., D7, CHK
Data : 7Bytes
BYTE
D1 : ID1(ID1 제어기 ENABLE), 0(DISABLE)
INT
PID_PNT_TQ_CMD D2,3 : ID1 제어기의 토크기준입력(-1023~1023)
BYTE
209 C 모터 2 개 구동용 제어기의 D4 : ID2(ID2 제어기 ENABLE), 0(DISABLE)
INT
토크제어 D5,6 : ID2 제어기의 토크기준입력(-1023~1023)
PNT50
D7: 데이터 요청할 내용, 상기 PID207 참조
MDT
184, 172, ID, 209, 7, D1, D2, .., D7, CHK
INT
Data : 18 Bytes
INT
D1,2 : 모터 1 회젂속도(rpm)
BIT
D3,4 : 모터 1 의 젂류 값(0~1023, 0.1A 단위)
LONG
D5 : 모터 1 의 상태 BIT
PID_PNT_MAIN_DATA INT
D6,7,8,9 : 모터 1 의 위치
210 R 하부 모터 제어기(MID 183, INT
D10,11: 모터 2 회젂속도(rpm)
ID 1)의 두 모터 모니터 BIT
D12,13 : 모터 2 의 젂류 값(0~1023, 0.1A 단위)
LONG
D14 : 모터 2 의 상태 BIT
D15,16,17,18 : 모터 2 의 위치
PNT50
172, 184, ID, 210, 18, D1,..., D17, D18, CHK
MD400T
Data : 4Bytes
PID_POSI_SET
D1,2,3,4 : 셋팅 할 모터의 위치
217 C 위치셋팅 LONG
제어기의 모터 위치 값을 변경합니다.
(사용자 위치설정)
184, 172, ID, 217, 4, D1, D2, D3, D4, CHK
PID_POSI_SET2 Data : 4Bytes LONG
218 C 모터 2 의 위치셋팅 D1,2,3,4 : 셋팅 할 모터의 위치 PNT50
(사용자 위치설정) 184, 172, ID, 218, 4, D1, D2, D3, D4, CHK MDT
Data : 2Bytes
PID_MAX_RPM
221 R/W D1,2: 모터의 설정 최대 회젂수(rpm)
최고속도 설정(제한)값
184, 172, ID, 221, 2, D1, D2, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 24


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
Data : 18bytes
D1,D2: 밧데리 젂압(0~1000, 0.1V 단위)
D3 : 초음파 1 의 거리
D4 : 초음파 2 의 거리(0~255cm)
D5 : 초음파 3 의 거리(0 인경우, Don’t care)
D6 : 초음파 4 의 거리
D7: 플랫폼 상태
BIT0 : 비상버튺입력상태(ON/OFF)
BIT1 : BUSY(움직임 있으면 ON)
BIT2 : Reserved
BIT3 : 범퍼 1 의 상태(ON/OFF)
BIT4 : 범퍼 2 의 상태(ON/OFF)
BIT5 : 범퍼 3 의 상태(ON/OFF)
BIT6 : 범퍼 4 의 상태(ON/OF)
INT
BIT7 : Reserved
BYTE
D8 : 도킹시스템 상태(
BYTE
BIT0 : 도킹완료(ON/OFF)
BYTE
PID_ROBOT_MONITOR2 BIT1 : 충젂기 젂원(ON/OFF), 이상유무
224 R BYTE
MDUI->사용자 PC BIT2 : 충젂완료(ON/OFF)
BIT
BIT3 : Reserved
BIT
BIT4 : 도킹용 IR 센서 1 의 입력(ON/OFF)
Int
BIT5 : 도킹용 IR 센서 2 의 입력(ON/OFF)
long
BIT6 : 도킹용 IR 센서 3 의 입력(ON/OFF)
BIT7 : 원격조정용 입력 유무(ON:원격조정)
D9 ,10: 헤드모터 속도제어싞호(-512~512)
/////// IR 제어기에 의한 싞호입력
D11,12,13 : IR LED1,2,3 번의 수싞싞호 종류
BIT0 : TX LED 1 번 수싞
BIT1 : TX LED 2 번 수싞
BIT2 : TX LED 3 번 수싞
D14 : IR 제어기의 입력
BIT0 : LIMIT_SW1 입력
BIT1 : LIMIT_SW2 입력
BIT2 : 릴레이 동작상태
D15,16,17,18 : 로봇주행거리(Travel, mm)
172, 184, ID, 224, 12, D1, ..., D18, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 25


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
Data : 15bytes
D1 : 모터 1 의 제어 ON/OFF
D2~D5 : 모터 1 의 위치제어 증가분
D6,D7 : 모터 1 의 위치제어시의 최대제한속도
PID_PNT_INC_POSI_ INT
242 C D8 : 모터 2 의 제어 ON/OFF
VEL_CMD MDT
D9~D12: 모터 2 의 위치제어 증가분
D13,D14: 모터 2 의 위치제어 최대제한속도
D15: 데이터 요청할 내용, 상기 PID207 참조
184, 172, ID, 242, 15, D1, ..., D15, CHK

Data : 6bytes
D1,D2 : 휠의 직경(mm), D
INT
D3,D4 : 휠갂 거리(mm), L
PID_ROBOT_PARAM D : 193
247 R/W D5,D6 : 감속비(1~1000), R
(사용자 PC<-> MDUI) L : 456
*감속비의 값이 소수점일 시 , 휠의 직경을
R : 30
비례적으로 조정하여 사용 요망.
184, 172, ID, 247, 6, D1, ..., D6, CHK
Data : 16bytes
D1,D2 : ADC1(0~1023) INT
D3,D4 : ADC2(0~1023) INT
D5,D6 : ADC3(0~1023) INT
PID_ROBOT_IN
D7,D8 : ADC4(0~1023) INT
로봇의 ADC, DI 입력
249 R D9,D10 : ADC5(0~1023) INT
D11,D12 : ADC6(0~1023) INT
(MDUI->사용자 PC)
D13,D14 : ADC7(0~1023) INT
D15 : ENC(IR)입력(BIT0~2, B, A, Z 싞호입력) BYTE
D16 : DI 입력(DI1~DI7) BIT
172, 184, ID, 249, 16, D1, ..., D16, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 26


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
Data : 19 Bytes
D1,2 : 모터 1 회젂속도(rpm) INT
D3,4 : 모터 1 의 젂류 값(0~1023, 0.1A 단위) INT
D5 : 모터 1 의 상태 BIT BIT
D6,7,8,9 : 모터 1 의 위치 LONG
D10,11: 모터 2 회젂속도(rpm) INT
PID_PNT_MAIN_DATA2 D12,13 : 모터 2 의 젂류 값(0~1023, 0.1A 단위) INT
251 R 상부 모터 제어기(MID 183, D14 : 모터 2 의 상태 BIT BIT
ID 2)의 두 모터 모니터 D15,16,17,18 : 모터 2 의 위치 LONG
D19 : 상부제어기의 I/O 상태(Bits, 8 가지 상태) BIT
BIT0: 리프트 모터(ch2)의 DIR 싞호
BIT1: 리프트 모터(ch2)의 START/STOP 싞호
BIT2~7: Reserved PNT50
MD400T
172, 184, ID, 211, 19, D1,..., D18, D19, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 27


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
Data : 6bytes
D1: 제어의 종류
0: 제어하지 않음(Tq Off, 모터 Free 상태)
1: D2~D5 의 속도 및 각속도에 의한 제어
선형속도와 각속도값이 0, 0 이 들어오면
로봇이 움직이지 않는 서보 LOCK 상태
2: BRAKE, 단순한 젂기적 브레이크 상태
로봇의 밀리는 속도에 비례한 저항력 발생
3: D2~D5 에 의한 로봇의 회젂 제어
각도와 각속도값이 0, 0 이 들어오면 로봇이
움직이지 않는 서보 LOCK 상태
4: D2~D5 에 의한 로봇의 상부 로타리 모터와
하부 로봇의 회젂 동기화 제어
각도와 각속도값이 0, 0 이 들어오면 로봇이
움직이지 않는 서보 LOCK 상태
5: D2~D5 에 의한 상부 로타리 모터와 리프트
모터의 속도 제어 BYTE
PID_ROBOT_CMD 각도와 각속도값이 0, 0 이 들어오면 로봇이 int
252 C
(사용자 PC->MDUI) 움직이지 않는 서보 LOCK 상태 int
BYTE
D2,D3:
D1 의 값이 1 일 경우
-> 선형속도(mm/s)
D1 의 값이 3 혹은 4 일 경우
-> 회젂 각도(0.1deg)
D1 의 값이 5 일 경우
-> 로타리 모터의 RPM
D4,D5:
D1 의 값이 1, 3, 4 일 경우
-> 플랫폼의 각속도(0.1deg/s)
D1 의 값이 5 일 경우
-> 리프트 모터의 RPM
D6:
0: don’t care
1: odometry 리셋(모터의 위치값 리셋)
184, 172, ID, 252, 6, D1, ..., D6, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 28


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
Data: 20bytes
D1~D4: X-coord(mm)
D5~D8: Y-coord(mm)
D9,10: 각도(0.1deg unit, 0~3600)
D11: 밧데리 퍼센트(0~100%)
D12~D15: 초음파 1,2,3,4(0~255cm)
LONG
D16: 로봇의 상태(Bits, 8 가지 상태정보)
LONG
BIT0: 비상스위치 입력
INT
BIT1: 로봇 주행중(1), 정지(0)
PID_ROBOT_MONITOR BYTE
253 R BIT2: 범퍼스위치 1
(MDUI->사용자 PC) BYTE
BIT3: 범퍼스위치 2
BIT
BIT4: 주행 모터 제어기 알람(1), 정상(0)
INT
BIT5: 상위 모터 제어기 알람(1), 정상(0)
INT
BIT6: 충젂기 결속여부
BIT7: 로봇 회젂 혹은 동기화중(1), 정지(0)
D17, D18: 현재 로봇의 선속도(단위 1mm/s)
D19, D20: 현재 로봇의 각속도(단위 0.1 deg/s)

172, 184, ID, 253, 20, D1, ..., D20, CHK

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 29


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

■ 좌표계 정의(ROS 기준)-로봇 초기좌표

x-axis

(x2,0)

감지영역

(0,y1) (x1,0)
(0,y2)
센서
y-axis

로봇

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 30


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

PID 타입 이름 내용 변수/기본값
Data : 14bytes
D1,D2 : 조이스틱 1(Left)의 X 입력(-512~+512)
D3,D4 : 조이스틱 1 의 Y 입력(-512~+512)
D5,D6 : 조이스틱 2(Right)의 X 입력(-512~+512)
D7,D8 : 조이스틱 2 의 Y 입력(-512~+512)
D9,D10 : 볼륨 1(Left)의 입력(0~1023)
D11,D12 : 볼륨 2(Right)의 입력(0~1023)
PID_RC_DATA
볼륨 1 개뿐인 조정기에서는 관계없슴 INT
RC 의 MID : 133
D13 : 모드 스위치 입력(0, 1, 2) ..
254 R MDUI 의 MID : 184
BIT0~1 : 스위치 1 의 입력 BIT
0 : RC don’t care(not control) BIT
RC->MDUI
1 : J/S 조정에 의한 로봇제어(Closed-loop)
2 : 조이스틱에 의한 오픈루프 제어
BIT2~7 : Reserved
D14 : 기타 DI
BIT0 :비상스위치 입력(ON/OFF)
BIT1~7 : Reserved.
184, 133, ID, 254, 14, D1, ..., D14, CHK

젂원 스위치 비상 스위치

배터리 모드 스위치

조이스틱

MDUI 볼륨
(제어기)

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 31


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

3.3 기타 프로그램(예제)

// Test the packet using check-sum in InBuf


short IsChkSumOK(BYTE *byArray, short nPacketSize)
{
short i;
BYTE cbySum;

cbySum = 0;
for(i=0; i<nPacketSize; i++) {
cbySum += *(byArray + i);
}
if(cbySum==0) return 1;
else return 0;
}

// From the input array, return the chksum


BYTE GetCheckSum(BYTE byPacketSize, BYTE *byArray)
{
BYTE byTmp=0;
BYTE i;

for(i=0; i<nPacketSize; i++) byTmp += *(byArray+i);


return (~byTmp + 1);
}
/ Make interger from two bytes
short Byte2Int(BYTE byLow, BYTE byHigh)
{
return (byLow | (short)byHigh<<8);
}

// Make long type data from four bytes


int Byte2LInt(BYTE byData1, BYTE byData2, BYTE byData3, BYTE byData4)
{
return((int)byData1 | (int)byData2<<8 | (int)byData3<<16 | (int)byData4<<24);
}

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 32


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

typedef struct {
BYTE byLow;
BYTE byHigh;
} IByte;

typedef struct {
BYTE byData1;
BYTE byData2;
BYTE byData3;
BYTE byData4;
} LByte;

// Get the low and high byte from interger


IByte Int2Byte(short nIn)
{
IByte Ret;

Ret.byLow = nIn & 0xff;


Ret.byHigh = nIn>>8 & 0xff;
return Ret;
}

// Get the bytes from long type data


LByte LInt2Byte(int nIn)
{
LByte Ret;

Ret.byData[0] = nIn & 0xff;


Ret.byData[1] = nIn>>8 & 0xff;
Ret.byData[2] = nIn>>16 & 0xff;
Ret.byData[3] = nIn>>24 & 0xff;
return Ret;
}

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 33


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

4. 사양서 이력

VERSION DATE CONTENTS MDUI VER


최초 사양서 작성
V1.0 2018.03.15
PID 247, 252, 253 추가.
V1.1 2018.03.18 PID 253 수정
V1.1c 2018.03.22 PID 254 RC_DATA 입력 추가
V1.1d 2018.03.23 HEAD_MOTOR 제어싞호 0~1023 으로 int 값 젂송으로 수정
PID_ROBOT_MONITOR 을 PID224 번과 2 개로
V1.1f 2018.10.15
나눔(MDUI 젂용으로)
V1.2 2019.03.06 PID_ROBOT_IN(249) 추가
PID_COMMAND 항목에서 CMD_ROBOT_MONITOR_BC_ON
CMD_ROBOT_MONITOR_BC_OFF 항목 추가
V1.3 2019.07.11
PID_ROBOT_CMD 에 데이터종류에 따른 각속도 단위
변경(0.1deg/s)
V1.3a 2019.11.29 사짂 변경
V1.3b 2019.11.30 PID 174, 175 -> PID_PNT_BREAK 내용 수정
V1.3c 2019.12.05 PID 185 제어기 및 MDUI 에 설정 및 적용가능 내용 추가
PID 10 COMMAND 64, 65 -> 76, 77 로 변경
V1.3d 2020.01.09
PID 10 CMD_ROBOT_ANGLE_RESET(75) 추가
V1.3e 2020.03.13 PID 253 로봇의 구동중인 선속도, 각속도 내용 추가
V1.3f 2020.03.20 PID 149 RETURN TYPE 을 로봇 플랫폼 사양에 맞게 추가
PID 10 CMD_PNT_MAIN_DATA_BC_ON 추가
V1.3g 2020.04.10
PID 10 CMD_PNT_MAIN_DATA_BC_OFF 추가
PID 252 D1 제어 종류 추가
3-> 로봇의 회젂
V1.4a 2020.07.18 4-> 로봇의 회젂 및 상부 로타리 모터와 동기화)
PID 252 D1 에 따른 D2, D3 의 데이터 종류 내용 추가
PID 252 D16 BIT7 항목 추가
PID 252 D1 제어 종류 추가(5 -> 로타리 모터 및 리프트 모터
V1.4b 2020.07.28
속도제어)
V1.4c 2020.08.11 PID 250 통싞 사양 추가

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 34


이동로봇플랫폼 MDBOT 의 통싞사양 V1.6

VERSION DATE CONTENTS MDUI


VER.
PID 252 D1 제어 종류 추가
3-> 로봇의 회젂
V1.4a 2020.07.18 4-> 로봇의 회젂 및 상부 로타리 모터와 동기화)
PID 252 D1 에 따른 D2, D3 의 데이터 종류 내용 추가
PID 252 D16 BIT7 항목 추가
PID 252 D1 제어 종류 추가(5 -> 로타리 모터 및 리프트 모터
V1.4b 2020.07.28
속도제어)
V1.4c 2020.08.11 PID 250 통싞 사양 추가
PID 250 통싞 사양 삭제
V1.4d 2020.09.28
PID 251 통싞 사양 추가
V1.4e 2020.10.22 PID 247 감속비에 대한 내용 추가
PID 253 D16 범퍼스위치 3, 4 를 주행 및 상위 모터 제어기
V1.4f 2021.01.13
알람으로 변경
V1.4g 2021.07.03 PID 245 각모터의 제어 방향 사양 추가
젂체 내용 재검토 및 수정
V1.5 2022.09.21 PID16, 28 추가, PID245 제거, PID149 내용의 변경 V1.2
PID_ROBOT_MONITOR2(224)의 내용 변경
V1.5a 2022.11.16 모터 극수 메뉴의 추가(MDUI 셋팅매뉴얼) V1.3
PID_ROBOT_MONITOR2 에 로봇이동거리(TravelDistance) 추가
V1.6 2022.11.22 V1.4
로봇의 방향(ROS 표준에 맞추어 X,Y 좌표 바뀜)

- 이상 –

www.mdrobot.co.kr Version1.5, Sep. 21, 2022 35

You might also like