KR101809972B1 - 보행 로봇 및 그 제어방법 - Google Patents

보행 로봇 및 그 제어방법 Download PDF

Info

Publication number
KR101809972B1
KR101809972B1 KR1020100131259A KR20100131259A KR101809972B1 KR 101809972 B1 KR101809972 B1 KR 101809972B1 KR 1020100131259 A KR1020100131259 A KR 1020100131259A KR 20100131259 A KR20100131259 A KR 20100131259A KR 101809972 B1 KR101809972 B1 KR 101809972B1
Authority
KR
South Korea
Prior art keywords
walking
joint
target
trajectory
robot
Prior art date
Application number
KR1020100131259A
Other languages
English (en)
Other versions
KR20120069920A (ko
Inventor
이민형
노경식
권웅
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020100131259A priority Critical patent/KR101809972B1/ko
Priority to US13/279,633 priority patent/US8958909B2/en
Publication of KR20120069920A publication Critical patent/KR20120069920A/ko
Application granted granted Critical
Publication of KR101809972B1 publication Critical patent/KR101809972B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62DMOTOR VEHICLES; TRAILERS
    • B62D57/00Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track
    • B62D57/02Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members
    • B62D57/032Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members with alternately or sequentially lifted supporting base and legs; with alternately or sequentially lifted feet or skid
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1615Programme controls characterised by special kind of manipulator, e.g. planar, scara, gantry, cantilever, space, closed chain, passive/active joints and tendon driven manipulators
    • B25J9/162Mobile manipulator, movable base with manipulator arm mounted on it
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/0009Constructional details, e.g. manipulator supports, bases
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40244Walking manipulator with integrated stewart, parallel arm
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40264Human like, type robot arm

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Orthopedic Medicine & Surgery (AREA)
  • Manipulator (AREA)

Abstract

보행 로봇 및 그 제어방법이 개시된다. 본 발명에 따른 보행 로봇 및 그 제어방법은 로봇의 다리에 마련된 적어도 하나의 관절부를 포함하는 보행 로봇의 다양한 보행을 제어하는 보행로봇의 제어방법으로서, 인간의 보행데이터를 이용하여 관절부에 대응하는 시간에 따른 각도변화 정보를 미리 저장하고, 시간에 따른 각도변화정보에서 기준 나트 포인트를 추출하고, 추출된 기준 나트 포인트를 이용하여 로봇의 기준 보행궤적을 생성하고, 로봇의 보행패턴을 변화시키기 위한 보행 변화팩터를 산출하고, 기준 보행궤적에 산출된 보행 변화팩터를 연산하여 목표 보행궤적을 생성하고, 생성된 목표 보행궤적을 추종하는 제어토크를 산출하고, 산출된 제어토크를 관절부에 전달하여 보행을 제어한다.
따라서, 본 발명은 다양한 보행패턴을 비교적 단순한 연산과정으로 구현할 수 있다.

Description

보행 로봇 및 그 제어방법{WALKING ROBOT AND CONTROL METHOD THEREOF}
본 발명은 보행 로봇 및 그 제어방법에 관한 것으로서, 보다 상세하게는 토크 기반에 따라 보행하는 로봇의 다양한 보행 제어를 위한 보행 로봇 및 그 제어방법에 관한 것이다.
인간과 유사한 관절 체계를 가지고 인간의 작업 및 생활 공간에서 인간과 공존하며 보행하는 로봇의 연구 개발이 활발하게 진행되고 있다. 보행 로봇은 이족 또는 3족 이상의 복수의 다리를 가지는 다족 보행 로봇으로 구성되며, 안정적인 보행을 위해 각 관절에 위치한 전기 모터, 유압 모터 등의 액츄에이터를 구동해야 한다. 액츄에이터의 구동 방식은 각 관절의 지령(command) 각도, 즉 지령(command) 위치를 주고 그것을 추종 제어하는 위치 기반의 ZMP(Zero Moment Point) 제어 방식과, 각 관절의 지령(command) 토크를 주고 그것을 추종 제어하는 토크 기반의 FSM(Finite State Machine) 제어 방식을 들 수 있다.
ZMP 제어 방식은 ZMP 구속 조건, 즉 ZMP가 지지하는 다리로 이루어진 지지다각형 내의 안전 영역(한발로 지지하고 있을 경우에는 그 발의 영역, 양발로 지지하고 있을 경우에는 양발의 영역을 포함하는 convex polygon 내에서 안전을 고려하여 작게 설정한 영역을 의미한다)에 존재해야 한다는 조건을 만족하도록 보행 방향, 보행 폭, 보행 속도 등을 미리 설정하고, 이 설정에 대응하는 각 다리의 보행 패턴을 생성하며, 그 보행 패턴에 따라 각 다리의 보행 궤적을 계산한다. 또한 계산된 보행 궤적의 역기구학(Inverse Kinematics) 계산을 통해 각 다리의 관절의 각도를 계산하고, 각 관절의 현재 각도와 목표 각도에 기초하여 각 관절의 목표 제어 값을 계산한다. 또한 매 제어시간마다 각각의 다리가 계산된 보행 궤적을 추종하도록 하는 서보 제어(servo control)를 통해 구현된다. 즉, 보행 시 각 다리의 위치가 보행 패턴에 따른 보행 궤적을 정확히 추종하는지 검출하고, 각 다리가 보행 궤적을 이탈하면 모터의 토크를 조절하여 각 다리가 보행 궤적을 정확히 추종하도록 제어하여 보행하는 방식이다.
그러나, ZMP 제어 방식은 위치 기반의 제어 방법이기 때문에 정확한 위치 제어가 가능한 반면, ZMP를 제어하기 위해 각 관절의 정확한 각도 제어를 수행해야 하므로 높은 서보 게인을 필요로 한다. 이로 인해 높은 전류를 필요로 하기 때문에 에너지 효율이 낮고 관절의 강성이 커서 주위 환경에 큰 충격을 줄 수 있다. 또한 각 관절의 각도를 계산하기 위해선 기구학적 특이점(Kinematic Singularity)을 피해야 하므로 보행 중 무릎을 항상 굽힌 자세를 유지하게 되어 인간과 다른 부자연스러운 보행을 하게 된다.
이에 반해, FSM 제어 방식은 매 제어 시간마다 위치를 추종하여 보행하는 방식이 아니라 로봇의 각 동작 상태(State)를 미리 정의해 두고(Finite State), 보행 시 각 동작 상태(State)를 참조하여 각 관절의 목표 토크를 계산하고 이를 추종하도록 제어하여 보행하는 방식으로, 보행 중 각 관절의 토크를 제어하므로 낮은 서보 게인이 가능하여 에너지 효율이 높고 강성이 낮아서 주위 환경에 대해 안전하다. 또한 기구학적 특이점(Kinematic Singularity)을 피할 필요가 없으므로 인간과 같이 무릎을 편 상태의 자연스러운 보행이 가능하다.
그러나, FSM 제어 방식은 미리 정의된 동작 상태(State)에 의존하여 로봇의 보행을 제어하므로 보행 제어가 부적절하여 로봇이 균형을 잃을 수 있다. 따라서 보행 동작과 관계 없이 로봇의 균형을 잡기 위한 별도의 밸런싱(Balancing) 동작을 하게 된다. 로봇의 밸런싱 동작을 위해 안정적인 균형을 구현할 수 있는 지령 토크를 구해야 하는데, 지령 토크를 구하기 위해서는 매우 복잡한 동적 방정식(Dynamics Equation)을 풀어야 하므로 현재까지 6자유도 관절 구조의 다리를 가진 로봇에서 구현되지 못하였다.
본 발명의 일 측면은 인간의 보행 데이터 기반의 기준 보행 궤적을 생성하고 기준 보행 궤적과 보행 변화 팩터를 이용하여 다양한 보행 패턴을 구현할 수 있는 보행 로봇 및 그 제어방법을 제공한다.
전술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 보행 로봇의 제어방법은 로봇의 다리에 마련된 적어도 하나의 관절부를 포함하는 보행로봇의 제어방법으로서, 인간의 보행데이터를 이용하여 관절부에 대응하는 시간에 따른 각도변화 정보를 미리 저장하고, 시간에 따른 각도변화정보에서 기준 나트 포인트를 추출하고, 추출된 기준 나트 포인트를 이용하여 로봇의 기준 보행궤적을 생성하고, 로봇의 보행패턴을 변화시키기 위한 보행 변화팩터를 산출하고, 기준 보행궤적에 산출된 보행 변화팩터를 연산하여 목표 보행궤적을 생성하고, 생성된 목표 보행궤적을 추종하는 제어토크를 산출하고, 산출된 제어토크를 관절부에 전달하여 보행을 제어한다.
한편, 보행 변화팩터는 로봇의 보폭을 변화시키기 위한 스케일 팩터(scale factor) 및 로봇 보행의 속도를 변화시키기 위한 보행주기를 포함할 수 있다.
또한, 목표 보행궤적을 생성하는 것은 기준 나트 포인트와 스케일 팩터를 연산하여 목표 나트 포인트를 산출하고, 산출된 목표 나트 포인트를 스플라인으로 연결하여 목표 보행궤적을 생성할 수 있다.
또한, 목표 나트 포인트의 산출은 기준 나트 포인트에 스케일 팩터를 나누어 산출될 수 있다.
또한, 관절부는 고관절부, 무릎관절부 및 발목관절부를 포함하고, 스케일 팩터는 고관절부, 무릎관절부 및 발목관절부에 각각 설정될 수 있다.
또한, 스케일 팩터는 로봇이 보행할 수 있는 최소 보폭보다 변화된 보폭이 크도록 산출될 수 있다.
또한, 로봇의 기준 보행궤적은 추출된 기준 나트 포인트를 스플라인으로 연결하여 생성될 수 있다.
전술한 목적을 달성하기 위한 본 발명의 다른 측면에 따른 보행로봇의 제어방법은 로봇의 다리에 마련된 적어도 하나의 관절부를 포함하는 보행로봇의 제어방법으로서, 인간의 보행데이터를 이용하여 관절부에 대응하는 시간에 따른 각도변화정보를 미리 저장하고, 시간에 따른 각도변화정보에서 기준 나트 포인트를 추출하고, 추출된 기준 나트 포인트를 이용하여 로봇의 기준 보행궤적을 생성하여 미리 저장하고, 로봇의 보행패턴을 변화시키기 위한 보행변화팩터를 보행패턴별로 산출하여 미리 저장하고, 사용자로부터 로봇의 보행패턴을 변화시키는 명령을 입력받고, 입력된 보행패턴에 대응하는 보행변화팩터를 기준 보행궤적에 연산하여 입력된 보행패턴으로 변화시키는 목표 보행궤적을 생성하고, 생성된 목표 보행궤적을 추종하는 제어토크를 산출하고, 산출된 제어토크를 관절부에 전달하여 보행을 제어한다.
한편, 보행변화팩터는 로봇의 보폭을 변화시키기 위한 스케일 팩터(scale factor) 및 로봇 보행의 속도를 변화시키기 위한 보행주기를 포함할 수 있다.
또한,  목표 보행궤적을 생성하는 것은 기준 나트 포인트와 스케일 팩터를 연산하여 목표 나트 포인트를 산출하고, 산출된 목표 나트 포인트를 스플라인으로 연결하여 목표 보행궤적을 생성할 수 있다.
또한, 목표 나트 포인트의 산출은 기준 나트 포인트에 스케일 팩터를 나누어 산출될 수 있다.
또한, 관절부는 고관절부, 무릎관절부 및 발목관절부를 포함하고, 스케일 팩터는 고관절부, 무릎관절부 및 발목관절부에 각각 설정될 수 있다.
또한, 스케일 팩터는 로봇이 보행할 수 있는 최소 보폭보다 변화된 보폭이 크도록 산출될 수 있다.
또한, 로봇의 기준 보행궤적은 추출된 기준 나트 포인트를 스플라인으로 연결하여 생성될 수 있다.
전술한 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 보행로봇은 로봇의 다리에 마련된 적어도 하나의 관절부, 인간의 보행데이터를 이용하여 관절부에 대응하는 시간에 따른 각도변화정보를 미리 저장하는 메모리부, 시간에 따른 각도변화정보에서 기준 나트 포인트를 추출하는 나트 포인트 추출부, 나트 포인트 추출부에서 추출된 기준 나트 포인트를 이용하여 로봇의 기준 보행궤적을 생성하는 기준 보행궤적 생성부, 로봇의 보행패턴을 변화시키기 위한 보행 변화팩터를 산출하는 보행변화팩터 산출부, 기준 보행궤적에 산출된 보행 변화팩터를 연산하여 목표 보행궤적을 생성하는 목표 보행궤적 생성부, 생성된 목표 보행궤적을 추종하는 제어토크를 산출하는 제어토크 산출부 및 산출된 제어토크를 관절부에 전달하여 보행을 제어하는 서보제어부를 포함한다.
한편, 보행변화팩터 산출부는 로봇의 보폭을 변화시키기 위한 스케일 팩터(scale factor) 및 로봇 보행의 속도를 변화시키기 위한 보행주기를 산출할 수 있다.
또한, 목표보행궤적 생성부는 기준 나트 포인트와 스케일 팩터를 연산하여 목표 나트 포인트를 산출하고, 산출된 목표 나트 포인트를 스플라인으로 연결하여 목표 보행궤적을 생성할 수 있다.
또한, 목표 보행궤적 생성부는 기준 나트 포인트에 스케일 팩터를 나누어 목표 나트 포인트를 산출할 수 있다.
또한, 관절부는 고관절부, 무릎관절부 및 발목관절부를 포함하고, 보행변화팩터 산출부는 고관절부, 무릎관절부 및 발목관절부에 대해 각각 스케일 팩터를 산출할 수 있다.
또한, 보행변화팩터 산출부는 로봇이 보행할 수 잇는 최소 보폭보다 변화된 보폭이 크도록 스케일 팩터를 산출할 수 있다.
전술한 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 보행로봇은 사용자로부터 로봇의 보행패턴을 변화시키는 명령을 입력받는 사용자 인터페이스부, 로봇의 다리에 마련된 적어도 하나의 관절부, 인간의 보행데이터를 이용하여 관절부에 대응하는 시간에 따른 각도변화정보를 저장하는 메모리부, 메모리부에 저장된 시간에 따른 각도변화정보에서 기준 나트 포인트를 추출하는 나트포인트 추출부, 나트포인트 추출부에서 추출된 기준 나트 포인트를 이용하여 로봇의 기준 보행궤적을 생성하고, 생성된 기준 보행궤적을 메모리부에 저장시키는 기준 보행궤적 생성부, 로봇의 보행패턴을 변화시키기 위한 보행변화팩터를 보행패턴별로 산출하여 메모리부에 저장시키는 보행변화팩터 산출부, 사용자 인터페이스부로부터 입력된 보행패턴에 대응하는 보행변화팩터를 기준 보행궤적에 연산하여 입력된 보행패턴으로 변화시키는 목표 보행궤적을 생성하는 목표 보행궤적 생성부, 생성된 목표 보행궤적을 추종하는 제어토크를 산출하는 제어토크 산출부 및 산출된 제어토크를 관절부에 전달하여 보행을 제어하는 서보제어부를 포함한다.
한편, 보행변화팩터 산출부는 로봇의 보폭을 변화시키기 위한 스케일 팩터(scale factor) 및 로봇 보행의 속도를 변화시키기 위한 보행주기를 산출할 수 있다.
또한, 관절부는 고관절부, 무릎관절부 및 발목관절부를 포함하고, 보행변화팩터 산출부는 고관절부, 무릎관절부 및 발목관절부에 대해 각각 스케일 팩터를 산출할 수 있다.
 
또한, 보행변화팩터 산출부는 로봇이 보행할 수 잇는 최소 보폭보다 변화된 보폭이 크도록 스케일 팩터를 산출할 수 있다.
또한, 목표보행궤적 생성부는 기준 나트 포인트와 스케일 팩터를 연산하여 목표 나트 포인트를 산출하고, 산출된 목표 나트 포인트를 스플라인으로 연결하여 목표 보행궤적을 생성할 수 있다.
또한, 목표 보행궤적 생성부는 기준 나트 포인트에 스케일 팩터를 나누어 목표 나트 포인트를 산출할 수 있다.
상술한 본 발명에 따른 보행 로봇 및 그 제어방법에 의하면 다양한 보행 패턴을 비교적 단순한 연산 과정으로 구현할 수 있다.
또한 다양한 보행 패턴을 구현하는 목표 보행 궤적은 인간의 보행 패턴과 유사한 자연스러운 보행을 가능하게 한다. 목표 보행 궤적은 인간의 보행 데이터를 기초로 생성된 것으로서 인체 역학을 충실하게 반영한 것이기 때문이다.
또한 본 발명은 FSM 제어 및 토크 서보 제어 기반의 보행을 수행함으로써 낮은 서보 게인으로 보행이 가능하며 에너지 소비를 줄일 수 있다.
또한 낮은 서보 게인은 각 관절의 저강성을 가지게 하므로 주위 환경과의 충돌 시 충격을 감소시킬 수 있다.
또한 무릎 펴기 보행이 가능한 인간형 보행을 구현하여 로봇의 인간 친화성을 향상시킬 수 있다.
도 1은 본 발명의 일실시예에 따른 보행 로봇의 외관 구성도이다.
도 2는 도 1에 도시된 보행 로봇의 주요 관절 구조를 나타낸 도면이다.
도 3은 FSM 기반 보행 시, 로봇의 동작 상태와 각 동작 상태의 제어 동작을 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 보행 로봇의 제어 블록도이다.
도 5a는 고관절부의 회전 각도 측정을 도시한 도면이다.
도 5b는 무릎 관절부의 회전 각도 측정을 도시한 도면이다.
도 5c는 발목 관절부의 회전 각도 측정을 도시한 도면이다.
도 6은 본 발명의 다른 실시예에 따른 보행 로봇의 제어방법을 도시한 동작 순서도이다.
도 7은 도 6의 메모리부에 저장되는 각 관절부의 시간에 따른 각도 변화 정보의 일예를 도시한 도면이다.
도 8은 도 6의 기준 보행 궤적 생성 단계에서 나트 포인트를 추출하는 모습을 도시한 도면이다.
도 9는 도 8의 추출된 나트 포인트를 이용하여 기준 보행 궤적을 생성하는 모습을 도시한 도면이다.
도 10a는 보폭이 변화된 목표 보행 궤적의 일예를 도시한 도면이다.
도 10b는 보행 속도가 변화된 목표 보행 궤적의 일예를 도시한 도면이다.
도 11은 각 관절부별로 보폭을 다르게 변화시키는 목표 보행 궤적의 일예를 도시한 도면이다.
도 12는 본 발명의 또 다른 실시예에 따른 보행 로봇의 제어방법을 도시한 동작 순서도이다.
이하 첨부된 도면을 참조하여 본 발명에 따른 보행 로봇 및 그 제어방법의 실시예를 설명한다.
도 1은 본 발명의 일실시예에 따른 보행 로봇의 외관 구성도이다.
도 1에서, 로봇(100)은 인간과 마찬가지로 두 개의 다리(110)에 의해 직립 이동하는 이족 보행 로봇으로, 몸통(102), 머리(104), 팔(106)로 이루어진 상체(101)와, 두 개의 다리(110)로 이루어진 하체(103)를 가진다.
로봇(100)의 상체(101)는 몸통(102)과, 몸통(102)의 상부에 목(120)을 통해 연결된 머리(104)와, 몸통(102)의 상부 양측에 어깨(114L, 114R)를 통해 연결된 두 개의 팔(106L, 106R)과, 이 두 개의 팔(106L, 106R)의 말단에 각각 연결된 손(108L, 108R)으로 이루어진다.
로봇(100)의 하체(103)는 상체(101)의 몸통(102) 하부 양측에 연결된 두 개의 다리(110L, 110R)와, 두 개의 다리(110L, 110R) 말단에 각각 연결된 발(112L, 112R)로 이루어진다.
참조 부호에서, "R"과 "L"는 각각 로봇(100)의 오른쪽(right)과 왼쪽(left)을 나타내고, COG(Center Of Gravity)는 로봇(100)의 무게 중심을 나타낸다.
도 2는 도 1에 도시된 보행 로봇의 주요 관절 구조를 나타낸 도면이다.
도 2에서, 로봇(100)의 몸통(102)에는 포즈 센서(pose sensor; 14)가 설치된다. 포즈 센서(14)는 연직축에 대한 상체(101)와 두 다리(110L, 110R)의 기울기인 경사 각도와 그 각속도를 검출하여 자세 정보를 발생시킨다. 이 포즈 센서(14)는 몸통(102) 뿐만 아니라 두 다리(110L, 110R)에 설치해도 좋다.
몸통(102)에는 상체(101)가 회전할 수 있도록 요우 방향의 1 자유도를 가지는 허리 관절부(15)가 설치된다.
또한, 로봇(100)의 머리(104)에는 주위를 촬영하는 카메라(41)와, 사용자 음성을 입력하는 마이크로폰(42)이 설치된다.
머리(104)는 목 관절부(280)를 통해 상체(101)의 몸통(102)과 연결된다. 목 관절부(280)는 요우 방향(yaw, Z축 회전)의 회전 관절(281)과, 피치 방향(pitch, Y축 회전)의 회전 관절(282) 및 롤 방향(roll, X축 회전)의 회전 관절(283)을 포함하여 3 자유도를 가진다.
목 관절부(280)의 각각의 회전 관절(281, 282, 283)에는 머리(104)의 회전을 위한 모터들(예를 들어, 전기 모터, 유압 모터 등의 액츄에이터)이 연결된다.
로봇(100)의 두 개의 팔(106L, 106R)은 각각 상박 링크(31), 하박 링크(32) 및 손(33)을 가진다.
상박 링크(31)는 어깨 관절부(250L, 250R)를 통해 상체(101)에 연결되고, 상박 링크(31)와 하박 링크(32)는 팔꿈치 관절부(260)를 통해 서로 연결되며, 하박 링크(32)와 손(33)은 손목 관절부(270)를 통해 서로 연결된다.
어깨 관절부(250L, 250R)는 상체(101)의 몸통(102)의 양측에 설치되어 두 개의 팔(106L, 106R)을 상체(101)의 몸통(102)에 연결한다.
팔꿈치 관절부(260)는 피치 방향의 회전 관절(261)과, 요우 방향의 회전 관절(262)를 포함하여 2 자유도를 가진다.
손목 관절부(270)는 피치 방향의 회전 관절(271)과, 롤 방향의 회전 관절(272)을 포함하여 2 자유도를 가진다.
손(33)에는 5개의 손가락(33a)이 설치된다. 각각의 손(33a)에는 모터에 의해 구동되는 다수의 관절(미도시)들이 설치될 수 있다. 손가락(33a)은 팔(106)의 움직임에 연동하여 물건을 파지하거나 특정 방향을 가리키는 것과 같은 다양한 동작을 실행한다.
그리고, 로봇(100)의 두 개의 다리(110L, 110R)는 각각 대퇴 링크(21)와 하퇴 링크(22), 발(112L, 112R)을 가진다.
대퇴 링크(21)는 인간의 허벅다리(허벅지)에 해당하는 부분으로  고관절부(210)를 통해 상체(101)의 몸통(102)에 연결되고, 대퇴 링크(21)와 하퇴 링크(22)는 무릎 관절부(220)를 통해 서로 연결되며, 하퇴 링크(22)와 발(112L, 112R)은 발목 관절부(230)를 통해 서로 연결된다.
고관절부(210)는 요우 방향(yaw, Z축 주위의 회전)의 회전 관절(211; 힙 요우 조인트)과, 피치 방향(pitch, Y축 주위의 회전)의 회전 관절(212; 힙 피치 조인트)과, 롤 방향(roll, X축 주위의 회전)의 회전 관절(213; 힙 롤 조인트)을 포함하여 3 자유도를 가진다.
무릎 관절부(220)는 피치 방향의 회전 관절(221)을 포함하여 1 자유도를 가진다.
발목 관절부(230)는 피치 방향의 회전 관절(231)과, 롤 방향의 회전 관절(232)을 포함하여 2 자유도를 가진다.
두 개의 다리(110L, 110R) 각각에는 고관절부(210), 무릎 관절부(220), 발목 관절부(230)에 대해 6개의 회전 관절이 마련되므로, 두 개의 다리(110L, 110R) 전체에 대해서는 12개의 회전 관절이 마련된다.
한편, 두 개의 다리(110L, 110R)에서 발(112L, 112R)과 발목 관절부(230)의 사이에는 다축 F/T센서(Multi-Axis Force and Torque Sensor; 24)가 각각 설치된다. F/T 센서(24)는 발(112L, 112R)로부터 전달되는 힘의 3방향 성분(Fx, Fy, Fz)과 모멘트의 3방향 성분(Mx, My, Mz)을 측정함으로써 발(112L, 112R)의 착지 여부 및 발(112L, 112R)에 가해지는 하중을 검출한다.
도면에 도시되어 있지 않지만, 로봇(100)에는 각 회전 관절을 구동하는 모터 등과 같은 액츄에이터가 설치된다. 로봇(100)의 동작 전반을 제어하는 보행 제어부는 이 모터를 적절히 제어함으로써 로봇(100)의 다양한 동작을 구현할 수 있다.
도 3은 FSM 기반 보행 시, 로봇의 동작 상태와 각 동작 상태의 제어 동작을 나타낸 도면이다.
도 3에서, 토크 기반의 FSM 제어 방식은 로봇(100)의 동작 상태를 미리 정의된 복수 개의 동작 상태(예를 들어, S1, S2, S3, S4, S5, S6의 6개 상태)로 구분한다. 각각의 동작 상태(S1, S2, S3, S4, S5, S6)는 보행 시 로봇(100)의 한 다리(110L 또는 110R)가 취하는 포즈를 의미하고, 이러한 로봇(100)의 포즈를 적절하게 전환함으로서 안정적인 보행이 이루어지도록 한다.
또한, 이러한 동작 상태(S1, S2, S3, S4, S5, S6)와 동작 상태 전환을 통해 하나의 보행 모션(motion)을 구성한다.
제1동작 상태(S1; flight)는 다리(110L 또는 110R)를 스윙(Swing)하는 포즈이고, 제2동작 상태(S2; loading)는 발(112)을 지면에 내려 놓는 포즈이며, 제3동작 상태(S3; heel contact)는 발(112) 뒤쪽(heel)을 지면에 접촉시키는 포즈이고, 제4동작 상태(S4; heel and toe contact)는 발(112) 뒤쪽(heel)과 앞쪽(toe)을 동시에 지면에 접촉시키는 포즈이며, 제5동작 상태(S5; toe contact)는 발(112) 앞쪽(toe)을 접촉시키는 포즈이고, 제6동작 상태(S6; unloading)는 발(112)을 지면에서 떼어 내는 포즈에 해당한다.
각각의 동작 상태에서 다른 동작 상태로 전환하기 위해서는 그 동작 상태의 전환을 위한 제어 동작(Control Action)이 요구된다.
보다 구체적으로 설명하면, 제1동작 상태(S1)에서 제2동작 상태(S2)로 전환하는 경우(S1→S2), 발(112) 뒤쪽(heel)이 지면에 닿게 하는 제어 동작(heel touches ground)이 요구된다.
제2동작 상태(S2)에서 제3동작 상태(S3)로 전환하는 경우(S2→S3), 지면에 닿은 발(112)에 연결된 무릎(구체적으로, 무릎 관절부)를 구부리는 제어 동작(knee bends)이 요구된다.
제3동작 상태(S3)에서 제4동작 상태(S4)로 전환하는 경우(S3→S4), 발(112) 앞쪽(toe)이 지면에 닿게 하는 제어 동작(ball of foot touches ground)이 요구된다.
제4동작 상태(S4)에서 제5동작 상태(S5)로 전환하는 경우(S4→S5), 지면에 닿은 발(112)에 연결된 무릎을 펴는 제어 동작(knee extends)이 요구된다.
제5동작 상태(S5)에서 제6동작 상태(S6)로 전환하는 경우(S5→S6), 지면에 닿은 발(112)에 연결된 무릎을 완전하게 펴는 제어 동작(knee fully extended)이 요구된다.
제6동작 상태(S6)에서 제1동작 상태(S1)로 전환하는 경우(S6→S1), 발(112) 앞쪽(toe)을 지면에서 떼어 내는 제어 동작(ball of foot leaves ground)이 요구된다.
따라서, 로봇(100)은 제어 동작(Control Action)의 실행을 위해 각 제어 동작(Control Action)에 대응하여 각 관절의 토크 지령을 계산하고, 계산된 토크 지령을 각 관절에 설치된 모터 등의 액츄에이터에 출력하여 액츄에이터를 구동시킨다.
이러한 토크 기반의 FSM 제어 방식은, 미리 정의된 각 동작 상태(S1, S2, S3, S4, S5, S6)에 의존하여 로봇(100)의 보행을 제어한다. 하지만, 로봇(100)의 동작 상태(S1, S2, S3, S4, S5, S6)를 바꾸는 것만으로는 로봇(100)의 현재 보행 상태에 적합한 다양한 보행을 구현할 수 없다.
따라서, 본 발명의 일실시예에 의한 토크 기반의 FSM 제어 방식에서는 인간의 보행 데이터를 기반으로 구성한 기준 보행 궤적과 다양한 보행 패턴을 구현하기 위한 보행 변화 팩터 사이의 연산을 수행하여 목표 보행 궤적을 생성한다.
이하 인간의 보행과 같이 자연스럽고, 현재 보행 상태에 따라 다양하게 보행을 제어할 수 있는 본 발명에 따른 보행 로봇 및 그 제어방법을 도 4 내지 도 12를 통해 설명한다.
도 4는 본 발명의 일실시예에 따른 보행 로봇의 제어 블록도로서, 사용자 인터페이스부(310), 입력부(320), 감지부(330), 보행 제어부(340), 메모리부(350) 및 관절부(360)를 포함한다.
사용자 인터페이스부(310)는 로봇(100)의 보행을 지시하기 위한 사용자 명령을 입력한다.
구체적으로, 사용자 인터페이스부(310)는 사용자로부터 로봇(100)의 보행 패턴을 변화시키는 명령을 입력받는다. 즉, 사용자는 감지부(330)로부터 감지된 로봇(100)의 현재 보행 상태에 따라 적절한 보행 패턴을 선택하고, 선택된 보행 패턴을 사용자 인터페이스부(310)로 입력하여 보행 패턴을 변화시키도록 하는 것이다.
입력부(320)는 인간의 보행 데이터를 입력받아 이를 메모리부(350)에 저장시킨다. 상기 인간의 보행 데이터는 모션 캡처 장비를 이용하여 획득된 데이터로서, 표준 보행의 시간에 따른 각도 정보를 추출하는데 기초 데이터가 된다.
감지부(330)는 로봇의 현재 보행 상태를 감지하고, 이를 보행 제어부(340)로 전송하여 감지된 현재 보행 상태에 적합한 보행 패턴으로 변경되도록 한다.
이러한 감지부(330)는 고관절부(210), 무릎 관절부(220) 및 발목 관절부(230)의 시간에 따른 각도 변화를 감지하고, 로봇 주변의 환경을 감지한다.
한편, 각 관절부의 회전 각도를 측정하는 방법은 도 5a 내지 도 5c와 같다. 도 5a, 도 5b 및 도 5c는 고관절부(210), 무릎 관절부(220) 및 발목 관절부(230)의 회전 각도 측정을 도시한 도면으로서 로봇의 측면을 기준으로 도시하였다. 도 5a, 도 5b 및 도 5c에서 연직축을 기준으로 피치 방향으로 각 관절의 회전 각도가 측정되고, 무릎 관절부(220)는 +θ방향만 존재함이 도시되어 있다.
보행 제어부(340)는 사용자 인터페이스부(310)로부터 입력된 보행 패턴 또는 감지부(330)에 의해 감지된 로봇(100)의 현재 보행 상태에 따라 로봇(100)의 보행 패턴을 변경한다.
이러한 보행 제어부(340)는 나트 포인트 추출부(341), 기준 보행 궤적 생성부(342), 보행 변화 팩터 산출부(343), 목표 보행 궤적 생성부(344), 제어 토크 산출부(345) 및 서보 제어부(346)를 포함한다.
나트 포인트 추출부(341)는 메모리부(350)에 저장된 각 관절부(360)의 시간에 따른 각도 변화 정보로부터 기준 나트 포인트를 추출하고, 이를 기준 보행 궤적 생성부(342)에 전송한다. 기준 나트 포인트는 동작 상태(state)를 수행하기 위한 각 관절부(360)의 각도 지령으로서, 기준 나트 포인트는 각 동작 상태에 대응된다.
기준 보행 궤적 생성부(342)는 나트 포인트 추출부(341)에서 추출된 기준 나트 포인트를 스플라인으로 부드럽게 연결함으로써 로봇(100)의 기준 보행 궤적을 생성한다. 생성된 기준 보행 궤적은 메모리부(350)로 전송되어 저장된다.
보행 변화 팩터 산출부(343)는 로봇(100)의 다양한 보행 패턴을 구현하기 위한 보행 변화 팩터를 산출한다. 이러한 보행 변화 팩터는 보폭을 변화시키기 위한 스케일 팩터(scale factor)와 보행 속도를 변화시키기 위한 보행 주기로 구성된다.
한편, 스케일 팩터는 기준 보행 궤적에서 관절 각도의 절대값을 변화시키는 값으로서, 메모리부(350)에 미리 저장된 값보다 작게 한정된다. 발을 지면으로부터 들어올리는 최소 스윙(swing) 각도를 확보하기 위함이다.
또한 보행 변화 팩터 산출부(343)는 보행 패턴 정보에 대응되는 보행 변화 팩터를 산출하고, 이를 보행 패턴 정보와 함께 메모리부(350)에 저장시킬 수 있다. 예컨대, 보행 변화 팩터 산출부(343)는 제 1 보행 패턴의 정보에 대응하는 스케일 팩터와 보행 주기를 제 1 보행 패턴 정보와 함께 메모리부(350)에 저장시킨다.
목표 보행 궤적 생성부(344)는 보행 변화 팩터 산출부(343)에서 산출된 보행 변화 팩터와 기준 보행 궤적 사이의 연산을 수행하여 목표 보행 궤적을 생성한다. 구체적으로, 목표 보행 궤적 생성부(344)는 로봇(100)의 보폭을 변경시킬 경우 스케일 팩터와 기준 나트 포인트 사이의 연산을 수행하여 목표 나트 포인트를 산출하고, 산출된 목표 나트 포인트를 스플라인으로 연결함으로써 목표 보행 궤적을 생성할 수 있다.
이렇게 생성된 다양한 보행을 구현할 수 있는 목표 보행 궤적은 제어 토크 산출부(345)에 전송되어 관절부(360)에 목표 보행 궤적을 추종하는 토크가 출력되도록 한다.
제어 토크 산출부(345)는 목표 보행 궤적 생성부(344)에서 생성된 각 관절부(360)의 목표 보행 궤적을 추종하기 위한 제어 토크를 산출한다. 이러한 제어 토크의 산출은 매 제어 주기마다 이루어지고, 제어 주기는 1ms로 설정될 수 있다.
서보 제어부(346)는 제어 토크 산출부(345)에서 산출된 제어 토크를 다리의 관절부(360)에 제공하고, 관절부(360)에 설치된 모터 등의 액츄에이터를 구동시키도록 계산된 제어 토크에 대응하는 토크 제어 신호를 관절부(360)에 출력한다.
따라서, 관절부(360)는 서보 제어부(346)로부터 토크 제어 신호를 입력받아 관절부(360)에 설치된 모터 등의 액츄에이터를 구동시킴으로써 각 관절부(360)의 목표 보행 궤적에 따라 로봇(100)이 자연스럽고 다양한 보행 패턴을 구현할 수 있도록 한다.
도 6은 본 발명의 다른 실시예에 따른 보행 로봇의 제어방법을 도시한 동작 순서도이다.
먼저, 입력부(320)로부터 입력받은 인간의 보행 데이터로 각 관절부의 시간에 따른 각도 변화 정보를 메모리부(350)에 저장시킨다(410).
인간의 보행 데이터는 모션 캡처(motion capture) 장비를 이용하여 획득된 데이터로서, 안정하고 자연스러운 로봇의 보행 제어를 하는데 기초 데이터가 된다.
메모리부(350)에 저장되는 각 관절부의 시간에 따른 각도 변화 정보는 도 7과 같다.
도 7을 참조하면, 인간의 보행 데이터를 이용하여 고관절부(210), 무릎 관절부(220), 발목 관절부(230)의 시간에 따른 각도 변화가 메모리부(350)에 저장된다.
도 7의 (a)와 (b)는 왼쪽과 오른쪽의 고관절부(210)의 시간에 따른 각도 변화 개형이고, (c)와 (d)는 왼쪽과 오른쪽의 무릎 관절부(220)의 시간에 따른 각도 변화 개형이며, (e)와 (f)는 왼쪽과 오른쪽의 발목 관절부(230)의 시간에 따른 각도 변화 개형이다.
도 7의 (a) 내지 (f)의 그래프 개형을 살펴보면, t1에서부터 보행이 시작되어 t2까지가 한 주기(△t)로서 각 관절부마다 비슷한 그래프의 개형이 주기적으로 반복됨을 알 수 있다.
예컨대, 사람의 오른발 뒤꿈치가 지면에 닿는 순간부터 왼 다리가 인체를 지탱하는 과정을 거쳐 다시 오른 다리가 인체의 전방측으로 진행되어 오른발 뒤꿈치가 지면에 닿는 순간까지를 표준 보행의 보행 주기로 한다면, 각 관절부의 각도가 보행 주기(t1~t2)마다 반복적으로 변화되는 것이다.
이렇게 인간의 보행 데이터를 이용한 각 관절부의 시간에 따른 각도 변화 정보가 저장되면, 로봇(100)의 기준 보행 궤적을 생성한다(420).
구체적으로, 나트 포인트 추출부(341)는 메모리부(350)에 저장된 각 관절부의 시간에 따른 각도 변화 정보에서 기준 나트 포인트를 추출하고, 기준 보행 궤적 생성부(342)는 추출된 기준 나트 포인트를 이용하여 기준 보행 궤적을 생성한다.
기준 나트 포인트란, 다음 동작 상태(state)를 수행하기 위한 각 관절부의 각도 지령이다. 이러한 기준 나트 포인트의 추출은 도 8과 같다.
도 8을 참조하면, 기준 나트 포인트(1)는 각 관절부의 시간에 따른 각도 변화 정보에서 각속도가 '0'이거나 각속도의 부호(+, -)가 변하는 지점으로 설정될 수 있다. 즉, 기준 나트 포인트(1)는 각속도가 '0'인 피크(peak) 지점으로서, 한 주기당(△t) 3~4개의 기준 나트 포인트(1)가 추출될 수 있다.
한편, 한 주기당(△t) 추출되는 기준 나트 포인트(1)의 개수는 본 실시예에서는 3~4개로 설정하였으나 그보다 적거나 많은 기준 나트 포인트(1)의 추출도 본 발명의 범주에 포함됨은 물론이다.
이렇게 추출된 기준 나트 포인트(1)는 기준 보행 궤적 생성부(342)에 전송되고, 기준 보행 궤적 생성부(342)는 기준 나트 포인트(1)를 스플라인으로 부드럽게 연결함으로써 로봇(100)의 기준 보행 궤적을 생성한다. 생성된 기준 보행 궤적은 도 9와 같다.
도 9를 참조하면, 기준 보행 궤적은 추출된 3~4개의 기준 나트 포인트(1)를 부드럽게 연결하여 형성된 시간에 따른 각도 변화 개형이 매 보행 주기(△t)마다 반복되도록 생성된다.
로봇(100)의 기준 보행 궤적이 생성되면, 보행 변화 팩터 산출부(343)는 로봇(100)의 보행 패턴을 변화시킬 보행 변화 팩터를 산출한다(430).
보행 변화 팩터는 보폭을 변화시키기 위한 스케일 팩터(scale factor)와 보행 속도를 변화시키기 위한 보행 주기를 포함한다.
즉, 보행 변화 팩터 산출부(343)는 로봇(100)의 현재 보행 상태에 적합한 보폭과 보행 속도를 조정하는 보행 변화 팩터를 산출하는 것이다.
스케일 팩터는 기준 보행 궤적에서 관절 각도(θ)의 절대값(magnitude)을 변화시켜 보폭을 증가 또는 감소시키는 팩터이다.
각 관절부의 각도는 변화된 보폭에 비례하여 감소 내지 증가한다. 이러한 원리를 이용하여 본 실시예는 표준 보행에 따른 기준 보행 궤적의 각도 절대값을 스케일 팩터를 이용하여 변화시켜 다양한 보폭을 구현하도록 한다.
한편, 이러한 스케일 팩터는 로봇(100)이 보행할 수 있는 최소 보폭보다 변화된 보폭이 크도록 미리 설정된 값보다 작게 산출되야 한다. 변화된 보폭이 최소 보폭보다 작으면 발을 들어올리는 스윙(swing) 동작 시에 발이 지면에 닿아 보행이 불가능하기 때문이다. 즉, 스케일 팩터는 발을 들어올리는 최소 스윙(swing) 각도를 확보하기 위해 미리 설정된 값보다 작게 산출된다.
보행 주기는 표준 보행이 수행되는 시간으로서, 보행 주기를 단축하면 보행 속도가 증가하고, 보행 주기를 연장하면 보행 속도가 감소한다.
본 실시예는 보행 주기를 단축 또는 연장하여 보행 속도를 변화시키도록 한다.
보행 변화 팩터가 산출되면, 목표 보행 궤적 생성부(344)는 보행 변화 팩터와 기준 보행 궤적 사이의 연산을 수행하여 목표 보행 궤적을 생성한다(440).
즉, 목표 보행 궤적 생성부(344)는 로봇(100)의 현재 보행 상태에 적합한 보폭과 보행 속도를 다양하게 구현할 수 있는 목표 보행 궤적을 생성한다.
먼저, 보폭이 변화된 목표 보행 궤적을 생성하는 과정은 다음과 같다.
목표 보행 궤적 생성부(344)는 산출된 스케일 팩터와 기준 나트 포인트 사이의 연산을 수행한다. 스케일 팩터와 기준 나트 포인트 사이의 연산은 하기 <수학식 1>을 따른다.
Figure 112010084272536-pat00001
θd,i는 목표 나트 포인트이고, θi는 기준 나트 포인트이며, w는 스케일 팩터이고, i는 각 관절부를 의미한다. <수학식 1>과 같이 목표 나트 포인트(θd,i)는 기준 나트 포인트의 각도(θi)값에서 스케일 팩터(w)를 나눈 값으로 산출된다. 즉, 목표 나트 포인트는 기준 나트 포인트의 절대값(magnitude)을 변화시킨 값이다.
구체적으로, 스케일 팩터(w)를 증가시킬수록 보폭이 감소된 목표 나트 포인트가 산출되고, 스케일 팩터(w)를 감소시킬수록 보폭이 증가된 목표 나트 포인트가 산출된다.
한편, 스케일 팩터(w)는 <수학식 1>에서와 같이 미리 설정된 값(wc)보다 작게 한정되는데, 이는 발을 지면으로부터 들어올리는 최소 스윙(swing) 각도를 확보하기 위함이다. 미리 설정된 값(wc)은 실험을 통해 산출되며 메모리부(350)에 미리 저장된다.
이렇게 목표 나트 포인트가 소정의 산출식에 의해 산출되면, 목표 보행 궤적 생성부(344)는 산출된 목표 나트 포인트를 스플라인으로 부드럽게 연결하여 제어 목표인 목표 보행 궤적을 생성한다.
위와 같은 과정에 의해 보폭이 변화된 목표 보행 궤적은 도 10a와 같다. 도 10a를 참조하면, 기준 보행 궤적과 스케일 팩터(w1) 사이의 연산을 수행한 결과, 관절 각도의 최대값이 θ1에서 θ2로 변화된 것을 알 수 있다.
본 실시예는 위와 같이 보폭이 변화된 목표 보행 궤적의 생성 뿐만 아니라 보행 속도가 변화된 목표 보행 궤적의 생성이 가능한데, 이에 대한 설명은 도 10b와 함께 살펴본다.
목표 보행 궤적 생성부(344)는 기준 보행 궤적에서 표준 보행의 수행 시간인 보행 주기를 변화시킨다. 즉, 도 10b에서 보행 주기를 △t에서 △t'로 변화시킬 수 있다.
구체적으로, 보행 주기를 증가시키면 보행 속도가 감소하고, 반대로 보행 주기를 감소시키면 보행 속도가 증가하게 된다.
또한, 본 실시예는 도 10a 및 도 10b에서와 같이 보폭 또는 보행 속도를 변화시킬 뿐만 아니라 보폭과 보행 속도를 같이 변화시킴으로써 더욱 다양한 보행을 구현할 수 있다.
예컨대, 보행 주기를 증가시키고 스케일 팩터를 증가시키면 좁은 보폭으로 저속 보행을 구현하는 목표 보행 궤적이 생성되고, 보행 주기를 감소시키고, 스케일 팩터를 증가시키면 좁은 보폭으로 고속 보행을 구현하는 목표 보행 궤적이 생성될 수 있다.
또한, 본 실시예는 도 10a와 같이 일괄적인 스케일 팩터를 각 관절부에 적용할 뿐만 아니라 도 11과 같이 각 관절부별로 다른 스케일 팩터를 적용하여 보다 더 다양한 목표 보행 궤적을 생성할 수 있다.
즉, 고관절부(210), 무릎 관절부(220), 발목 관절부(230)마다 다른 값의 스케일 팩터를 산출하고, 산출된 스케일 팩터를 이용하여 목표 보행 궤적을 생성함으로써 다양한 형태의 보행을 구현할 수 있는 것이다.
위와 같은 과정에 의해 목표 보행 궤적이 생성되면, 제어 토크 산출부(345)는 생성된 목표 보행 궤적을 추종하는 제어 토크를 산출한다(450).
제어 토크 산출부(345)는 각 관절부별로 마련된 목표 보행 궤적을 추종하기 위한 제어 토크를 산출하는데, 이러한 제어 토크의 산출은 <수학식 2>인 PID(Proportional Integral Derivative controller) 방식을 따른다.
Figure 112010084272536-pat00002
<수학식 2>에서 τi는 매 제어 주기에서의 토크 값, θd, θ'd는 매 제어 주기에서의 목표 각도 및 목표 각속도, θc, θ'c는 매 제어 주기에서의 현재 각도 및 현재 각속도이다. kp,i와 kt,i 및 kd,i는 계수이고, 여기서 i는 각 관절을 의미하므로 각 관절마다 제어 토크를 구할 수 있다.
한편, 이러한 제어 토크의 산출은 매 제어 주기마다 이루어지고, 제어 주기는 1ms로 설정될 수 있다. 
제어 토크 산출부(345)에서 제어 토크를 산출하면, 서보 제어부(346)는 제어 토크를 해당하는 관절부(360)에 제공하고(460), 관절부(360)에 설치된 모터 등의 액츄에이터를 구동시킴으로써 목표 보행 궤적을 따라 로봇(100)이 다양하고 자연스러운 보행을 구현할 수 있게 한다.
도 12는 본 발명의 또 다른 실시예에 따른 보행 로봇의 제어방법을 도시한 동작 순서도이다.
먼저, 입력부(320)로부터 입력받은 인간의 보행 데이터로 각 관절부의 시간에 따른 각도 변화 정보를 메모리부(350)에 저장시킨다(510).
또한 메모리부(350)에 저장된 각 관절부의 시간에 따른 각도 변화 정보를 이용하여 로봇(100)의 기준 보행 궤적을 생성하고 이를 메모리부(350)에 저장시킨다(520).
구체적으로, 나트 포인트 추출부(341)는 미리 저장된 시간에 따른 각도 변화 정보로부터 기준 나트 포인트를 추출하고, 이를 기준 보행 궤적 생성부(342)에 전송한다. 기준 보행 궤적 생성부(342)는 전송받은 기준 나트 포인트를 스플라인으로 부드럽게 연결하여 표준 보행을 구현하는 로봇(100)의 기준 보행 궤적을 생성하여 메모리부(350)에 저장시킨다.
로봇(100)의 기준 보행 궤적이 생성되면, 보행 변화 팩터 산출부(343)는 보행 패턴별로 보폭을 변화시키기 위한 스케일 팩터와 보행 속도를 변화시키기 위한 보행 주기를 산출한다(530).
예컨대, 표준 보행에서 보폭을 감소시키는 제 1 보행 패턴으로 변화시키기 위한 스케일 팩터를 제 1 보행 패턴 정보와 함께 메모리부(350)에 저장할 수 있다. 또한 표준 보행에서 보폭을 감소시키고 보행 속도를 감소시키는 제 2 보행 패턴(좁은 보폭의 저속 보행)으로 변화시키기 위한 스케일 팩터와 보행 주기를 제 2 보행 패턴 정보와 함께 메모리부(350)에 저장할 수 있다. 또한 각 관절부별로 스케일 팩터를 다르게 적용하여 다양한 보행 모습을 구현할 수 있는 제 3 보행 패턴을 메모리부(350)에 저장할 수 있다.
즉, 보행 변화 팩터 산출부(343)는 다양한 보행 패턴 정보에 대응하는 보행 변화 팩터를 산출하고, 이를 보행 패턴 정보와 함께 메모리부(350)에 저장시킨다.
보행 변화 팩터가 산출되어 저장되면, 사용자 인터페이스부(310)는 사용자로부터 로봇(100)의 보행 패턴을 변화시키라는 명령을 입력받는다(540). 목표 보행 궤적 생성부(344)는 사용자 인터페이스부(310)로부터 입력받은 보행 패턴으로 변화시키기 위한 목표 보행 궤적을 생성한다(550).
예컨대, 사용자는 메모리부(350)에 미리 저장된 다양한 보행 패턴의 정보를 기초로 로봇(100)의 보행 패턴을 변경하라는 명령을 사용자 인터페이스부(310)로 입력할 수 있다.
이렇게 사용자 인터페이스부(310)로부터 제 1 보행 패턴에서 제 2 보행 패턴으로 변경하라는 명령을 입력받으면, 목표 보행 궤적 생성부(344)는 메모리부(350)에 저장된 제 2 보행 패턴에 대응하는 보행 변화 팩터를 리드하고, 보행 변화 팩터와 기준 보행 궤적 사이의 연산을 수행하여 목표 보행 궤적을 생성한다.
목표 보행 궤적이 생성되면, 제어 토크 산출부(345)는 생성된 목표 보행 궤적을 추종하는 제어 토크를 산출한다(560).
또한 서보 제어부(346)는 산출된 제어 토크를 해당 관절부(360)에 제공하고(570), 관절부(360)는 제공받은 제어 토크를 따라 모터 등의 액츄에이터를 구동시킴으로써 목표 보행 궤적을 추종하는 보행을 수행한다.
상술한 본 발명에 따른 보행 로봇 및 그 제어방법에 의하면 다양한 보행 패턴을 비교적 단순한 연산 과정으로 구현할 수 있다.
또한, 다양한 보행 패턴을 구현하는 목표 보행 궤적은 인간의 보행 패턴과 유사한 자연스러운 보행을 가능하게 한다. 목표 보행 궤적은 인간의 보행 데이터를 기초로 생성된 것으로서 인체 역학을 충실하게 반영한 것이기 때문이다.
또한, 본 발명은 FSM 제어 및 토크 서보 제어 기반의 보행을 수행함으로써 낮은 서보 게인으로 보행이 가능하며 에너지 소비를 줄일 수 있다.
또한, 낮은 서보 게인은 각 관절의 저강성을 가지게 하므로 주위 환경과의 충돌 시 충격을 감소시킬 수 있다.
또한, 무릎 펴기 보행이 가능한 인간형 보행을 구현하여 로봇의 인간 친화성을 향상시킬 수 있다.
310: 사용자 인터페이스부
320: 입력부
330: 감지부
340: 보행 제어부
350: 메모리부
360: 관절부

Claims (26)

  1. 보행 로봇의 각 다리에 마련되는 적어도 하나의 관절부를 포함하는 보행 로봇의 제어방법에 있어서,
    인간의 보행 데이터를 이용하여 상기 적어도 하나의 관절부에 대응하는 시간에 따른 각도 변화 정보를 미리 저장하고;
    상기 저장된 시간에 따른 각도 변화 정보로부터 기준 나트 포인트들을 추출하되, 각 기준 나트 포인트는 각 관절부의 각속도가 0(zero)인 피크 지점을 나타내고, 상기 추출된 기준 나트 포인트들을 이용하여 상기 보행 로봇의 기준 보행 궤적을 생성하고;
    상기 보행 로봇의 보행 패턴을 변화시키기 위한 보행 변화 팩터를 산출하되, 상기 보행 변화 팩터는 상기 보행 로봇의 보폭을 변화시키는 스케일 팩터(scale factor)를 포함하고;
    상기 생성된 기준 보행 궤적과 상기 산출된 보행 변화 팩터 사이의 연산을 수행하여 목표 보행 궤적을 생성하고;
    상기 생성된 목표 보행 궤적을 추종하는 제어 토크를 산출하고;
    상기 산출된 제어 토크를 상기 적어도 하나의 관절부에 전달하여 상기 보행 로봇의 보행을 제어하는 보행 로봇의 제어방법.
  2. 제1항에 있어서,
    상기 보행 변화 팩터는 상기 보행 로봇의 보행 속도를 변화시키는 보행 주기를 더 포함하는 보행 로봇의 제어방법.
  3. 제1항에 있어서,
    상기 목표 보행 궤적을 생성하는 것은:
    상기 기준 나트 포인트들과 상기 스케일 팩터 사이의 연산을 수행하여 목표 나트 포인트들을 산출하고;
    상기 산출된 목표 나트 포인트들을 스플라인으로 연결하여 상기 목표 보행 궤적을 생성하는 것인 보행 로봇의 제어방법.
  4. 제3항에 있어서,
    상기 목표 나트 포인트들을 산출하는 것은 상기 기준 나트 포인트들을 상기 스케일 팩터로 나누어 산출하는 것인 보행 로봇의 제어방법.
  5. 제1항에 있어서,
    상기 적어도 하나의 관절부는 고관절부, 무릎 관절부 및 발목 관절부를 포함하고,
    상기 스케일 팩터는 상기 고관절부, 상기 무릎 관절부 및 상기 발목 관절부 각각에 대해 산출되는 보행 로봇의 제어방법.
  6. 제1항에 있어서,
    상기 스케일 팩터는 상기 변화된 보폭이 상기 보행 로봇의 최소 보폭보다 크도록 산출되는 보행 로봇의 제어방법.
  7. 제1항에 있어서,
    상기 기준 보행 궤적을 생성하는 것은 상기 추출된 기준 나트 포인트들을 스플라인으로 연결하여 상기 기준 보행 궤적을 생성하는 것인 보행 로봇의 제어방법.
  8. 보행 로봇의 각 다리에 마련되는 적어도 하나의 관절부를 포함하는 보행 로봇의 제어방법에 있어서,
    인간의 보행 데이터를 이용하여 상기 적어도 하나의 관절부에 대응하는 시간에 따른 각도 변화 정보를 미리 저장하고;
    상기 저장된 시간에 따른 각도 변화 정보로부터 기준 나트 포인트들을 추출하되, 각 기준 나트 포인트는 각 관절부의 각속도가 0(zero)인 피크 지점을 나타내고, 상기 추출된 기준 나트 포인트들을 이용하여 상기 보행 로봇의 기준 보행 궤적을 생성하여 미리 저장하고;
    상기 보행 로봇의 보행 패턴을 변화시키기 위한 보행 변화 팩터들을 보행 패턴별로 산출하여 미리 저장하되, 상기 보행 변화 팩터들 각각은 상기 보행 로봇의 보폭을 변화시키는 스케일 팩터(scale factor)를 포함하고;
    사용자로부터 상기 보행 로봇의 보행 패턴을 제 1 보행 패턴에서 제 2 보행 패턴으로 변화시키라는 명령을 입력받고;
    상기 제 2 보행 패턴에 대응하는 보행 변화 팩터와 상기 기준 보행 궤적 사이의 연산을 수행하여 상기 제 2 보행 패턴으로 변화시키는 목표 보행 궤적을 생성하고;
    상기 생성된 목표 보행 궤적을 추종하는 제어 토크를 산출하고;
    상기 산출된 제어 토크를 상기 적어도 하나의 관절부에 전달하여 상기 보행 로봇의 보행을 제어하는 보행 로봇의 제어방법.
  9. 제8항에 있어서,
    상기 보행 변화 팩터들 각각은 상기 보행 로봇의 보행 속도를 변화시키는 보행 주기를 더 포함하는 보행 로봇의 제어방법.
  10. 제8항에 있어서,
    상기 목표 보행 궤적을 생성하는 것은:
    상기 기준 나트 포인트들과 상기 스케일 팩터 사이의 연산을 수행하여 목표 나트 포인트들을 산출하고;
    상기 산출된 목표 나트 포인트들을 스플라인으로 연결하여 상기 목표 보행 궤적을 생성하는 것인 보행 로봇의 제어방법.
  11. 제10항에 있어서,
    상기 목표 나트 포인트들을 산출하는 것은 상기 기준 나트 포인트들을 상기 스케일 팩터로 나누어 산출하는 것인 보행 로봇의 제어방법.
  12. 제8항에 있어서,
    상기 적어도 하나의 관절부는 고관절부, 무릎 관절부 및 발목 관절부를 포함하고,
    상기 스케일 팩터는 상기 고관절부, 상기 무릎 관절부 및 상기 발목 관절부 각각에 대해 산출되는 보행 로봇의 제어방법.
  13. 제8항에 있어서,
    상기 스케일 팩터는 상기 변화된 보폭이 상기 보행 로봇의 최소 보폭보다 크도록 산출되는 보행 로봇의 제어방법.
  14. 제8항에 있어서,
    상기 기준 보행 궤적을 생성하는 것은 상기 추출된 기준 나트 포인트들을 스플라인으로 연결하여 상기 기준 보행 궤적을 생성하는 것인 보행 로봇의 제어방법.
  15. 보행 로봇의 각 다리에 마련되는 적어도 하나의 관절부;
    인간의 보행 데이터를 이용하여 상기 적어도 하나의 관절부에 대응하는 시간에 따른 각도 변화 정보를 미리 저장하는 메모리부;
    상기 저장된 시간에 따른 각도 변화 정보로부터 기준 나트 포인트들을 추출하는 나트 포인트 추출부, 각 기준 나트 포인트는 각 관절부의 각속도가 0(zero)인 피크 지점을 나타내고;
    상기 추출된 기준 나트 포인트들을 이용하여 상기 보행 로봇의 기준 보행 궤적을 생성하는 기준 보행 궤적 생성부;
    상기 보행 로봇의 보행 패턴을 변화시키기 위한 보행 변화 팩터를 산출하는 보행 변화 팩터 산출부, 상기 보행 변화 팩터는 상기 보행 로봇의 보폭을 변화시키는 스케일 팩터(scale factor)를 포함하고;
    상기 생성된 기준 보행 궤적과 상기 산출된 보행 변화 팩터 사이의 연산을 수행하여 목표 보행 궤적을 생성하는 목표 보행 궤적 생성부;
    상기 생성된 목표 보행 궤적을 추종하는 제어 토크를 산출하는 제어 토크 산출부; 및
    상기 산출된 제어 토크를 상기 적어도 하나의 관절부에 전달하여 상기 보행 로봇의 보행을 제어하는 서보 제어부를 포함하는 보행 로봇.
  16. 제15항에 있어서,
    상기 보행 변화 팩터는 상기 보행 로봇의 보행 속도를 변화시키는 보행 주기를 더 포함하는 보행 로봇.
  17. 제15항에 있어서,
    상기 목표 보행 궤적 생성부는 상기 기준 나트 포인트들과 상기 스케일 팩터 사이의 연산을 수행하여 목표 나트 포인트들을 산출하고, 상기 산출된 목표 나트 포인트들을 스플라인으로 연결하여 상기 목표 보행 궤적을 생성하는 보행 로봇.
  18. 제17항에 있어서,
    상기 목표 보행 궤적 생성부는 상기 기준 나트 포인트들을 상기 스케일 팩터로 나누어 상기 목표 나트 포인트들을 산출하는 보행 로봇.
  19. 제15항에 있어서,
    상기 적어도 하나의 관절부는 고관절부, 무릎 관절부 및 발목 관절부를 포함하고,
    상기 보행 변화 팩터 산출부는 상기 고관절부, 상기 무릎 관절부 및 상기 발목 관절부 각각의 상기 스케일 팩터를 산출하는 보행 로봇.
  20. 제15항에 있어서,
    상기 보행 변화 팩터 산출부는 상기 변화된 보폭이 상기 보행 로봇의 최소 보폭보다 크도록 상기 스케일 팩터를 산출하는 보행 로봇.
  21. 사용자로부터 보행 로봇의 보행 패턴을 제 1 보행 패턴에서 제 2 보행 패턴으로 변화시키라는 명령을 입력받는 사용자 인터페이스부;
    상기 보행 로봇의 각 다리에 마련되는 적어도 하나의 관절부;
    인간의 보행 데이터를 이용하여 상기 적어도 하나의 관절부에 대응하는 시간에 따른 각도 변화 정보를 저장하는 메모리부;
    상기 저장된 시간에 따른 각도 변화 정보로부터 기준 나트 포인트들을 추출하는 나트 포인트 추출부, 각 기준 나트 포인트는 각 관절부의 각속도가 0(zero)인 피크 지점을 나타내고;
    상기 추출된 기준 나트 포인트들을 이용하여 상기 보행 로봇의 기준 보행 궤적을 생성하고, 상기 생성된 기준 보행 궤적을 상기 메모리부에 저장하는 기준 보행 궤적 생성부;
    상기 보행 로봇의 보행 패턴을 변화시키기 위한 보행 변화 팩터들을 보행 패턴별로 산출하여 상기 메모리부에 저장하는 보행 변화 팩터 산출부, 상기 보행 변화 팩터들 각각은 상기 보행 로봇의 보폭을 변화시키는 스케일 팩터(scale factor)를 포함하고;
    상기 제 2 보행 패턴에 대응하는 보행 변화 팩터와 상기 기준 보행 궤적 사이의 연산을 수행하여 상기 제 2 보행 패턴으로 변화시키는 목표 보행 궤적을 생성하는 목표 보행 궤적 생성부;
    상기 생성된 목표 보행 궤적을 추종하는 제어 토크를 산출하는 제어 토크 산출부; 및
    상기 산출된 제어 토크를 상기 적어도 하나의 관절부에 전달하여 상기 보행 로봇의 보행을 제어하는 서보 제어부를 포함하는 보행 로봇.
  22. 제21항에 있어서,
    상기 보행 변화 팩터들 각각은 상기 보행 로봇의 보행 속도를 변화시키는 보행 주기를 포함하는 보행 로봇.
  23. 제21항에 있어서,
    상기 적어도 하나의 관절부는 고관절부, 무릎 관절부 및 발목 관절부를 포함하고,
    상기 보행 변화 팩터 산출부는 상기 고관절부, 상기 무릎 관절부 및 상기 발목 관절부 각각의 상기 스케일 팩터를 산출하는 보행 로봇.
  24. 제21항에 있어서,
    상기 보행 변화 팩터 산출부는 상기 변화된 보폭이 상기 보행 로봇의 최소 보폭보다 크도록 상기 스케일 팩터를 산출하는 보행 로봇.
  25. 제21항에 있어서,
    상기 목표 보행 궤적 생성부는 상기 기준 나트 포인트들과 상기 스케일 팩터 사이의 연산을 수행하여 목표 나트 포인트들을 산출하고, 상기 산출된 목표 나트 포인트들을 스플라인으로 연결하여 상기 목표 보행 궤적을 생성하는 보행 로봇.
  26. 제25항에 있어서,
    상기 목표 보행 궤적 생성부는 상기 기준 나트 포인트들을 상기 스케일 팩터로 나누어 상기 목표 나트 포인트들을 산출하는 보행 로봇.
KR1020100131259A 2010-12-21 2010-12-21 보행 로봇 및 그 제어방법 KR101809972B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100131259A KR101809972B1 (ko) 2010-12-21 2010-12-21 보행 로봇 및 그 제어방법
US13/279,633 US8958909B2 (en) 2010-12-21 2011-10-24 Walking robot and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100131259A KR101809972B1 (ko) 2010-12-21 2010-12-21 보행 로봇 및 그 제어방법

Publications (2)

Publication Number Publication Date
KR20120069920A KR20120069920A (ko) 2012-06-29
KR101809972B1 true KR101809972B1 (ko) 2017-12-18

Family

ID=46235415

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100131259A KR101809972B1 (ko) 2010-12-21 2010-12-21 보행 로봇 및 그 제어방법

Country Status (2)

Country Link
US (1) US8958909B2 (ko)
KR (1) KR101809972B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101732901B1 (ko) * 2010-10-05 2017-05-08 삼성전자주식회사 보행 로봇 및 그 제어방법
US9618937B1 (en) 2014-08-25 2017-04-11 Google Inc. Slip detection using robotic limbs
US9387588B1 (en) * 2014-08-25 2016-07-12 Google Inc. Handling gait disturbances with asynchronous timing
US10081098B1 (en) 2014-08-25 2018-09-25 Boston Dynamics, Inc. Generalized coordinate surrogates for integrated estimation and control
JP6228097B2 (ja) * 2014-10-06 2017-11-08 本田技研工業株式会社 移動ロボット
KR102342072B1 (ko) * 2014-10-14 2021-12-22 삼성전자주식회사 보행 보조를 제어하기 위한 장치 및 그 방법
US9446518B1 (en) 2014-11-11 2016-09-20 Google Inc. Leg collision avoidance in a robotic device
US9499218B1 (en) 2014-12-30 2016-11-22 Google Inc. Mechanically-timed footsteps for a robotic device
US9594377B1 (en) * 2015-05-12 2017-03-14 Google Inc. Auto-height swing adjustment
US9586316B1 (en) 2015-09-15 2017-03-07 Google Inc. Determination of robotic step path
US9789919B1 (en) 2016-03-22 2017-10-17 Google Inc. Mitigating sensor noise in legged robots
SG11201808977RA (en) * 2016-04-29 2018-11-29 Softbank Robotics Europe A mobile robot with enhanced balanced motion and behavior capabilities
CA3040636A1 (en) * 2016-10-20 2018-04-26 Mitsubishi Electric Corporation Three-rotational-degree-of-freedom connection mechanism, robot, robot arm, and robot hand
CN107273850B (zh) * 2017-06-15 2021-06-11 上海工程技术大学 一种基于移动机器人的自主跟随方法
JP7024235B2 (ja) * 2017-07-19 2022-02-24 オムロン株式会社 制御装置、制御装置の制御方法、情報処理プログラム、および記録媒体
CN111422275A (zh) * 2020-03-13 2020-07-17 之江实验室 一种电液混合驱动的运动模式可重构足式机器人
KR102665995B1 (ko) * 2024-01-21 2024-05-14 코스모로보틱스 주식회사 안전보행 기능을 갖는 외골격 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100856824B1 (ko) * 2007-07-23 2008-09-05 재단법인서울대학교산학협력재단 캐릭터 시뮬레이션 방법 및 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0104995D0 (en) * 2001-02-28 2001-04-18 Isis Innovation Artificial morpho-functional multiped and motion controller therefor
KR101493384B1 (ko) * 2008-12-22 2015-02-13 삼성전자 주식회사 로봇 및 그 균형 제어방법
KR101549817B1 (ko) * 2009-01-22 2015-09-04 삼성전자 주식회사 로봇의 보행 제어장치 및 그 방법
KR101687628B1 (ko) 2010-01-12 2016-12-21 삼성전자주식회사 로봇의 보행 제어 장치 및 그 제어 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100856824B1 (ko) * 2007-07-23 2008-09-05 재단법인서울대학교산학협력재단 캐릭터 시뮬레이션 방법 및 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ACM Transactions on Graphics. ACM. 2007.07., Vol 26, No 3, Article 105*

Also Published As

Publication number Publication date
US20120158175A1 (en) 2012-06-21
KR20120069920A (ko) 2012-06-29
US8958909B2 (en) 2015-02-17

Similar Documents

Publication Publication Date Title
KR101809972B1 (ko) 보행 로봇 및 그 제어방법
EP2347868B1 (en) Humanoid robot and walking control method thereof
KR101985790B1 (ko) 보행 로봇 및 그 제어 방법
EP2347867B1 (en) Walking control apparatus of robot and method of controlling the same
KR101732901B1 (ko) 보행 로봇 및 그 제어방법
KR101687630B1 (ko) 보행 로봇 및 그 균형 제어 방법
KR101687629B1 (ko) 인간형 로봇 및 그 보행 제어방법
JP5607886B2 (ja) 歩行ロボット及びその制御方法
KR101687628B1 (ko) 로봇의 보행 제어 장치 및 그 제어 방법
KR20130068694A (ko) 보행 로봇 및 그 제어 방법
KR101549817B1 (ko) 로봇의 보행 제어장치 및 그 방법
KR20130049029A (ko) 보행 로봇 및 그 제어 방법
EP2426037B1 (en) Walking robot and control method thereof
KR20130063230A (ko) 보행 로봇 및 그 제어 방법
EP2343161A1 (en) Walking robot and method of controlling the same
KR20120069333A (ko) 로봇의 보행 제어 장치 및 그 제어 방법
KR101766755B1 (ko) 보행 로봇 및 그 제어방법
KR20120069924A (ko) 보행 로봇 및 그 제어 방법
KR101760883B1 (ko) 로봇 및 그 제어방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant