URDF로부터 DH 파라미터를 구성하는 일반적인 방법
CopyrightⓒKROS
Abstract
This paper introduced how to construct Denavit-Hartenberg (DH) parameters from the Unified Robot Description Format (URDF). URDF is convenient for describing a robot even though the robot is very complex. On the other hand, DH convention is not an easy notation for many novices who want to describe a robot. Therefore, most vendors provide URDF and users prefer to use URDF to describe a robot. However, some controllers or algorithms are based on DH parameters to perform kinematics, dynamics, control, etc. To connect URDF and DH parameters, we present a three-step approach to construct DH parameters from URDF. The first step is to define the joint axis for constructing DH parameters. The second step is constructing DH parameters to define joint character. The final step is constructing DH parameters to define the coordinate frame of the child link. This approach is based on intuitive vector calculation and guarantees the uniqueness of DH parameters. To verify our approach, we applied our approach to a simple one-link robot, a manipulator with 6 DOF, and a quadruped robot with 3 DOF per leg. We verified that our approach worked well based on forward kinematic results.
Keywords:
Denavit-Hartenberg (DH) Parameters, Unified Robot Description Format (URDF), Robot Manipulator1. 서 론
Unified Robot Description Format (URDF)는 eXtensible Markup Language (XML)를 이용하여 로봇의 링크와 관절 정보 등을 기술하는 형식으로 최근에 많이 사용되고 있는 형식이다[1]. URDF는 2개의 좌표계의 관계를 6개의 파라미터를 사용하여 정의하고 있으며 3차원 벡터로 정의된 임의 방향의 관절축을 정의할 수 있다.
한편 로봇공학 분야에서는 지난 수십 년간 기구학 등을 계산하기 위해 Denavit-Hartenberg (DH) 파라미터 표시방법을 사용해왔다[2]. DH 표시방법은 4개의 파라미터(관절축의 회전각도(θi), 관절축 방향 원점의 오프셋(di), 링크의 길이(ai), 그리고 관절축의 비틀림각(αi))와 z축 관절을 이용하여 두 좌표계(coordinate frame) 사이의 관계를 정의한다[3]. 삼차원 공간에서 위치와 방향을 정의하기 위한 6개의 자유도를 단 4개의 파라미터로 정의하기 때문에 로봇을 간결하게 기술할 수 있는 장점이 있다.
URDF와 DH 파라미터 두 방식 모두 로봇 기구학을 기술하는데 사용될 수 있으나 편의성 측면에서 차이점이 존재한다. 먼저 DH 파라미터 표시방법은 2개의 구속조건(i.e. DH 조건)이 필요하여[4] 주어진 로봇에 제한적으로 좌표계를 할당해야 한다. 특정 경우에는 구속조건을 만족시키기 위해 좌표계를 로봇 바디 외부에 배치하게 되므로 직관적이지 않은 문제가 있으며, 때로는 기구학적 정보가 필요한 위치에 좌표계를 지정하지 못하여 따로 좌표계를 지정하여 계산해야하는 문제가 있다. 그에 반해 URDF는 DH 표시 방법과 달리 링크의 좌표계를 지정하는데 아무런 제한 조건이 없으며 관절의 축 방향 또한 제한이 없다. 결과적으로 로봇 공학에 익숙하지 않은 사용자라도 기구학적 특성을 알고 싶은 위치에 좌표계를 지정하고 관절 종류와 축 방향을 지정하여 용이하게 로봇을 URDF로 기술할 수 있다. 뿐만 아니라 사용자가 3D CAD 프로그램에서 설계한 로봇에 링크 좌표계와 관절축을 지정하여 자동으로 URDF를 생성할 수도 있다[5].
사용자 입장에서는 URDF는 DH 파라미터 표시방법에 비해 직관적이고 편리하게 로봇 기구학을 기술 할 수 있는 방법이다. 그러나 알고리즘 호환성, 소프트웨어 지원, 팀 협동, 단순화 및 계산 효율성 등의 이유 때문에 DH 파라미터로 로봇을 기술할 필요가 있다. DH 파라미터 표시방법은 로봇공학에서 오랫동안 활용되어 로봇 공학자들에 익숙하고, 많은 연구자들이 DH 파라미터에 기반하여 기구학, 동역학 라이브러리를 만들고 역기구학의 폐쇄형 해 존재 여부 판단[6], 캘리브레이션 알고리즘[7] 등 방대한 자료를 이미 구축하였다. 이런 자료를 활용하려면 사용자 편의성이 높은 URDF로 로봇을 기술하고, 이 기술된 정보를 DH 파라미터 기반으로 재구성 해야한다.
URDF를 DH 파라미터로 재구성하는 작업은 시간이 많이 드는 작업이며, 만약 이 두가지 방법에 모두 익숙하지 않다면 변경 작업을 할 때 치명적 오류를 범할 수 있다. 따라서 DH 파라미터를 활용하고 있는 라이브러리나 제어시스템에 3D CAD 등에서 용이하게 생성 가능한 URDF를 적용 할 수 있도록 URDF 파일에서 DH 파라미터를 자동으로 얻는 것이 필요하다.
URDF에서 DH 파라미터를 구성하는 일은 쉽지 않다. URDF의 좌표계를 DH 조건에 맞게 재작성해야 하며, 로봇의 자유도가 클수록 URDF에서 DH 파라미터를 구성하는 일은 복잡해지고 많은 시간이 소요된다. 또한 임의 방향의 관절축이 이미 선언되었다면 간단한 구성을 가진 로봇이라도 그에 대응하는 DH 파라미터를 구성하는 일은 간단하지 않다.
URDF에서 DH 파라미터를 구성하는 기존 연구를 살펴보면 URDF에서 할당된 좌표계 대신 DH 조건을 만족하는 다른 좌표계를 도입하여 4개의 DH 파라미터를 구한다[8]. 즉 원본 좌표계의 정보를 구하지 못한다. 또한 공개된 변환 프로그램은 DH 조건이 만족된 URDF를 요구하기 때문에[9] DH 조건을 만족하지 않는 대부분의 URDF에서는 DH 파라미터를 얻을 수 없다[10]. 따라서, 일반적인 URDF 파일로부터 DH 조건을 만족하지 않더라도 자동으로 DH 파라미터를 얻을 수 있어야 한다.
본 논문에서는 URDF 파일에서 DH 조건이 만족되지 않아도 DH 파라미터를 구성할 수 있는 방법을 제안한다. 2장에서는 DH 파라미터 구성 방법을 3단계로 나누어 설명한다. 3장에서는 실제 DH 조건을 만족하지 않는 URDF에서도 DH 파라미터를 구성할 수 있음을 보이고 정기구학 계산을 수행하여 제안한 방법의 타당성을 확인한다. 본 논문의 결론은 4장에서 서술한다.
2. URDF→DH 파라미터 구성 방법
2.1 문제 정의
URDF에서 DH 파라미터를 구성하기 위해는 임의 방향의 관절 축에 의한 두 좌표계 사이의 관계를 찾아야 한다. 이를 위해 [Fig. 1]을 바탕으로 임의 방향의 관절 axis ji에 대하여 좌표계 i와 좌표계 i+1의 관계를 3 단계를 거쳐 확인하며, 좌표계 i는 {i}로 표기하였다. 본 논문에서 사용된 표기법은 [Table 1]에 정리하였다.
2.2 Step 1: 관절 축 정의를 위한 DH 파라미터 구성
첫번째 단계로 URDF에서 관절 축 ji는 임의의 방향을 가질 수 있기 때문에 ji를 z축으로 가지는 새로운 좌표계가 필요한데 [Fig. 2]에 이 과정을 나타내었다. 먼저 xit1을 도입하였는데 xit1는 관절 축 ji와 {i}의 z축의 벡터곱(cross product)로 정의하였다. 만약 ji가 고정 관절로 0-벡터라면 {i}의 z 축을 이용하여 ji를 정의할 수 있다. xit1가 구해지면 DH 파라미터 중 α와 θ를 구할 수 있게 된다. 이때 조인트 오프셋과 링크 길이가 존재하지 않기 때문에 d와 a는 0이 된다. xit1의 수식과, 부호를 고려한 αi1와 θi1의 수식은 다음과 같다.
(1) |
(2) |
(3) |
(4) |
(5) |
결과적으로 임의 방향을 가지는 관절 축을 표현하기 위해서 2개의 파라미터가 필요하며 제시된 수식을 통해 찾을 수 있다. 이러한 표현 방법은 구면좌표계(spherical coordinate system)의 표현과 동일하다.
2.3 Step 2: 관절 특성 DH 파라미터 구성
관절 축을 z축으로 가지는 새로운 좌표계 {it1}을 지정하게 되면 이제는 관절 축의 특성(e.g. 회전(rotation), 병진(translation) etc.)을 표현하는 관계를 찾을 수 있게 된다[Fig. 3]. 그러나 {i+1}의 x축, xi+1 이 ji과 수직이고 교차해야만(i.e. DH 조건) 직접적으로 DH 파라미터를 찾을 수 있다. 그렇지 않을 경우 {it1}를 생성한 경우와 동일하게 또다른 {it2}를 중간에 지정해야 하며, 이때 3가지 경우의 수가 존재한다.
첫번째 경우는 가장 일반적인 경우로 관절 축 ji와 zi+1이 비스듬한(skew)인 경우이다[Fig. 4]. 두 직선이 서로 평행(parallel) 하지도 교차(intersecting) 하지도 않은 경우, 두 직선과 동시에 수직인 유일한(unique) 직선이 존재한다[11]. 이 직선은 유일하기 때문에 유일한 DH 파라미터 을 제공할 수 있다. 이 직선을 찾기 위해서는 관절 축 ji와 zi+1이 만들어낸 두 직선과 동시에 수직으로 만나는 직선의 위치 벡터(oit1, oit2), 2개를 찾아내야 한다. 관절 축 ji와 zi+1가 만들어내는 두 직선의 방정식은 다음과 같다.
(6) |
(7) |
oit1, oit2가 각각 r1, r2위에 있는 위치 벡터들이므로 식 (6,7)과 동시에 수직으로 만나는 조건을 만족시킬 수 있는 λ1, λ2를 찾으면 oit1, oit2는 식 (8,9)에 의해 결정된다.
(8) |
(9) |
두 직선과 수직으로 만나는 직선의 조각, r3는 oit2 - oit1을 이용하여 구할 수 있다(식 (10)).
(10) |
r3를 구하게 되면 결과적으로 xit2를 구할 수 있게 된다(식 (11)). r3가 r1, r2와 각각 수직인 조건을 이용하여 두개의 구속 조건, 식 (12,13)를 구할 수 있다. 식 (12,13)을 λ1, λ2로 묶어 정리하면 연립 선형 방정식(simultaneous linear equation), 식(14)을 구할 수 있다. 이를 이용하여 식 (15)에서 λ1, λ2를 찾아 내어 oit1, oit2를 구할 수 있다.
(11) |
(12) |
(13) |
(14) |
(15) |
식 (15)에서 역행렬(inverse matrix)이 존재하기 위해서는 행렬식(determinant)이 0이 아니어야 하며, 다시 말하면 ji • zi+1 ≠ 1의 조건을 만족하면 되는데 이 조건은 ji와 zi+1가 평행 하지 않다는 뜻이다. 위 식은 비스듬한 조건일 때 사용하므로 역행렬은 항상 존재한다.
[Fig. 4]에서 4개의 DH 파라미터를 시각적으로 표현하였으며 이들을 구하는 식은 다음과 같다.
(16) |
(17) |
(18) |
(19) |
(20) |
(21) |
식 (15)은 ji와 zi+1가 평행하면(i.e. ji × zi+1 = 0) 사용이 불가능하므로 다른 접근 방법이 필요하다. [Fig. 5]에서 이러한 경우를 보여주고 있다. ji와 zi+1가 평행할 경우 두 직선을 유일하게 연결해주는 공통 법선(i.e. common normal line)이 없으므로 임의로 특정한 직선을 지정해야 한다. 이를 위하여 oit1을 oi로 사용하여 유일한 직선을 설정하였다. 이러한 조건에서 d = 0이 된다. 또한 ji와 zi+1이 평행하므로 α= 0이 된다. 나머지 a와 θ를 구하기 위해 필요하는 식들은 아래와 같다.
(22) |
(23) |
(24) |
(25) |
(26) |
(27) |
(28) |
2.3.2.1 Special case: Coincidence lines
평행 보다 더 특수한 경우로, ji와 zi+1이 같은 직선 상에 놓여져 있을 수 있다(i.e. ji × • (oi+1 - oi) = 0) [Fig. 6]. 이 경우 DH 파라미터를 전부 0으로 두어 다음 단계를 위한 {it2}를 {it1}과 동일하게 만들었다.
(29) |
(30) |
ji와 zi+1가 교차하는 경우(i.e. (ji × zi+1) • (oi+1 - oi) = 0) [Fig. 7]에도 유일하게 결정되는 하나의 점을 찾을 수 있으므로 이 점에서 새로운 {it2}를 결정하여 DH 파라미터를 결정할 수 있다. 두 라인 r1, r2이 교차할 경우 식(6)과 식(7)이 같은 값을 가지도록 만드는 λ1, λ2를 찾아 교차점을 찾을 수 있다. 또한 교차하는 경우 링크 길이, a는 항상 0이 된다. DH 파라미터를 구하기 위한 식들은 다음과 같다.
(31) |
(32) |
(33) |
(34) |
(35) |
(36) |
식 (34)가 여분(redundant)하게 보일 수 있으나(x, y, z 축 3개의 식) 두 선이 교차하는 경우 자유도를 하나 잃기 때문에 풀 랭크 행렬(full rank matrix)가 된다. 또한 행렬식이 0인 경우(i.e. ji × zi+1 = 0, 평행조건)는 교차하는 경우에서는 발생하지 않으므로 항상 역행렬이 존재하며 유일해(unique solution)가 존재한다. 결과적으로 DH 파라미터 들을 구하기 위한 식들은 다음과 같다.
(37) |
(38) |
(39) |
(40) |
(41) |
2.4 Step 3: 자식 링크 DH 파라미터 구성
Step 2를 통해 {it2}는 {i+1}과 동일 방향의 coaxial z축을 가지게 된다[Fig. 8]. 즉 링크 길이와 비틀림 각은 존재하지 않고 오로지 조인트 각과 링크 오프셋 만을 가진다. DH 파라미터를 구하기 위한 식들은 다음과 같다.
(42) |
(43) |
(44) |
2.5 요약
[Fig. 9]에서 모든 단계를 합친 그림을 볼 수 있다. 각 단계에서 어떤 벡터가 DH 파라미터를 구하기 위해 구성되고 또한 결과로 어떤 DH 파라미터가 계산되는지 [Fig. 10]에서 확인할 수 있다. 결론적으로 {i}와 {i+1}의 관계는 총 8개의 DH 파라미터로 결정이 될 수 있다. 또한 중간 더미 좌표계, {it1}과 {it2} 사이에서만 관절 변수가 도입이 되며 나머지 관계들, {i}와 {it1}, {it2} 와 {i+1}은 고정 관절로 변수가 없는 동차행렬변환(homogeneous transformation matrix)를 가지게 된다[Fig. 11]. 이러한 접근 방법을 이용하게 되면 URDF에서 정의된 부모 링크와 자식 링크 사이의 관계를 DH 파라미터로 구성할 수 있다.
3. DH 파라미터 생성 결과
3.1 시험 환경
Chapter 2에서 설명한 DH 파라미터 구성 방법을 사용하여 URDF에서 DH 파라미터를 구성해 보았다. 이를 위해 DH 파라미터로 직접적으로 표현할 수 없는 3가지 로봇의 URDF를 사용하였다(Case 1: 1축 링크 로봇, Case 2 : 6축 로봇 Neuromeka사의 Indy7, Case 3 : Unitree의 사족보행로봇 GO1). 또한 구성된 DH 파라미터의 타당성을 확인하기 위하여 말단장치(end effector)의 정기구학 결과를 비교하였다. 참고로 각 단계에서 구한 DH 파라미터가 전부 0일 경우, 동차행렬변환이 단위 행렬(identity matrix)이 되므로 DH 파라미터 결과에 표시하지 않았다. 모든 결과는 MATLAB Robotics System Toolbox을 사용하여 시각화 하였다.
3.2 시험 결과
[Table 2]와 [Fig. 12]에 보여준 URDF로 기술된 1축 로봇은 기존의 DH 파라미터 표시방법을 사용할 경우 로봇 바디 외부에 좌표계가 설정된다[Fig. 12]. 결과적으로 기존 DH 파라미터를 사용할 경우 직관적이지 못하며 로봇 말단의 위치를 확인 할 수 없는 문제가 존재한다. 본 논문에서 제안한 방법을 사용하면 이러한 문제를 해결할 수 있다. DH 파라미터를 구성한 결과는 [Table 3]과 [Fig. 13]에서 확인할 수 있다. 주어진 관절 궤도(trajectory)([Fig. 14(a)])에 대해서 DH 파라미터 표시 방법과 URDF 방식으로 계산한 말단 장치의 궤적이 동일함을 [Fig. 14]과 [Fig. 15]에서 확인할 수 있었다.
Indy7의 URDF 파일은 ㈜뉴로메카에서 공개한 파일을 사용하였다[12]. 또한 URDF에서 베이스 링크의 병진(translation)을 수행하여 베이스의 위치를 공간상 임의의 위치에 놓았을 때도 DH 파라미터를 구할 수 있음을 보이고자 하였다. [Table 4]가 Indy7의 URDF 정보이며, 관절 축은 전부 z축으로 설정되어 있으나 DH 조건이 지켜져 있지 않아 직접적으로 DH 파라미터를 찾아낼 수 없다. URDF가 시각화된 [Fig. 16]에서 x axis가 전 단계 z axis와 만나지 않아 DH 조건이 지켜지지 않음을 확인할 수 있다.
Indy7의 URDF에서 DH 파라미터를 구성한 결과는 [Table 5]에서 확인 가능하다. 또한 DH 파라미터를 이용하여 표현된 로봇은 [Fig. 17], [Fig. 18]에서 확인 가능하다.
DH 파라미터로 표현된 로봇을 확인하면 URDF에서 수행된 베이스 링크, 링크 0의 병진이 제대로 수행 되었음을 확인 할 수 있었고 URDF와 동일한 위치에 좌표계가 생성된 것을 [Fig. 19]을 통해 확인 할 수 있다.
또한 [Fig. 20]에서 DH 파라미터와 URDF로 만들어진 로봇들이 주어진 관절 궤도([Fig. 20(a)])에 대해서 동일한 말단장치 궤적를 가진다는 것을 확인 했으며 [Fig. 21]에 나타낸 3차원 공간에서도 동일함을 확인할 수 있었다.
GO1의 URDF 파일은 Unitree에서 공개한 파일을 사용하였다[13]. 사족보행로봇은 몸통을 기준으로 4개의 다리와 센서들이 부착되어 있는 형식으로 구성되어 있다[Fig. 22]. 4개 다리 모두 동일한 구조이므로 앞쪽 왼쪽 다리만 확인한다.
GO1의 URDF는 병진만 이용해 좌표계를 배치하여 직관적으로 이해할 수 있으나, 관절 축이 z축이 아니라 x축이나 y축으로 설정해 둔 것을 확인할 수 있다[Table 6][Fig. 23]. 즉 DH 파라미터를 이용하여 직접적으로 표현이 불가능하다.
GO1의 URDF에서 DH 파라미터를 구성한 결과는 [Table 7]에서 확인 가능하다. 또한 DH 파라미터를 이용하여 표현된 로봇은 [Fig. 24]에서 확인 가능하다.
또한 [Fig. 25]에서 DH 파라미터와 URDF로 만들어진 로봇들이 주어진 관절 궤도([Fig. 25(a)])에 대해서 동일한 말단장치 궤적을 가진다는 것을 확인하였다[Fig. 26].
4. 결 론
본 논문에서는 URDF에서 DH 파라미터를 구성하는 체계적이고 일반적인 방법을 제안하였다. 다양한 형상의 로봇에 대해 URDF를 이용하여 얻은 정기구학 결과와, 제안하는 방법을 통하여 자동으로 생성된 DH 파라미터를 통하여 구한 정기구학 결과가 동일함을 확인하였다. 본 논문에서 제안하는 방법을 이용하면 DH 조건을 만족하지 않는 URDF 파일로부터도 DH 파라미터를 구할 수 있다는 점에서 의미를 가진다.
Acknowledgments
This work (research) was supported by ITECH R&D program of MOTIE/KEIT. (Project No. 20014398 Development of a kinematically versatile, easy-to-use, safety-supported, AI-integrable, and high speed (>=5kHz) robot controller)
References
- I. Sucan, J. Kay, urdf, ROS Wiki, [Online], https://wiki.ros.org/urdf, , Accessed: Oct. 07, 2022.
- J. J. Craig, Introduction to Robotics : Mechanics and Control, 3rd, Pearson/Prentice Hall, 2005, [Online], https://books.google.co.kr/books?id=MqMeAQAAIAAJ, .
- J. Denavit and R. S. Hartenberg, “A Kinematic Notation for Lower-Pair Mechanisms Based on Matrices,” Journal of Applied Mechanics, vol. 22, no. 2, pp. 215–221, Jun., 2021. [https://doi.org/10.1115/1.4011045]
- M. W. Spong, S. Hutchinson, and M. Vidyasagar, Robot Modeling and Control, 1st, Wiley, 2005, [Online], https://www.amazon.com/exec/obidos/tg/detail/-/0471649902/qid=1127861838/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/104-3105527-1036767?v=glance&s=books&n=507846, .
- ros/solidworks_urdf_exporter, [Online], https://github.com/ros/solidworks_urdf_exporter, , Accessed: Nov. 09, 2022.
- W. Shanda, L. Xiao, L. Qingsheng, and H. Baoling, “Existence Conditions and General Solutions of Closed-form Inverse Kinematics for Revolute Serial Robots,” applied sciences, vol. 9, no. 20, Oct, 2019. [https://doi.org/10.3390/app9204365]
- T. Zhang, L. Du, and X. Dai, “Test of robot distance error and compensation of kinematic full parameters,” Advances in Mechanical Engineering, Jan., 2014. [https://doi.org/10.1155/2014/810684]
- J. He, M. Zhang, F. Xu, Q. Liu, and H. Li, “A Model Conversion Algorithm from URDF to DH for Camera Robot,” Culture-Oriented Science and Technology (CoST), Lanzhou, China, 2022. [https://doi.org/10.1109/CoST57098.2022.00037]
- mcevoyandy/urdf_to_dh, [Online], https://github.com/mcevoyandy/urdf_to_dh, , Accessed: Oct. 07, 2022.
- P. Corke, Understanding URDF with MATLAB, [Online], https://petercorke.com/wp-admin/admin-ajax.php?juwpfisadmin=false&action=wpfd&task=file.download&wpfd_category_id=20&wpfd_file_id=1059&token=&preview=1, , Accessed: Oct. 05, 2022.
- G. A. Korn and T. M. Korn, Mathematical Handbook for Scientists and Engineers: Definitions, Theorems, and Formulas for Reference and Review, Courier Corporation, 2000, [Online], https://books.google.co.kr/books?id=xUQc0RZhQnAC, .
- neuromeka-robotics/indy-ros, [Online], https://github.com/neuromeka-robotics/indy-ros, , Accessed: Oct. 05, 2022.
- Unitree Robotics, [Online], https://github.com/unitreerobotics, , Accessed: Oct. 13, 2022.
2013 한국항공대학교 항공우주기계공학과(학사)
2015 대구경북과학기술원 로봇공학과(석사)
2022 대구경북과학기술원 로봇및기계전자공학과(박사)
2022~현재 한국로봇융합연구원 선임연구원
관심분야: Robotic Manipulation
2013 대구경북과학기술원 로봇공학과(석사)
2019 대구경북과학기술원 로봇공학과(공학박사)
2019~현재 한국로봇융합연구원 선임연구원
관심분야: 로보틱스 및 어플리케이션
2002년 한국과학기술원 기계공학과(학사)
2004년 한국과학기술원 기계공학과(석사)
2011년~2018년 로보스타 부장
2018년~현재 한국로봇융합연구원 선임연구원
관심분야: 여유자유도 로봇, 모션 제어, 비선형 시스템 강인제어, 기구학 캘리브레이션, 유압 매니퓰레이터 제어
2008 한국과학기술원 기계공학과(공학박사)
2008~2016 포항산업과학연구원 책임연구원
2016~현재 한국로봇융합연구원 수석연구원/본부장
관심분야: 재난대응로봇, 로봇 제어, 공장자동화, 협동로봇