Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
1
工學碩士學位 請求論文
휴머노이드 로봇의 분산제어를 위한
네트워크 구현
Network Implementation for Distributed Control
for a Humanoid Robot
2005 年 2 月
仁荷大學校 大學院
電氣工學科(制御 및 시스템 專攻)
成 裕 慶
2
工學碩士學位 請求論文
휴머노이드 로봇의 분산제어를 위한
네트워크 구현
Network Implementation for Distributed Control
for a Humanoid Robot
2005 年 2 月
指導敎授 金 振 桀
이 論文을 碩士學位 論文으로 提出함
仁荷大學校 大學院
電氣工學科(制御 및 시스템 專攻)
成 裕 慶
3
이 論文을 成裕慶의 碩士學位 論文으로 提出함
2005年 2月
主審
副審
委員
4
목 차
목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅰ
그림목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅲ
표 목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅳ
요 약 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅴ
ABSTRACT helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅶ
1 서론 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
11 연구 배경 및 목적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
12 연구 내용 및 논문 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 3
2 ISHURO 시스템 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
21 기구 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
22 제어기 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 7
23 기구부 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
231 ISHURO 좌표계 설정 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
232 궤적 계획 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 13
233 동역학 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 17
3 ISHURO 네트워크 설계 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 21
31 CAN(Controller Area Network) helliphelliphelliphelliphelliphelliphellip 21
32 CAN messages 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
33 CAN messages 전송 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
331 ISHURO 모의 실험기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
332 주 제어기 CAN messages 전송 helliphelliphelliphelliphelliphellip 32
5
4 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
41 관절 모듈 별 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
42 보행 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
5 결론 및 향후 과제 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 41
참고 문헌 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 42
부록 A ISHURO의 변환 행렬 및 역기구학 해석 helliphelliphelliphelliphellip 45
부록 B 81C91 CAN controller 회로도 helliphelliphelliphelliphelliphelliphelliphelliphellip 55
부록 C ISHURO 지역 제어기 회로도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 56
6
그림 목차
그림 211 휴머노이드 로봇 ISHURO helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
그림 212 휴머노이드 로봇 ISHURO 다리부 helliphelliphelliphelliphelliphellip 6
그림 221 주 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 8
그림 222 지역 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 10
그림 231 ISHURO의 좌표계 시스템 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
그림 232 지지각의 x방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
그림 233 지지각의 y방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 234 지지각의 z방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 235 기준 좌표계에 대한 벡터량 표시 helliphelliphelliphelliphelliphelliphellip 18
그림 331 모의 실험기 주 화면 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
그림 332 ISHURO의 데이터 흐름도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 31
그림 333 ISHURO제어기의 동작 모드 helliphelliphelliphelliphelliphelliphelliphelliphellip 33
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태 helliphellip 35
그림 421 실험 시스템의 구성helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
그림 422 지지각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 39
그림 423 유각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 40
7
표 목차
표 211 하드웨어 스펙 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 5
표 231 D-H 변수값 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 12
표 232 3초 보행 경유점 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
표 321 ISHURO 메시지 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
표 322 지역제어기1 메시지 CAN Data Message 화helliphelliphellip 26
표 323 메시지 전송 시간 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 28
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
2
工學碩士學位 請求論文
휴머노이드 로봇의 분산제어를 위한
네트워크 구현
Network Implementation for Distributed Control
for a Humanoid Robot
2005 年 2 月
指導敎授 金 振 桀
이 論文을 碩士學位 論文으로 提出함
仁荷大學校 大學院
電氣工學科(制御 및 시스템 專攻)
成 裕 慶
3
이 論文을 成裕慶의 碩士學位 論文으로 提出함
2005年 2月
主審
副審
委員
4
목 차
목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅰ
그림목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅲ
표 목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅳ
요 약 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅴ
ABSTRACT helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅶ
1 서론 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
11 연구 배경 및 목적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
12 연구 내용 및 논문 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 3
2 ISHURO 시스템 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
21 기구 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
22 제어기 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 7
23 기구부 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
231 ISHURO 좌표계 설정 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
232 궤적 계획 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 13
233 동역학 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 17
3 ISHURO 네트워크 설계 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 21
31 CAN(Controller Area Network) helliphelliphelliphelliphelliphelliphellip 21
32 CAN messages 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
33 CAN messages 전송 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
331 ISHURO 모의 실험기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
332 주 제어기 CAN messages 전송 helliphelliphelliphelliphelliphellip 32
5
4 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
41 관절 모듈 별 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
42 보행 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
5 결론 및 향후 과제 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 41
참고 문헌 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 42
부록 A ISHURO의 변환 행렬 및 역기구학 해석 helliphelliphelliphelliphellip 45
부록 B 81C91 CAN controller 회로도 helliphelliphelliphelliphelliphelliphelliphelliphellip 55
부록 C ISHURO 지역 제어기 회로도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 56
6
그림 목차
그림 211 휴머노이드 로봇 ISHURO helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
그림 212 휴머노이드 로봇 ISHURO 다리부 helliphelliphelliphelliphelliphellip 6
그림 221 주 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 8
그림 222 지역 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 10
그림 231 ISHURO의 좌표계 시스템 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
그림 232 지지각의 x방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
그림 233 지지각의 y방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 234 지지각의 z방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 235 기준 좌표계에 대한 벡터량 표시 helliphelliphelliphelliphelliphelliphellip 18
그림 331 모의 실험기 주 화면 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
그림 332 ISHURO의 데이터 흐름도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 31
그림 333 ISHURO제어기의 동작 모드 helliphelliphelliphelliphelliphelliphelliphelliphellip 33
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태 helliphellip 35
그림 421 실험 시스템의 구성helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
그림 422 지지각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 39
그림 423 유각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 40
7
표 목차
표 211 하드웨어 스펙 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 5
표 231 D-H 변수값 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 12
표 232 3초 보행 경유점 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
표 321 ISHURO 메시지 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
표 322 지역제어기1 메시지 CAN Data Message 화helliphelliphellip 26
표 323 메시지 전송 시간 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 28
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
3
이 論文을 成裕慶의 碩士學位 論文으로 提出함
2005年 2月
主審
副審
委員
4
목 차
목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅰ
그림목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅲ
표 목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅳ
요 약 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅴ
ABSTRACT helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅶ
1 서론 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
11 연구 배경 및 목적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
12 연구 내용 및 논문 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 3
2 ISHURO 시스템 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
21 기구 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
22 제어기 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 7
23 기구부 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
231 ISHURO 좌표계 설정 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
232 궤적 계획 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 13
233 동역학 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 17
3 ISHURO 네트워크 설계 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 21
31 CAN(Controller Area Network) helliphelliphelliphelliphelliphelliphellip 21
32 CAN messages 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
33 CAN messages 전송 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
331 ISHURO 모의 실험기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
332 주 제어기 CAN messages 전송 helliphelliphelliphelliphelliphellip 32
5
4 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
41 관절 모듈 별 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
42 보행 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
5 결론 및 향후 과제 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 41
참고 문헌 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 42
부록 A ISHURO의 변환 행렬 및 역기구학 해석 helliphelliphelliphelliphellip 45
부록 B 81C91 CAN controller 회로도 helliphelliphelliphelliphelliphelliphelliphelliphellip 55
부록 C ISHURO 지역 제어기 회로도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 56
6
그림 목차
그림 211 휴머노이드 로봇 ISHURO helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
그림 212 휴머노이드 로봇 ISHURO 다리부 helliphelliphelliphelliphelliphellip 6
그림 221 주 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 8
그림 222 지역 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 10
그림 231 ISHURO의 좌표계 시스템 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
그림 232 지지각의 x방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
그림 233 지지각의 y방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 234 지지각의 z방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 235 기준 좌표계에 대한 벡터량 표시 helliphelliphelliphelliphelliphelliphellip 18
그림 331 모의 실험기 주 화면 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
그림 332 ISHURO의 데이터 흐름도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 31
그림 333 ISHURO제어기의 동작 모드 helliphelliphelliphelliphelliphelliphelliphelliphellip 33
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태 helliphellip 35
그림 421 실험 시스템의 구성helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
그림 422 지지각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 39
그림 423 유각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 40
7
표 목차
표 211 하드웨어 스펙 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 5
표 231 D-H 변수값 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 12
표 232 3초 보행 경유점 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
표 321 ISHURO 메시지 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
표 322 지역제어기1 메시지 CAN Data Message 화helliphelliphellip 26
표 323 메시지 전송 시간 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 28
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
4
목 차
목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅰ
그림목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅲ
표 목차 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅳ
요 약 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅴ
ABSTRACT helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip ⅶ
1 서론 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
11 연구 배경 및 목적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 1
12 연구 내용 및 논문 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 3
2 ISHURO 시스템 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
21 기구 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
22 제어기 구성 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 7
23 기구부 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
231 ISHURO 좌표계 설정 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
232 궤적 계획 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 13
233 동역학 해석 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 17
3 ISHURO 네트워크 설계 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 21
31 CAN(Controller Area Network) helliphelliphelliphelliphelliphelliphellip 21
32 CAN messages 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
33 CAN messages 전송 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
331 ISHURO 모의 실험기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
332 주 제어기 CAN messages 전송 helliphelliphelliphelliphelliphellip 32
5
4 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
41 관절 모듈 별 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
42 보행 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
5 결론 및 향후 과제 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 41
참고 문헌 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 42
부록 A ISHURO의 변환 행렬 및 역기구학 해석 helliphelliphelliphelliphellip 45
부록 B 81C91 CAN controller 회로도 helliphelliphelliphelliphelliphelliphelliphelliphellip 55
부록 C ISHURO 지역 제어기 회로도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 56
6
그림 목차
그림 211 휴머노이드 로봇 ISHURO helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
그림 212 휴머노이드 로봇 ISHURO 다리부 helliphelliphelliphelliphelliphellip 6
그림 221 주 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 8
그림 222 지역 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 10
그림 231 ISHURO의 좌표계 시스템 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
그림 232 지지각의 x방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
그림 233 지지각의 y방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 234 지지각의 z방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 235 기준 좌표계에 대한 벡터량 표시 helliphelliphelliphelliphelliphelliphellip 18
그림 331 모의 실험기 주 화면 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
그림 332 ISHURO의 데이터 흐름도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 31
그림 333 ISHURO제어기의 동작 모드 helliphelliphelliphelliphelliphelliphelliphelliphellip 33
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태 helliphellip 35
그림 421 실험 시스템의 구성helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
그림 422 지지각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 39
그림 423 유각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 40
7
표 목차
표 211 하드웨어 스펙 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 5
표 231 D-H 변수값 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 12
표 232 3초 보행 경유점 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
표 321 ISHURO 메시지 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
표 322 지역제어기1 메시지 CAN Data Message 화helliphelliphellip 26
표 323 메시지 전송 시간 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 28
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
5
4 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
41 관절 모듈 별 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 35
42 보행 실험 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
5 결론 및 향후 과제 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 41
참고 문헌 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 42
부록 A ISHURO의 변환 행렬 및 역기구학 해석 helliphelliphelliphelliphellip 45
부록 B 81C91 CAN controller 회로도 helliphelliphelliphelliphelliphelliphelliphelliphellip 55
부록 C ISHURO 지역 제어기 회로도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 56
6
그림 목차
그림 211 휴머노이드 로봇 ISHURO helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
그림 212 휴머노이드 로봇 ISHURO 다리부 helliphelliphelliphelliphelliphellip 6
그림 221 주 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 8
그림 222 지역 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 10
그림 231 ISHURO의 좌표계 시스템 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
그림 232 지지각의 x방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
그림 233 지지각의 y방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 234 지지각의 z방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 235 기준 좌표계에 대한 벡터량 표시 helliphelliphelliphelliphelliphelliphellip 18
그림 331 모의 실험기 주 화면 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
그림 332 ISHURO의 데이터 흐름도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 31
그림 333 ISHURO제어기의 동작 모드 helliphelliphelliphelliphelliphelliphelliphelliphellip 33
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태 helliphellip 35
그림 421 실험 시스템의 구성helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
그림 422 지지각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 39
그림 423 유각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 40
7
표 목차
표 211 하드웨어 스펙 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 5
표 231 D-H 변수값 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 12
표 232 3초 보행 경유점 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
표 321 ISHURO 메시지 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
표 322 지역제어기1 메시지 CAN Data Message 화helliphelliphellip 26
표 323 메시지 전송 시간 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 28
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
6
그림 목차
그림 211 휴머노이드 로봇 ISHURO helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 4
그림 212 휴머노이드 로봇 ISHURO 다리부 helliphelliphelliphelliphelliphellip 6
그림 221 주 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 8
그림 222 지역 제어기 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 10
그림 231 ISHURO의 좌표계 시스템 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 11
그림 232 지지각의 x방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
그림 233 지지각의 y방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 234 지지각의 z방향 궤적 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 16
그림 235 기준 좌표계에 대한 벡터량 표시 helliphelliphelliphelliphelliphelliphellip 18
그림 331 모의 실험기 주 화면 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 29
그림 332 ISHURO의 데이터 흐름도 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 31
그림 333 ISHURO제어기의 동작 모드 helliphelliphelliphelliphelliphelliphelliphelliphellip 33
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태 helliphellip 35
그림 421 실험 시스템의 구성helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 37
그림 422 지지각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphellip 39
그림 423 유각의 보행 실험 결과 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 40
7
표 목차
표 211 하드웨어 스펙 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 5
표 231 D-H 변수값 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 12
표 232 3초 보행 경유점 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
표 321 ISHURO 메시지 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
표 322 지역제어기1 메시지 CAN Data Message 화helliphelliphellip 26
표 323 메시지 전송 시간 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 28
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
7
표 목차
표 211 하드웨어 스펙 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 5
표 231 D-H 변수값 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 12
표 232 3초 보행 경유점 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 15
표 321 ISHURO 메시지 정의 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 24
표 322 지역제어기1 메시지 CAN Data Message 화helliphelliphellip 26
표 323 메시지 전송 시간 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 28
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
8
요 약
본 논문은 자체 제작한 휴머노이드 로봇 ISHURO(Inha
Semyung HUmanoid RObot) 시스템의 기구학 해석과
CAN(Controller Area Network) 기반의 분산 제어시스템에
관한 연구를 다룬다
기존에 연구에서 로봇 관절들의 지역 제어기와 중앙 제어기는
일대일 통신 구조를 가지고 있기 때문에 휴머노이드 로봇과
같이 많은 자유도를 필요로 하는 시스템에서는 통신라인의
부피가 커져 로봇의 이동성에 제약을 주고 외부 환경을
측정하기 위한 센서 추가를 위한 지역제어기에 대한 중앙
제어기의 통신 포트 확보가 어렵다
본 연구에서는 성능이 향상되고 소형화된 마이크로
컨트롤러와 프로세서 간 안정적인 통신 기술을 이용하여 확장
가능한 다축 제어기를 개발하고 개발된 제어기에 분산
제어시스템을 적용하여 보다 효율적인 로봇 제어시스템을
구현하였다
구현된 제어시스템은 상위에 주 제어기를 두고 하위 각 관절
구동부에는 지역 제어기를 가지는 형태로 구성되고
제어기간에는 CAN을 이용하여 통신을 한다 중앙 제어기에서
지역 제어기로 계획된 궤적 데이터와 제어 명령들을 CAN버스를
통해 전달하고 지역 제어기는 각 관절의 구동을 담당하게 되고
그 결과 데이터를 주 제어기로 전송하게 된다
실험에서는 구현된 제어시스템을 이용하여 휴머노이드 로봇
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
9
ISHURO의 보행 초기화를 위한 제어 명령 전송 및 보행을 위한
궤적 데이터 전송을 수행하였다 최악의 상황을 고려한 데이터
전송 속도와 실험 결과로 얻은 전송 속도와 비교하여 데이터
전송 가능성을 검증하였다
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
10
ABSTRACT
This thesis presents the distributed control systems based
on CAN(Controller Area Network) for a humanoid robot
ISHURO(Inha-Semyung Humanoid Robot) which has been
developing in the intelligent robot control Lab since 1993
In previous study multi-motion controller and local
controllers on the actuators are connected by one-to-one
wire A humanoid robot however is a highly complicated
system with many degrees of freedom Thus their
movement is much restricted by the mass of communication
lines and it might have some trouble to add another local
controller for sensing the outer environment
In this thesis extensible multi-motion controller is
developed using small micro-controller and the
corresponding communication method is suggested
Furthermore a robot control system is implemented
applying distributed control system
Implemented control system includes a main controller as
multi-motion controller and local controllers in every
actuator of the robot All controllers are connected by CAN
bus Main controller transmits planned angle data to local
controllers and receives real encoder data and sensor data
from local controllers Each actuator motion is under the
control of each local controller unit
It is shown in the experiment that the command data and
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
11
the angle data of a humanoid robot ISHURO are transmitted
by implemented control system Reasonability of data
communication is confirmed by comparing the data
transmission time for the case of the worst environment and
for real experiment
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
12
1 서 론
11 연구 배경 및 목적
최근 지능형 로봇에 관한 관심이 높다 그 중에서도 인간과의
대화 접촉 또는 조작 등에 반응하고 인간의 생활환경에 적응할
수 있는 휴머노이드 형태의 로봇에 관한 연구가 활발히 진행
중이다 휴머노이드 로봇은 인간과 유사한 구조를 가지므로
인간과의 협동 작업 및 인간이 수행하기 어렵고 위험한 작업을
대신할 수 있다[1]-[4]
이러한 휴머노이드 로봇이 인간의 생활 공간에서 자율적인
보행을 수행하기 위해서는 자체적으로 보행에 필요한 데이터를
생성하거나 외부로부터 데이터를 받아들일 수 있는 통신 시스템
구축이 필요하다[5][6] 로봇 자체에서 보행에 필요한 데이터를
생성하는 경우 각각의 하위 구동부들에 대한 데이터를 생성할
수 있는 연산 시스템이 필요한다[7][8] 그리고 휴머노이드
로봇은 구조적으로 많은 자유도를 필요로 하고 인간과 같은
유연한 보행을 하기 위해서는 각 자유도마다 많은 양의
데이터를 필요로 한다 로봇의 동작에 필요한 데이터들을 언급한
바와 같이 상위 연산모듈에서 생성될 수도 있고 외부의
작업자에 의해 전송될 수도 있다 이렇게 얻어진 데이터는
액추에이터를 가진 각각의 하위 모듈로 빠르고 정확하게
전송되어야 하고 이러한 작업은 휴머노이드 로봇이 인간과 같은
작업성을 가지기 위한 필수 요건이다 이러한 요건을 만족하려면
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
13
각각의 데이터에 대한 응답시간과 전송 시 에러 발생에 관한
연구가 이루어져야 한다 이러한 이유로 네트워크 프로토콜 및
전송 시간에 관한 연구가 진행되고 있다[9][10] 본 논문에서는
휴머노이드 로봇의 제어 신호와 보행 데이터 전송에 필요한
네트워크 구조를 디자인하고 보행을 위한 분산 제어 알고리즘을
적용하는 것을 목적으로 한다 실험에 사용된 로봇은 외부 모의
실험기와의 통신을 위해 80211b를 사용하고 주 제어기와 지역
제어기들 간의 통신을 위해 CAN(Controller Area Network)
버스를 이용한다 모의 실험기에서 계산된 로봇 보행 데이터의
전송 안정성을 보장하기 위해서는 CAN 통신 스펙에 따른
데이터의 전송 시간 계산이 필요하다[11][12] 계산된 전송
시간을 기초로 하여 휴머노이드 로봇의 모든 데이터와 제어
신호에 대한 응답 시간을 결정할 수 있고 다양한 보행을 위한
데이터 전송을 계획할 수 있다
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
14
12 연구 내용 및 논문 구성
휴머노이드 로봇 ISHURO는 제어 및 기구해석을 위하여 자체
설계하여 제작되었다 향후 시스템 확장성과 유지 보수의
편리성을 위하여 각 관절 구동부는 모듈화 및 분산화 개념을
이용하여 설계하였다
또한 본 논문에서는 설계된 휴머노이드 로봇에 대한 기구학
해석 및 동역학 해석을 다루었으며 휴머노이드 로봇이 안정된
보행을 할 수 있도록 모의 실험기에서 연산된 궤적을 각 관절
구동부의 지역 제어기로 신뢰성 있게 전송하는 CAN 기반의
통신알고리즘을 제시하였다
기구학 해석 시에는 시스템을 간략화 하기 위하여 로봇을 세
부분으로 나누어 해석하였으며 자체 제작한 모의 실험기를 통해
동역학 해석을 수행하였고 그 결과를 이용하여 디자인된
휴머노이드 로봇의 관절부 모터 선택 기반자료로 활용하였다
본 논문의 구성은 2장에서 자체 설계 제작한 휴머노이드 로봇
ISHURO에 대한 기구학적 해석 동역학 해석 및 제어기 구성에
관해 알아보고 3장에서는 ISHURO의 분산 제어를 위한 CAN
프로토콜 및 ISHURO의 데이터를 정의하고 데이터 전송
알고리즘을 제시하였다 4장에서는 각 관절 별 구동 실험과
ISHURO의 보행 실험을 수행하여 결과를 확인하고 5장에서는
제안된 데이터 전송 알고리즘의 성능을 평가하고 결론을 맺는다
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
15
2 ISHURO 시스템 구성
21 기구 구성
본 논문의 연구 대상인 휴머노이드 로봇 ISHURO는 크게
다리부와 상체부로 구성되어 있다 다리부는 유연한 보행을 위해
각 다리는 발목에 요(Yaw) 피치(Pitch) 2개의 관절과 무릎에
피치(Pitch) 힙에 롤(Roll) 피치(Pitch) 요(Yaw)로 구성되어
12-자유도(Degree of freedom)를 가지고 있다 상체부의
몸체에 3-자유도 팔에 6-자유도를 가지고 있어 시스템 전체는
총21-자유도를 가지고 있다 그림 211은 ISHURO를
나타내었다
그림 211 휴머노이드 로봇 ISHURO Fig 211 ISHURO Humanoid Robot
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
16
ISHURO의 전체 높이는 825mm 최대 폭 330mm 최대
너비 135mm이며 전체 무게는 약 684kg으로 설계되었다
표211는 ISHURO의 외형치수를 나타낸다 그림에서와 같이
높이는 825cm 최대 폭 33cm 발바닥 길이 135cm 그리고
무게는 약 684kg으로 설계되었다
표 211 하드웨어 스펙 Table 211 Hardware specification
Height 825 mm
Width 330 mm
Weight 684kg
Foot 135 mm
DOFs 21
Actuator A-max26 Re-max24
Power 18V 11W 18V 11W
Gear Ratio 2311 1901
Angular Velocity 230 degs 240 degs
ISHURO의 구동부에는 A-max26 Re-max24 2종류의
모터가 사용되었고 각각 2311 1901의 감속기가 장착되었다
그림 212는 ISHURO의 다리부를 나타낸다 각 모듈에는
모터와 지역 제어기 그리고 출력축에 추가 엔코더를 장착하여
감속기 및 베벨 구조에서 발생하는 백래쉬를 제어하는 데
이용하였다
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
17
그림 212 휴머노이드 로봇 ISHURO 다리부 Fig 212 ISHURO Legs Humanoid Robot
ISHURO의 다리부는 총 12-자유도로 구성된다 발목
Yaw관절과 힙 Yaw관절에 A-max26 모터를 사용하였고
나머지 관절에는 Re-max24모터가 사용되었다
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
18
22 제어기 구성
휴머노이드 형태의 보행 로봇은 다축 구동 시스템이며
구동기로 사용되는 모터를 제어하려면 서보 제어 기술과
계측기술이 필수적이다 관절은 서로 결합된 구조를 가지고 큰
토크를 얻기 위해 감속기가 사용되었고 이로 인해 발생하는
백래쉬 현상을 극복하기 위한 고급제어 기술이 필요하다 그리고
구동축이 다수인 관계로 한 개의 고성능 CPU로 모든 구동축을
제어하는 방법보다는 여러 개의 CPU를 이용한 분산 제어
방법이 제어기의 구조가 간단해지고 가격 확장성에서 장점을
가진다[10]
제어기를 구성하는 방법은 사용 도구가 잘 준비되어 있는
범용 컴퓨터를 사용하면 난이도와 디버깅 면에서의
로봇해석에는 상당한 이점이 있으나 휴머노이드 로봇의
이동성을 고려하면 범용 컴퓨터의 부피 무게 전력 사용량 등의
문제가 있다 따라서 제어기를 독립적으로 만들어야 하며
제어를 구현하는 각각의 모듈을 서로 격리시켜 구성하여 이에
따른 분산된 모듈간의 통신을 만들어 주어야 한다
통신방법에 있어서 병렬 접속을 하면 속도 면에는 이점이
있으나 접속회로가 복잡해지는 단점이 있어 접속회로가 간단한
직렬 접속 방법을 이용한다 여러 가지 직렬 통신 방식 중에서도
CAN 프로토콜은 자동차 로봇 산업 자동화 등과 같은 다양한
분야에서 많이 사용되고 있다
CAN 프로토콜은 시스템의 실시간 제어가 가능하고 구현이
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
19
간단하고 10m이내에서 최대 1Mbps의 전송속도를 가지고 한
프레임에 8바이트의 데이터를 전송할 수 있어 짧은 데이터
전송에 장점을 가진다 그리고 Bit error Stuff error CRC
error Form error Acknowledgment error의 에러 검출을 할
수 있다
ISHURO 의 제어기 간의 네트워크는 CAN 프로토콜을
이용하여 구현되었다
그림 221은 ISHURO의 주 제어기를 나타낸다
그림 221 주 제어기
Fig 221 Main controller
주 제어기는 고성능 프로서인 Intel PXA255
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
20
Processor(400MHz)를 탑재하고 OS는 임베디드 리눅스를
사용하였다 64Mbyte의 SDRAM과 32Mbyte의 Flash가
장착되어 있고 PCMCIA 타입의 무선랜을 내장하고 있어 외부
모의 실험기와 80211b 무선통신이 가능하다
주 제어기와 지역 제어기간의 CAN통신을 위하여
Infineon사의 8bits CAN 컨트롤러 81C91 탑재하였다 주
제어기와 CAN 컨트롤러간의 연결은 GPIO를 이용하였고 CAN
컨트롤러는 Full CAN 방식이고 CAN specification V20 특성을
가진다 따라서 CAN 메시지의 인식자(identifier)는 11비트이다
16개의 메시지 박스를 가진다 CAN 컨트롤러 회로도는 부록B에
나타내었다
CAN 컨트롤러를 임베디드 리눅스 환경에서 사용하기 위해서
리눅스 디바이스 드라이버와 응용 프로그램을 작성하였다
ISHURO의 주 제어기는 작성된 응용 프로그램으로 로봇의 지역
제어기들과 CAN 통신을 수행한다
그림 222는 ISHUURO의 지역 제어기를 나타낸다 지역
제어기는 TMS320F2812 DSP를 탑재하고 L298 모터 드라이버
및 eCAN 모듈이 장착되어 있다 eCAN모듈은 CPK(CAN
Protocol Kernel)와 32개의 메시지 박스를 가지고 있다
11비트와 29비트 메시지 인식자 사용이 가능하나 주
제어기와의 통신을 고려하여 11비트를 사용한다
ISHURO의 지역 제어기는 하나의 제어기가 하나의 모터를
제어하는 독립된 구조를 가지고 모터에 장착된 기어헤드에서
발생하는 백래쉬를 제어하기 위해 출력축의 위치를 인식하는
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
21
엔코더를 추가하였다 따라서 지역 제어기는 2개의 엔코더를
인식하는 구조를 가진다
그림 222 지역 제어기
Fig 222 Local controller
지역 제어기의 회로도는 부록C에 첨부되었다
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
22
23 기구부 해석
231 ISHURO 좌표계 설정
휴머노이드 로봇 ISHURO는 기구학 해석과 각 링크들의
동특성의 용이한 해석을 위해 전체 좌표계 시스템을
지지각(Support Leg) 유각(Swing Leg) 상체부(Upper
Body)의 세 부분으로 나누고 각각에 대해 기준 좌표계를
두었다 지지각의 말단 좌표계와 유각 및 상체부의 기준좌표계를
한 점으로 일치시켜 전체 시스템을 가지 구조를 가지는 개형상
구조로 모델링 하였다
그림 231 ISHURO 의 좌표계 시스템
Figure 231 Coordinate system of ISHURO
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
23
전체 기준 좌표계는 균형관절 기준 좌표계를 지면에 투영시킨
양 발바닥 사이로 설정하여 로봇의 모든 움직임을 표시하는데
있어 기준이 되게 하였다 이 좌표계를 기준으로 몸체의 궤적
추진 동특성 상체부의 위치 표현 및 균형점을 표시한다
표 231 D-H 변수값 Table 231 D-H parameters
of link ai αi di θi
Virtual link 0 90deg l1 θ1=90deg
Right-Ankle-Yaw -l2 90deg 0 θ2=-90deg Right-Ankle-Pitch -l3 0deg 0 θ3=-30deg Right-Knee-Pitch -l4 0deg 0 θ4=60deg Right-Hip-Pitch -l5 -90deg 0 θ5=-30deg Right-Hip-Yaw 0 -90deg 0 θ6=90deg Right-Hip-Roll l6 0deg 0 θ7=0deg Virtual link 0 0deg 0 θ8=-90deg Virtual link l6 0deg 0 θ1=90deg
Left-Hip-Roll 0 90deg 0 θ2=0deg Left-Hip-Yaw l5 90deg 0 θ3=-90deg Left-Hip-Pitch l4 0deg 0 θ4=30deg Left-Knee-Pitch l3 0deg 0 θ5=-60deg Left-Ankle-Pitch -l2 90deg 0 θ6=210deg Left-Ankle-Yaw -l1 90deg 0 θ7=0deg
Virtual link 0 90deg 0 θ8=90deg
지지각은 발바닥 부분을 기준 좌표계로 설정하여 이
시스템의 전체 좌표계와 같은 평면에 있게 하고 유각의 기준
좌표계와 상체의 기준 좌표계는 지지각의 말단 좌표계와
일치시켜 기구학적 연쇄가 일어나게 하였다
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
24
그림 231은 휴머노이드 로봇 ISHURO의 전체 좌표계를
나타낸 것이다 좌표계는 강체의 링크 사이의 관계를 표시하는
D-H(Denavit-Hartenberg) 표기법을 사용하여 세 부분의
단순 기구 연쇄로 표시하였다 표 231는 ISHURO 시스템의
D-H 변수값을 나타내었다
232 궤적 계획
궤적 계획 시는 변환 행렬을 이용하여 각 부분의 궤적계획을
양 발바닥 중심에 있는 기준 좌표계에 대하여 표현함으로써
지형 변화에 유연한 궤적 계획을 수립할 수 있도록 하였다 경로
구간 표현은 안전한 보행 수행을 위하여 보행의 시작과 끝에서
속도 및 가속도가 제로이면서 기계적 충격(jerk)을 고려하여
가속도를 1차 이상의 함수로 표현하고 각각의 경유점에서 2차
도함수 즉 가속도가 연속이 되도록 5차 스플라인 곡선을
이용하였다
주어진 경유점에 의한 이동 경로를 시간에 대한 함수로
표현하면 다음과 같다
5
54
43
32
210)( tatatatataat +++++=λ (231)
여기서 구속조건은 다음과 같이 주어진다
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
25
35
2432
20
45
34
2321
10
55
44
33
2210
00
201262
2
ffff
fffff
ffffff
tatataa
a
tatatataa
a
tatatatataa
a
+++=
=
++++=
=
+++++=
=
λ
λ
λ
λ
λ
λ
ampamp
ampamp
amp
amp (232)
이러한 구속조건들을 여섯 개의 미지수를 갖는 선형 6차
방정식을 구성하고 그 해는 다음의 식(233)으로 표현된다
5
2000
5
4
2000
4
3
2000
3
02
01
00
2)()66(1212
2)23()1914(3030
2)3()128(2020
2
f
fffff
f
fffff
f
fffff
ttt
a
ttt
a
ttt
a
a
a
a
λλλλλλ
λλλλλλ
λλλλλλ
λ
λ
λ
ampampampampamp
ampampampampamp
ampampampampamp
ampamp
amp
minusminus+minusminus=
minus+++minus=
minusminus+minusminus=
=
=
=
(233)
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
26
ISHURO의 보행 궤적을 생성하긴 위한 한 보에 대한 경유점
정보는 표 231과 같다
표 232 3 초 보행 경유점
Table 232 Via points a step
Support Leg Swing Leg Time(s)
X(m) Y(m) Z(m) X(m) Y(m) Z(m)
0 00 00 -038 00 013 -038
1 -003 00 -038 003 013 -036
2 -006 00 -038 006 013 -038
3 -012 -013 -038 00 00 -038
0 2 4 6 8 10 12-014
-012
-010
-008
-006
-004
-002
000
002
004
006
008
X Tr
ajec
tory
(m)
Time(s)
Support Leg X Trajectory
그림 232 지지각의 x 방향 궤적 Fig 232 x-direction trajectory of support leg
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
27
0 2 4 6 8 10 12-016
-014
-012
-010
-008
-006
-004
-002
000
002
Y Tr
ajec
tory
(m)
Time(s)
Support Leg Y Trajectory
그림 233 지지각의 y 방향 궤적
Fig 233 y-direction trajectory of support leg
0 2 4 6 8 10 12
-0380
-0375
-0370
-0365
-0360
Z Tr
ajec
tory
Time(s)
Support Leg Z Trajectory
그림 234 지지각의 z 방향 궤적 Fig 234 z-direction trajectory of support leg
그림 232 ~ 234는 12초 보행 경유 점을 이용하여 계획된
ISHURO의 지지각의 궤적을 기준 좌표계의 진행 방향(x 방향)
좌우 방향(y방향)과 상하 방향(z 방향)으로 나타낸 그림이다
보행의 시작점과 끝점의 속도 가속도의 제한조건은 제로 그
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
28
외의 경유 점에서의 가속도 제로 속도 제한조건은 다음 경유 점
과의 기울기로 선택한 후 궤적을 계획한 것이다 또한 보간
곡선의 특성상 경유 점들이 이루는 특성 다각형의
오목(concave)한 정도와 보간 공간(interpolation space)에
따른 지면과의 충돌 위험을 배제하기 위해 경유 점들에 의한
특성 다각형은 항상 볼록(convex)한 형상으로 가정하였다
233 동역학 해석
ISHURO의 걸음새 제어를 위한 동특성 해석을 하기 위해
다음과 같이 가정한다
(1) 각 링크의 하중은 링크의 무게중심에 집중되어 해석상
13개의 질량모델로 가정한다
(2) 지지평면은 외력이나 외부 모멘트에 의해 변형되지
않는다 따라서 지지면은 지면과 항상 평행하다
(3) 지지면과 발바닥 사이의 미끄러짐은 일어나지 않는다
그러므로 다리 및 몸체의 움직임으로 인해 발생한
스핀(spin)모멘트 및 이에 따른 몸체의 회전을 고려하지
않는다
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
29
그림 235 기준 좌표계에 대한 벡터량 표시 Fig 235 Vector Representation
각 링크의 움직임은 그림241와 같이 임의의 점 P를
기준으로 한 질점 mi 의 운동을 나타내는 DrsquoAlembert의
원리에 의해 식(241)와 같이 표현된다
0)()(0
=++timesminussum=
Tii
n
ii MGrPrm
rrrampamp
rr (241)
여기서 im 는 i 번째 질점 irr
는 i 번째 질점의 거리벡터 Pr
는 x-y 좌표계에서 점 P까지의 거리벡터 TMr
는 점P에
작용하는 전체모멘트 Gr
는 중력가속도를 의미한다
식(241)를 통하여 각 링크의 위치 속도 가속도 등의
벡터량 표현이 가능하고 ISHURO의 질량체계에 대해 적용하면
식(242) 및 식(243)와 같이 정리할 수 있다
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
30
sumsum==
=+minusminus+13
0
13
00)())((
iixii
uZMPizii zGxmxxGzm ampampampamp (242)
sumsum==
=+minusminus+13
0
13
00)())((
iiyii
iZMPizii zGymyyGzm ampampampamp (243)
iii zyx 는 지지각 기준 좌표계에서의 i번째 링크의 질량중심
에 대한 거리벡터 iii zyx ampampampampampamp 항들은 기준 좌표계에서의 i번째 질점
의 zyx 방향 가속도를 의미하고 로봇의 운동 해석 및 방정식의
해결을 위해 꼭 계산 되어야 할 항들이다 ZMPZMP yx 는 기준 좌
표계에서의 균형점에 대한 거리벡터를 의미한다
식(242)와 식(243)을 균형점인( ZMPZMP yx )에 대해 다시 정
리하면 식(244)와 (245)로 표현된다
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iixiiizii
ZMP
Gzm
zGxmxGzmx
ampamp
ampampampamp
(244)
sum
sum sum
=
= =
+
+minus+= 13
0
13
0
13
0
)(
)()(
izii
i iiyiiizii
ZMP
Gzm
zGymyGzmy
ampamp
ampampampamp
(245)
이 방정식은 지지각과 유각의 움직임 그리고 이에 대한
보상모멘트를 발생시키는 발목 요(Yaw)관절의 움직임에 의해
결정되는 시스템의 실제의 균형점을 표현하는 균형점 검증
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
31
방정식이다 이 식들을 통하여 보행중인 로봇의 안정도를 판별할
수 있다
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
32
3 ISHURO 네트워크 설계
31 CAN (Controller Area Network)
CAN 프로토콜은 CSMANBA(Carrier Sense Multiple
Access with Non-destructive Bit-wise Arbitration)라는
MAC(Medium Access Control)을 사용한다 기본 CAN 에서는
메시지 별 11bits의 인식자(ID)를 사용하여 메시지 우선순위를
결정한다 이 프로토콜에서는 버스가 유휴상태 일 때 어떤
노드도 버스에 접근할 수 있다 이더넷(Ethernet)과 유사하게
버스가 유휴상태 일 때 각각의 노드들은 데이터를 전송할 수
있고 둘 이상의 노드에서 데이터를 동시에 전송할 경우
메시지의 인식자를 이용한 중재로 인해 데이터 사이의 충돌은
존재하지 않는다 CAN 버스에서 우성 상태는 ldquo0rdquo이므로 어떤
노드가 ldquo1rdquo을 전송했지만 버스 상태가 ldquo0rdquo이면 이 노드는
즉시 데이터 전송을 멈춘다 즉 자신보다 우선순위가 높은
노드에서 데이터를 전송하고 있다는 것을 알고 다음
유휴상태까지 데이터 전송을 대기하게 된다 반면에 우선순위가
높은 노드는 계속해서 데이터를 전송하게 된다 이러한
동작방식은 데이터 및 시간의 손실을 막는다 인식자의 값은
우선순위 값으로 정의된다 즉 낮은 인식자는 높은 우선순위를
가진다 따라서 두 개의 노드들은 같은 인식자를 가질 수 없고
모든 노드들은 수신된 메시지들의 일치성을 확인하고 ACK
슬롯을 이용하여 정상적인 메시지 수신을 알리게 된다 CAN 은
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
33
자동적인 에러 검출 및 재전송 기능을 가진다
CAN 을 이용한 데이터 전송 시 데이터의 전송 시간을
계산하기 위한 방법이 필요하다 최악의 상황에서의 메시지i의
전송 시간 iR 를 구하면 다음과 같다[10][12]
iiii CqJR ++= (311)
iJ 는 지터로 약1ms로 설정하였다 iC 는 메시지i 가 물리적인
버스를 통해서 전송되는데 걸리는 시간이고 CAN 메시지는
47bits의 오버헤드 및 5bits의 비트 스터핑(bit-stuffing)이
필요하다 iC 는 다음과 같이 표현된다
bitii
i ss
C τ
++
+= 847
5834
(312)
is 는 메시지 i의 크기(byte)를 나타낸다 bitτ 은 1bit 데이터가
전송되는 걸리는 시간을 의미한다(1Mbps를 사용하는
버스에서는 1) iq 은 메시지가 전송 큐에서 대기하는 시간과
에러 발생 상태에서 메시지 전송 시간의 합을 나타낸다
수식으로 표현하면 식(313)과 같다
sumisinforall
+ ++
+++=
)(
1 )(ihpm
iiimm
bitmni
ini CqEC
TJq
Bqτ
(313)
)(tEi 는 에러 복원 오버헤드 함수로서 시간 t동안 발생하는
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
34
에러의 오버헤드의 값을 제공한다
+
minus
+=
cupisinforall)(max291)(
)(k
iihpkerrorerrori C
TtntE (314)
errorn 는 시간 errorT 동안 발생하는 에러 횟수이다 매 에러 발생시
재전송을 위해 29bits 가 증가한다 다음 절에서 위에서 언급된
수식들을 이용하여 휴머노이드 로봇에 적용된 CAN 메시지들에
대한 응답시간을 계산할 것이다
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
35
32 CAN messages 정의
휴머노이드 로봇 ISHURO에 CAN 프로토콜을 적용하기
위해서는 ISHURO동작에 필요한 데이터를 정의하고 정의된
데이터를 CAN 메시지화하는 작업이 필요하다 ISHURO에
필요한 데이터 정의하기 위해서 로봇의 상태를 보행 전 초기화
상태와 보행 상태로 구분한다
표 321 ISHURO 메시지 정의
Table 321 Messages definition of ISHURO
초기화 상태
Message Name Message
Module_State 모듈 상태 점검 메시지
Output_I_State 출력축 엔코더 I-상 검출 메시지
Walking_Position 보행 초기 위치 이동 메시지
Jog_Move 1 펄스 이동 메시지
보행 상태
Message Name Message
Global_Sync 모터 구동 메시지
Angle_Data 보행 궤적 데이터 메시지
Encoder_Data 엔코더 데이터 메시지
Sensor_Data (FSR Gyro) 센서 데이터 메시지
보행 전 초기화 상태의 메시지와 보행 상태의 메시지는
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
36
표321과 같다 보행 전 초기화 상태는 ISHURO가 보행을 하기
위한 초기 위치를 설정해 주는 과정이다 먼저 사용자 명령에
의해 모든 지역 제어기의 상태를 확인하게 된다 주 제어기에서
지역 제어기로 Module_State 메시지를 전송하고 이 메시지를
수신한 모든 지역 제어기들은 주 제어기로 확인 신호를 보내어
자신의 상태를 알리게 된다 다음 각 구동부의 출력 축 엔코더의
I-상을 이용하여 로봇이 똑바로 선 상태를 만들어 준다 이 때
사용하는 메시지가 Output_I_State 이다 사용자는 출력축
엔코더 축을 기준으로 시계방향 혹은 반시계방향으로 구동부를
움직일 수 있다 I-상 검출은 I-상 검출을 4번 수행하여
인터럽트 시에 얻은 입력축 엔코더 위치를 평균하여 이동하게
된다 ISHURO가 똑바로 선 상태에서 초기 보행을 위한 무릎을
구부린 초기 자세를 취하기 위해 주 제어기에서 각 지역
제어기로 초기 위치 데이터를 Walking_Position 메시지를
이용하여 전송하여 보행 초기 상태를 유지하게 된다 로봇의
급격한 움직임을 막기 위해 보행 초기 위치이동은 정속도로
움직인다 초기화 마지막 단계로 출력 엔코더 한 펄스
움직임으로 초기 위치를 보정하게 된다
보행 상태에서는 모든 지역 제어기들의 동작을 제어하기
위한 Global_Sync 메시지와 계획된 보행 궤적 데이터와 실험
결과 엔코더 데이터를 위한 Angle_Data Encoder_Data
메시지와 센서 데이터를 위한 Sensor_Data 메시지도
정의되었다
표321에서 정의된 ISHURO 메시지를 CAN을 이용하여
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
37
송수신하기 위해서는 CAN Data 형식으로 재정의해 주어야 한다
메시지 재정의 과정에는 메시지의 우선순위를 지정하는
식별자(Identifier) 정의와 한 메시지 프레임의 크기 정보가
포함된다
표 322 지역제어기 1 메시지 CAN Data Message 화
Table 322 CAN data message of local controller 1
Message Name ID Direction Data (byte)
0x580 Send 1 Module_State
0x5c0 Receive 1
Output_I_State 0x6c0 Send 1
Walking_Position 0x600 Send 4
Jog_Move 0x680 Send 3
Global_Sync 0x4bf Send 1
Angle_Data 0x500 Send 8
Encoder_Data 0x540 Receive 8
Sensor_Data 0x640 Receive 8
표322는 지역 제어기 1의 CAN 메시지 식별자 및 데이터
크기를 나타낸다 지역 제어기 1은 오른쪽 발목 요(Ankle Yaw)
관절부로 지역 제어기 중에서 가장 우선 순위가 높고 왼쪽 발목
요(Ankle Yaw)관절의 우선 순위가 가장 낮다 메시지 별 우선
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
38
순위는 Global_Sync가 가장 높고 Output_I_State가 가장 낮다
Global_Sync 명령은 모든 지역 제어기들이 수신하는
메시지로써 지역 제어기들이 동기화 되어 움직일 때 사용하는
명령으로 우선순위가 가장 높게 설정되었다 지역 제어기의 우선
순위는 오름 차순으로 1씩 증가하는 형태를 가진다 즉 지역
제어기 2의 Module_State 메시지 ID는 0x5810x5c1
Output_I_State는 0x6c1를 가진다
Module_State Ouput_I_State Global_Sync 메시지들의
크기는 1바이트이고 Jog_Move가 3바이트 Walking_Position이
4바이트로 구성되었다 Angle_Data Encoder_Data와
Sensor_Data는 8바이트이고 8바이트는 CAN 메시지가 전송할
수 있는 최대 데이터의 크기이다
앞 절에서 수식(311)~(314)을 이용하여 메시지 별 응답
시간을 구하면 표 323과 같다 8바이트 데이터를 전송하는
Angle_Data Encoder_Data Sensor_Data는 CAN 메시지의
길이가 130 비트로 가장 길고 따라서 버스의 전송 속도를
500kbps 1Mbps에 전송하였을 때 각각 260 smicro 와 130 smicro 가
걸리는 것을 확인할 수 있다
Module_State Output_I_State Walking_Position
Jog_Move의 메시지들은 로봇이 보행하기 전 초기 위치를
설정하는 데 이용되는 메시지로서 주기를 가지고 송수신 되지
않다 사용자에 의해 데이터 송수신의 안정성을 확보하는데
어려움이 없다 하지만 Angle_Data Encoder_Data
Sensor_Data 메시지들은 20ms의 주기를 가지고 송수신 되기
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
39
때문에 지역 제어기들의 개수와 전송 속도는 데이터 전송
안정성에 영향을 미친다
표 323 메시지 전송 시간
Table 323 Transmission time of messages
iC ( smicro )
Message Name Length (bits)
500kbps 1Mbps
Module_State 63 126 63
Output_I_State 63 126 63
Walking_Position 92 184 92
Jog_Move 82 164 82
Global_Sync 63 126 63
Angle_Data 130 260 130
Encoder_Data 130 260 130
Sensor_Data 130 260 130
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
40
33 CAN messages 전송
331 ISHURO 모의 실험기
그림 332는 ISHURO 모의 실험기의 주 화면이다
그림 331 모의 실험기 주 화면 Fig 331 Main screen of a simulator
ISHURO의 보행 궤적은 3초를 한 보(step)로 하고 샘플링
시간은 10ms이다 모의 실험기에서 사용자는 경유점 정보를
입력하고 그 정보를 이용하여 5차 스플라인 곡선으로
ISHURO의 궤적을 생성한다 생성된 궤적에서 ISHURO의
역기구학 식(부록)을 이용하여 각 구동부의 각도 데이터를
구한다
모의 실험기에서 생성된 각도 데이터를 지역 제어기에서 의미
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
41
있는 정보로 변환하기 위해서 지역 제어기의 구동 모터의 입력
엔코더 값으로 변환하는 과정이 필요하고 ISHURO 구동부
모터로는 A-max26 Re-max24 두 종류가 사용되었고 각
모터의 입력 엔코더는 한 바퀴당 1000pulse 512pulse이다
구동부 모터의 입력 엔코더 값으로 변환된 데이터는 주
제어기로 전송되고 주 제어기에서 지역 제어기로 보행 중에
전송되게 된다
그림 331은 ISHURO의 데이터 흐름도를 나타낸 것이다
모의 실험기 부분에 Input Commander Trajectory Planner
Kinematics 모듈이 작성되었고 주 제어기와 지역 제어기는
ISHURO내부에 탑재 되었다
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
42
그림 332 ISHURO 의 데이터 흐름도 Fig 332 Data flow chart of ISHURO
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
43
332 주 제어기 CAN message 전송
각 지역 제어기의 보행 데이터는 10ms 간격으로 계획되어
있고 입력축 엔코더 값으로 변환 시 4바이트의 크기를 가지고
있다 앞 절의 CAN 메시지 정의에서 Angle_Data
Encoder_Data Sensor_Data는 8바이트로 정의되었다 따라서
하나의 CAN 메시지 프레임은 한 번에 2개의 데이터를 전송할
수 있다 즉 20ms의 데이터를 전송하게 된다 Angle_Data와
Encoder_Data의 전송 주기는 20ms가 된다 20ms가 21-
자유도를 가진 ISHURO의 메시지 전송에서 안정도 판별의
기준이 된다
ISHURO의 주 제어기와 지역 제어기간의 동작은 5가지
모드로 구성이 된다 첫 번째 모드는 아이들(Idle) 모드이다
지역 제어기들은 파워 온이 되면 현재 위치를 유지하기 위한
제어를 시작하고 이 상태는 모터가 정토크를 발생하는 상태이다
두 번째 상태는 로봇의 다리부를 쭉 펴진 상태로 만들기 위해
각 지역 제어기가 출력 축 엔코더의 I-상을 찾는 모드로 I-상
모드(Find-I-State)이다 세 번째 모드는 초기 위치 이동
모드(Walking-Position)이다 출력 축 엔코더 I-상을 찾은 후
보행을 위한 자세를 취하기 위해 각 지역 제어기들은 주
제어기에서 전송된 출력 엔코더 펄스값으로 지정된 위치로
정속도로 이동하게 된다 네 번째 상태는 조그(Jog)모드이다
초기 위치로 이동한 로봇의 자세 교정을 위해 각 지역 제어기의
출력 축 엔코더 1펄스 단위로 움직일 수 있는 상태이다 마지막
다섯 번째 보행(Walking) 모드이다 Global_Sync 메시지를
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
44
수신한 모든 지역 제어기들이 수신되는 입력 엔코더 값으로
제어를 시작하는 상태이다
그림 333은 CAN 메시지와 제어기의 모드 상태를 나타낸다
그림 333 ISHURO 제어기의 동작 모드
Fig 333 Mode state of ISHURO
모든 제어기는 파워 온 상태에서 아이들 모드로 들어 가게
되고 사용자 명령에 따라 모드 순서에 의해 보행 초기화 과정을
수행한다 보행 초기화가 완료된 상태에서 사용자는
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
45
Global_Sync명령을 모든 지역 제어기로 전송하여 보행을
시작하게 한다 계획된 보행이 완료되면 모든 동작을 마치게
되고 결과 데이터는 주 제어기에 저장된다
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
46
4 실험 결과
41 관절 모듈 별 실험
보행 실험에 앞서 관절 모듈 별 실험을 실시하였다 이 실험을
통해 각 관절 모듈의 데이터 송수신 상태 및 부하가 없는
상태에서의 각 관절부의 움직임을 확인할 수 있다 주
제어기는10ms로 계획된 4바이트의 각도 데이터 2개를 하나의
CAN 메시지화 하여 전송한다
그림 411 20ms 주기 데이터에 대한 CAN 버스 상태
Fig 411 CAN bus status of 20ms data
지역 제어기는 각도 데이터를 수신 후 저장 및 각도 데이터
값만큼 동작한 후 입력 축 엔코더 데이터와 센서 데이터를 주
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
47
제어기로 전송하게 된다 그림 411은 20ms 데이터 전송
주기에서의 주 제어기와 지역 제어기 간의 데이터 전송에 따른
전송 시간 및 버스 이용 상태를 보여준다 ISHURO가 21-
자유도를 가지고 있으므로 20ms에 주 제어기는 21개의 지역
제어기와 같은 형식의 데이터를 송수신하게 된다 그림 411의
실험 결과에 의해 1Mbps 500kbps에서 21-자유도를 가지는
ISHURO의 각도 엔코더 센서 데이터의 버스 이용률의 여유를
가지는 것을 확인하였다 20ms 주기를 기준으로 하였을 때
1Mbps는 11810ms 500kbps는 362ms의 시간 여유를
가진다 따라서 추가로 지역 제어기가 필요한 경우 해당
제어기의 CAN 메시지 정의만으로 확장이 가능하다
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
48
42 보행 실험
앞 절의 모듈 별 실험을 근거로 주 제어기와 지역 제어기
간의 데이터 송수신에서 CAN 버스의 여유 정도를 확인하였다
ISHURO의 보행 실험을 하기 위한 그림 421과 같다 모의
실험기에서 생성된 각 지역 제어기의 각도 데이터를 주
제어기로 전송한 후 사용자는 사용자 명령에 의해 ISHURO의
보행 초기 상태를 위한 초기화 작업을 수행한다
그림 421 실험 시스템의 구성
Fig 421 Configuration of experimental system
초기화 작업에는 각 지역 제어기의 상태 파악 및 각 구동부의
출력 엔코더의 I-상을 이용하여 ISHURO가 다리부를 일자로 핀
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
49
형태를 만든다 그 다음 보행을 위한 무릎을 굽힌 상태를 만들어
주는 동작이 포함된다
보행 초기화 과정이 끝난 후에는 사용자 명령에서
Global_Sync 메시지를 이용하여 모든 지역 제어기의 구동부
모터를 구동 시킨다 지역 제어기는 Global_Sync 메시지를 받은
수 지역 타이머가 영으로 초기화된다 보행이 시작되면 지역
제어기는 20ms 마다 10ms의 각도 데이터 2개를 수신하고
1ms 마다 모터를 제어하게 되고 10ms 마다 입력 엔코더값을
저장하여 20ms 마다 주 제어기로 전송하게 된다 주
제어기에서는 20ms 마다 각 지역 제어기로 각도 데이터를
전송하고 20ms 마다 엔코더 데이터와 센서 데이터를 수신하여
저장하게 된다
ISHURO의 보행 실험은 12초 직진 보행이다 한 보는 3초로
총 4보 보행을 수행하였다
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
50
그림 422 지지각의 보행 실험 결과 Fig 422 Walking Experimental result of support leg
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
51
그림 423 유각의 보행 실험 결과 Fig 423 Walking Experimental result of swing leg
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
52
5 결론 및 향후 과제
본 연구에서는 CAN 기반의 확장 가능한 다축 제어기를 개발
하여 휴머노이드 로봇 ISHURO에 적용하였다 이로 인해 주 제
어기와 21개의 지역 제어기는 CAN 버스로 연결되어 배선이 간
단해 졌고 지역 제어기가 추가로 필요할 경우 해당 제어기의
CAN 메시지 정의만으로 간단히 추가할 수 있게 되었다 개발된
CAN 기반의 다축 제어기를 이용하여 ISHURO가 보행 가능하도
록 주 제어기와 지역 제어기 간의 분산제어알고리즘을 개발하였
다
ISHURO의 모의 실험기에서는 경유점 정보에 대한 보행 궤적
생성 및 ZMP를 계산하여 실제 보행 실험 전에 보행의 안정성을
검증하였다 또한 모의 실험기와 ISHURO의 주 제어기간에 무선
랜(80211b)을 이용하여 휴머노이드 로봇이 외부와의 물리적
연결 없이 자유롭게 동작할 수 있는 환경을 구축하였다 각 구동
부의 지역 제어기에서는 초기화 상태 및 보행 상태에 대한 CAN
메시지를 구별하여 ISHURO의 보행 초기화와 보행 시 모터 제
어를 담당하였다
앞으로 연구할 과제는 휴머노이드 로봇 ISHURO의 실시간 동
작을 위해 궤적을 실시간으로 계산하기 위한 연산 모듈의 탑재
이다 그리고 ISHURO의 발바닥에 장착된 FSR 센서로부터 얻
은 ZMP 데이터로부터 보행 안정도를 판단하고 상황에 따라 계
획된 궤적을 변화 시킬 수 있는 실시간 제어 알고리즘 개발이
필요하다
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
53
참고 문헌
[1] N Kanehira TU Kawasaki S Ohta T Ismumi T
Kawada F Kanehiro S Kajita K Kaneko ldquoDesign and experiments of advanced leg module (HRP-2L) for
humanoid robot (HRP-2) developmentrdquo IEEERSJ
International Conference on Intelligent Robots and System
vol3 pp2455-2460 Sept30-Oct5 2002
[2] K Hirai M Hirose Y Haikawa T Takenaka ldquoThe
development of Honda humanoid robotrdquo Robotics and
Automation 1998 Proceedings 1998 IEEE International
Conference on vol2 pp 1321 ndash 1326 16-20 May 1998
[3] M Fujita Y Kuroki T Ishida TT Doi ldquoA small
humanoid robot SDR-4X for entertainment applicationsrdquo Advanced Intelligent Mechatronics 2003 AIM 2003
Proceedings 2003 IEEEASME International Conference
on vol2 pp 938 ndash 943 20-24 July 2003
[4] 이보희 ldquo이족보행로봇 IWR의 걸음새 구현rdquo 박사학위논문
인하대학교 1996
[5] 임선호 ldquo이족보행로봇 IWR-III의 균형점 제어 구현에 관한
연구rdquo 박사학위논문 인하대학교 1999
[6] 최상호 ldquo이족보행로봇 IWR의 동적 안정도를 위한 균형점
해석에 관한 연구rdquo 석사학위논문 인하대학교 1998
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
54
[7] Y Kuroki B Blank T Mikami P Mayeux A Miyamoto
ldquoMotion creating system for a small biped entertainment
robotrdquo Proceedings of 2003 IEEERSJ International
Conference on Intelligent Robots and Systems vol2
pp1394-1399 Oct27-31 2003
[8] Y Sakagami R Watanabe C Aoyama S Matsunaga N
Higaki K Fujimura ldquoThe intelligent ASIMO system
overview and integrationrdquo IEEERSJ International
Conference on Intelligent Robots and Systems vol3
pp2478-2483 Sept30-Oct5 2002
[9] M Santos M Stemmer F Vasques ldquoSchedulability analysis of messages in a CAN network applied to an
unmanned airshiprdquo IEEE 2002 28th Annual Conference of
the IECON 02 vol3 pp1909-1914 Nov5-8 2002
[10] KW Tindell H Hansson AJ Wellings ldquoAnalysing real-time communications controller area network
(CAN)rdquo Proceedings of Real-Time Systems Symposium
pp259-263 Dec7-9 1994
[11] SH Hong WH Kim ldquoBandwidth allocation scheme in
CAN protocolrdquo Control Theory and Applications IEE
Proceedings vol147 pp 37 ndash 44 Jan 2000
[12] K Tindell A Burns A Wellings ldquoCalculating Controller Area Network (CAN) Message Response Timerdquo Control Engineering Practice Vol 3 No 8 pp 1163-1169 1995
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
55
[13] H Ekiz A Kutlu ET Powner ldquoDesign and
implementation of a CANCAN bridgerdquo Parallel
Architectures Algorithms and Networks 1996
Proceedings Second International Symposium on pp 507
ndash 513 12-14 June 1996
[14] JA Fonseca LM Almeida ldquoUsing a planning scheduler
in the CAN networkrdquo Proceedings of the 1999 IEEE
International Conference on Emerging Technologies and
Factory Automation vol2 pp815-821 Oct18-21 1999
[15] Shi Zongying Xu Wenli Wen Xu Jiang Peigang
ldquoDistributed hierarchical control system of humanoid robot
THBIP-1rdquo Proceedings of the 4th World Congress on
Intelligent Control and Automation vol2 pp1265-1269
Jun10-14 2002
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
56
부록 A ISHURO의 변환행렬 및 역기구학 해석
A1 Support Leg
D-H Parameters
of link ai αi di θi
1 0 90deg l1 θ1=90deg
2 -l2 90deg 0 θ2=-90deg
3 -l3 0deg 0 θ3=-30deg
4 -l4 0deg 0 θ4=60deg
5 -l5 -90deg 0 θ5=-30deg
6 0 -90deg 0 θ6=90deg
7 l6 0deg 0 θ7=0deg
8(가상) 0 0deg 0 θ8=-90deg
Support Leg A Matrix
=
1000010
00010100
1
1
l
A
minusminusminus=
10000010
00
2222
22222
slcsclscA
minusminusminus=
10000100
00
3333
33333
slcsclscA
minusminusminus=
10000100
00
4444
44444
slcsclscA
minusminusminusminus=
10000010
00
5555
55555
slcsclscA
minus
minus=
100000100000
66
666
csscA
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
57
minus=
10000100
00
7677
76777
slcsclscA
minus
=
10000100000100108A
Support Leg Aminus1 Matrix
minus
=minus
10000001
1000010
1
11
l
A
minus
=minus
1000000100
0
22
222
12
cs
lscA
minus
=minus
1000010000
0
33
333
13
cslscA
minus
=minus
1000010000
0
44
444
14
cslscA
minusminus
=minus
1000000100
0
55
555
15
cs
lscA
minusminus
=minus
100000010000
66
66
16
cs
scA
minus
minus=minus
1000010000
0
77
677
17
cslscA
minus=minus
1000010000010010
18A
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
58
Support Leg Inverse Kinematics
)( zy PPP
y
z
2θ
φ
)0180(
)(2tan
2
2
1
6
6
ltleminus
+minus=there4minus=
+minus=
+minus=
θ
φπθφ
o
yz
zzz
yyy
PlPa
plsP
plsP
765431
81
11
2 AAAAATAAA =minusminusminus 의 (33)
)1800(
)cos(
6
66
6226
226
olelt
=there4
=+minus=
minus=minus
minus
minus
θ
θ c
czy
zy
Da
Dacasc
acasc
TAAAAAAAA =87654321 의 (12)amp (22)에서
0)( 6677 =++ cassncs xxx (1)
26677 )( scassncs yyy minus=++ (2)
식(1)과 (2)에서
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
59
)9090(
)(2tan1
7
777
277
77271
7
726
6277
716
677
oo leleminus
=there4
minus=
=minus
minus=
=minusminus
=+
=minus
=+
minusminus
minusminus
minusminusminus
minus
minus
θ
θ cs
sc
syxyx
xy
yyy
xxx
DDaDD
DnssnsKsK
s
Ks
cassncs
Ksca
sncs
431
51
61
71
81
11
2 AAAAATAAA =minusminusminusminusminusminus의 (14)amp (24)에서
4133443 cos)cos( minus=minus+minus Kll θθθ (3)
4233443 sin)sin( minus=minus+minus Kll θθθ (4)
24243343
233
22443
2
24143343
233
22443
2
sin)sin(2sin)(sin
cos)cos(2cos)(cos
minus
minus
=++++
=++++
Kllll
Kllll
θθθθθθ
θθθθθθ
)1800(
)(2tan)0(1
22
cos
cos2
4
444
42
44
443
2412
42
32
422
414
242
241443
23
24
olele
=there4
geminus=
=minusminusminus+
=
+=++
minusminus
minusminus
minusminusminusminus
minusminus
θ
θθ
θ
θ
cs
cs
c
DDaDD
Dll
lKllKK
KKllll
식 (3)과 (4)에서
4233443
41334`43
sin)sin(cos)cos(
minus
minus
=minus+minus=minus+minusKllKlll
θθθθθθ
에서 식을 전개하면
423343434
413343434
)()(
minus
minus
=minus+minus=minusminusminusKslsccslKclssccl
얻은 식을 정리하면
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
60
413443344 )( minus=+minus Kccllssl (5)
423443443 )( minus=minus+minus Kcslscll (6)
식(5) (6)을 t로 치환하면
63534
33231
tctsttctst=minusminus
=minus 에서
)180180(
)(2tan
3
333
34251
62533
34251
61433
oo leleminus
=there4
=+minus
=
=minusminus+
=
minusminus
minus
minus
θ
θ cs
s
c
DDa
Dtttttttt
s
Dtttttttt
c
543211
61
71
8 AAAAAAATA =minusminusminus의 (11)amp (13)에서
)180180(
)(2tan
)tan(
cossin)cos(sincos)sincos()sin(
5
435
5251543
52
51543
5277543
516677543
oo leleminus
minusminus=there4
==++
=++
=+minus=++=minus+=++
minusminus
minus
minus
minus
minus
θ
θθθθ
θθθθ
θθθ
θθθθθθθθθθθθ
temp
temp
xx
xxx
KKaKK
KnsKans
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
61
부록 B 81C91 CAN controller 회로도
62
부록 C ISHURO 지역 제어기 회로도
63
64
62
부록 C ISHURO 지역 제어기 회로도
63
64
63
64
64