64
1 工學碩士學位 請求論文 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 Network Implementation for Distributed Control for a Humanoid Robot 2005 年 2 月 仁荷大學校 大學院 電氣工學科(制御 및 시스템 專攻) 成 裕 慶

휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 2: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 3: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 4: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 5: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 6: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 7: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 8: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 9: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 10: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 11: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 12: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 13: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 14: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 15: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 16: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 17: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 18: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 19: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 20: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 21: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 22: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 23: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 24: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 25: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 26: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 27: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 28: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 29: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 30: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 31: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 32: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 33: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 34: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 35: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 36: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 37: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 38: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 39: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 40: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 41: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 42: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 43: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 44: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 45: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 46: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 47: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 48: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 49: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 50: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 51: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 52: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 53: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 54: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 55: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 56: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 57: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 58: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

58

Support Leg Inverse Kinematics

)( zy PPP

y

z

φ

)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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 59: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 60: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

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

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 61: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

61

부록 B 81C91 CAN controller 회로도

62

부록 C ISHURO 지역 제어기 회로도

63

64

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 62: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

62

부록 C ISHURO 지역 제어기 회로도

63

64

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 63: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

63

64

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40
Page 64: 휴머노이드 로봇의 분산제어를 위한 네트워크 구현 · 2010-10-16 · 16개의 메시지 박스를 가진다. can 컨트롤러 회로도는 부록b에 나타내었다

64

  • 목차
    • 1 서론
      • 11 연구 배경 및 목적
      • 12 연구 내용 및 논문 구성
        • 2 ISHURO 시스템 구성
          • 21 기구 구성
          • 22 제어기 구성
          • 23 기구부 해석
            • 231 ISHURO 좌표계 설정
            • 232 궤적 계획
            • 233 동역학 해석
                • 3 ISHURO 네트워크 설계
                  • 31 CAN(Controller Area Network)
                  • 32 CAN messages 정의
                  • 33 CAN messages 전송
                    • 331 ISHURO 모의 실험기
                    • 332 주 제어기 CAN messages 전송
                        • 4 실험 결과
                          • 41 관절 모듈 별 실험
                          • 42 보행 실험
                            • 5 결론 및 향후 과제
                            • 참고 문헌
                            • 부록 A ISHURO의 변환 행렬 및 역기구학 해석
                            • 부록 B 81C91 CAN controller 회로도
                            • 부록 C ISHURO 지역 제어기 회로도
                              • 표목차
                                • [표 211] 하드웨어 스펙
                                • [표 231] D-H 변수값
                                • [표 232] 3초 보행 경유점
                                • [표 321] ISHURO 메시지 정의
                                • [표 322] 지역제어기1 메시지 CAN Data Message 화
                                • [표 323] 메시지 전송 시간
                                  • 그림목차
                                    • [그림 211] 휴머노이드 로봇 ISHURO
                                    • [그림 212] 휴머노이드 로봇 ISHURO 다리부
                                    • [그림 221] 주 제어기
                                    • [그림 222] 지역 제어기
                                    • [그림 231] ISHURO의 좌표계 시스템
                                    • [그림 232] 지지각의 x방향 궤적
                                    • [그림 233] 지지각의 y방향 궤적
                                    • [그림 234] 지지각의 z방향 궤적
                                    • [그림 235] 기준 좌표계에 대한 벡터량 표시
                                    • [그림 331] 모의 실험기 주 화면
                                    • [그림 332] ISHURO의 데이터 흐름도
                                    • [그림 333] ISHURO제어기의 동작 모드
                                    • [그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태
                                    • [그림 421] 실험 시스템의 구성
                                    • [그림 422] 지지각의 보행 실험 결과
                                    • [그림 423] 유각의 보행 실험 결과
                                        • 목차1 서론 1 11 연구 배경 및 목적 1 12 연구 내용 및 논문 구성 32 ISHURO 시스템 구성 4 21 기구 구성 4 22 제어기 구성 7 23 기구부 해석 11 231 ISHURO 좌표계 설정 11 232 궤적 계획 13 233 동역학 해석 173 ISHURO 네트워크 설계 21 31 CAN(Controller Area Network) 21 32 CAN messages 정의 24 33 CAN messages 전송 29 331 ISHURO 모의 실험기 29 332 주 제어기 CAN messages 전송 324 실험 결과 35 41 관절 모듈 별 실험 35 42 보행 실험 375 결론 및 향후 과제 41참고 문헌 42부록 A ISHURO의 변환 행렬 및 역기구학 해석 45부록 B 81C91 CAN controller 회로도 55부록 C ISHURO 지역 제어기 회로도 56 표목차[표 211] 하드웨어 스펙 5[표 231] D-H 변수값 12[표 232] 3초 보행 경유점 15[표 321] ISHURO 메시지 정의 24[표 322] 지역제어기1 메시지 CAN Data Message 화 26[표 323] 메시지 전송 시간 28그림목차[그림 211] 휴머노이드 로봇 ISHURO 4[그림 212] 휴머노이드 로봇 ISHURO 다리부 6[그림 221] 주 제어기 8[그림 222] 지역 제어기 10[그림 231] ISHURO의 좌표계 시스템 11[그림 232] 지지각의 x방향 궤적 15[그림 233] 지지각의 y방향 궤적 16[그림 234] 지지각의 z방향 궤적 16[그림 235] 기준 좌표계에 대한 벡터량 표시 18[그림 331] 모의 실험기 주 화면 29[그림 332] ISHURO의 데이터 흐름도 31[그림 333] ISHURO제어기의 동작 모드 33[그림 411] 20ms 주기 데이터에 대한 CAN 버스 상태 35[그림 421] 실험 시스템의 구성 37[그림 422] 지지각의 보행 실험 결과 39[그림 423] 유각의 보행 실험 결과 40