1. 서론
본 연구에서 제안되는 모니터링 프로그램은 편리한 사용자 인터페이스를 위하여 다양한 그래픽적 기능들을 보유하고 있다. 이러한 기능들을 위해서는 3차원적 데이터베이스의 구축 및 그래픽적 알고리즘의 구축이 필요하게 된다. 특히, 본 시뮬레이터는 PC에서 운용될 수 있도록 구축되고 있으므로 여기에 따른 문제점들을 해결해야만 한다. 그래픽을 이용한 시뮬레이터의 경우 가장 빈번히 사용되는 기능중의 하나가 시각위치 변경기능이므로 본 연구에서는 보다 편리하게 시각위치를 변경할 수 있는 기능을 갖추었다.
모니터링 프로그래밍 시스템 개발시 꼭 포함되어야 할 사항으로 다음의 4가지 요소들을 언급하였다. 주요 4가지 요소는 궤적계획 에뮬레이션 기능, 기구학 및 동역학적 에뮬레이션 기능, 사용자 인터페이스 기능, 그리고 3차원 모델링 기능으로 구성된다.
모니터링 프로그래밍 시스템은 공간상에서 매니퓰레이터가 취하는 경로를 정확히 에뮬레이트 하여야만 한다. 이 에뮬레이션은 로봇의 작업을 설정하는 부분과 충돌을 정확히 예측하는 부분에 필요하다. 이 문제에 대해 개발된 프로그램은 5개의 경로 계획 방식을 제공하여 선택하여 사용하도록 하고 있다. Windows OS에서 대화상자를 이용한 가상 교시상자를 구성하여 경로계획을 지원한다.[2]
3차원 시뮬레이션 되어진 세계를 유효하게 유지하기 위해서 필요하다. 대개 로봇의 정기구학과 역기구학을 프로그램에 포함시킴으로서 가능하게 된다. 로봇의 정, 역기구학을 개발된 프로그램에서는 수식을 풀어서 부함수를 따로 작성하였다. 여기에 기존 로봇의 세부사양 및 dimension, 그리고 무게 변화에 대처할 수 있도록 각종 파라미터 설정도 사용자가 할 수 있도록 하는 기능도 첨가시켰다.
동특성 해석에 있어서는 만약, 모니터링 프로그래밍 시스템이 제어기의 경로계획 알고리즘을 잘 에뮬레이트하고, 실제 로봇이 매우 느린 속도로 원하는 경로를 쫓아간다면, 프로그램에서 모의되는 동작의 동적인 특성은 무시할 수가 있다. 그러나, 아주 빠른 속도로 작업이 지시된 경우나 아주 높은 하중상태에서 경로를 추적하는데 발생하는 오류는 중요할 수 있다. 이러한 추적 오류를 시뮬레이트하기 위하여 정확한 동역학적 에뮬레이션이 필요하다.
이러한 문제해결을 위해 개발된 프로그램은 C++로 코딩하여 부함수화 하고, 구해진 동역학 방정식에는 로봇을 구동하는 서보계인 DC 모터에 대한 운동방정식도 함께 고려하여 보다 실제시스템에 가까운 모델링을 통해 수행한다.[3]
모니터링 프로그래밍 시스템은 사용자의 사용방법 습득 및 프로그램 데이터 관리가 쉽고 편해야 한다. 그 외에 로봇 시스템의 교시상자를 대체할 수 있는 컴퓨터상의 사용자 인터페이스 방식 개발이 필요하다.
모니터링 프로그래밍 시스템 Windows OS에서 기본적으로 제공되는 여러 가지 대화상자 및 마우스 기능, 단축키 기능 등을 사용하여 프로그램 관리 및 사용방법을 쉽게 할 수 있었다. 결국 교시 상자는 대화상자 상에서 제공되는 여러 기능을 일부 변형 제작하여 최대한 쉽게 사용하게 하는데 집중했다.
컴퓨터 화면상에 제시되는 로봇 자체와, 공구, 작업셀 등이 모두 3차원 물체로 모델화되는 것을 요구한다. 또한, 이 3차원 모델화된 화면상의 물체들은 애니메이션 기능을 가져야 한다. 이 문제에 대해 개발된 프로그램에서는 실리콘 그래픽스사에서 제공하는 그래픽 라이브러리인 OpenGL를 이용하여 3차원 모델링을 구성하였다. 이 라이브러리의 사용으로 인하여 상당한 속도의 향상을 통하여 사용자의 편리성과 효율성을 증진한다.[4]
본 연구는 스마트 공장용 중소기업 보급형 제조로봇 실증라인 구축을 위한 목적으로 제조로봇 성능 평가 지원용으로 개발하는 것을 목적으로 하고 있다.
2. 제조용 로봇 운동학적 해석
2.1 로봇 링크파라미터 해석
아래의 Fig. 2.1(a)에서 고정 좌표계 {F} 내의 점U는 아래의 식과 같이 표현된다.
\(\begin{align}\vec{U}=U_{1} \overrightarrow{e_{1}}+U_{2} \overrightarrow{e_{2}}+U_{3} \overrightarrow{e_{3}}\end{align}\) (2.1)

Fig. 2.1 Translation coordinates of position and orientation
위의 좌표계 이동좌표계 {M}과 고정좌표계 {F}로 부터 다음의 식이 정의된다.[5]
\(\begin{align}\overrightarrow{U^{\prime}}=U_{1}^{\prime} \overrightarrow{e_{1}^{\prime}}+U_{2}^{\prime} \overrightarrow{e_{2}^{\prime}}+U_{3}^{\prime} \overrightarrow{e_{3}^{\prime}}\end{align}\) (2.2)
위의 식 (2.1)과 (2.2)식으로 부터 다음의 식을 유도할 수 있다.
\(\begin{align}U_{1} \overrightarrow{e_{1}}+U_{2} \overrightarrow{e_{2}}+U_{3} \overrightarrow{e_{3}}=U_{1}^{\prime} \overrightarrow{e_{1}^{\prime}}+U_{2}^{\prime} \overrightarrow{e_{2}^{\prime}}+U_{3}^{\prime} \overrightarrow{e_{3}^{\prime}}\end{align}\) (2.3)
식(2.3)의 양변에 \(\begin{align}\overrightarrow{e_{1}}\end{align}\)에 대한 dot product(벡터 내적)을 구하면 U1은 다음식과 같이 정의된다.
\(\begin{align}U_{1}=\left(\overrightarrow{e_{1}^{\prime}} \cdot \overrightarrow{e_{1}}\right) U_{1}^{\prime}+\left(\overrightarrow{e_{2}^{\prime}} \cdot \overrightarrow{e_{1}}\right) U_{2}^{\prime}+\left(\overrightarrow{e_{3}^{\prime}} \cdot \overrightarrow{e_{1}}\right) U_{3}^{\prime}\end{align}\) (2.4)
그리고 식(2.4)에서 \(\begin{align}\overrightarrow{e_{2}}\end{align}\) 및 \(\begin{align}\overrightarrow{e_{3}}\end{align}\)에 대한 각각의 dot product(벡터내적)을 구하면 U2, U3는 다음과 같이 정의된다.
\(\begin{align}U_{2}=\left(\overrightarrow{e_{1}^{\prime}} \cdot \overrightarrow{e_{2}}\right) U_{1}^{\prime}+\left(\overrightarrow{e_{2}^{\prime}} \cdot \overrightarrow{e_{2}}\right) U_{2}^{\prime}+\left(\overrightarrow{e_{3}^{\prime}} \cdot \overrightarrow{e_{2}}\right) U_{3}^{\prime}\end{align}\) (2.5)
\(\begin{align}U_{3}=\left(\overrightarrow{e_{1}^{\prime}} \cdot \overrightarrow{e_{3}}\right) U_{1}^{\prime}+\left(\overrightarrow{e_{2}^{\prime}} \cdot \overrightarrow{e_{3}}\right) U_{2}^{\prime}+\left(\overrightarrow{e_{3}^{\prime}} \cdot \overrightarrow{e_{3}}\right) U_{3}^{\prime}\end{align}\) (2.6)
식 (2.3), (2.5)그리고 (2.6)로부터, 다음의 식이 유도된다.
\(\begin{align}\left[\begin{array}{l}U_{1} \\ U_{2} \\ U_{3}\end{array}\right]=\left[R_{M}^{F}\left[\begin{array}{l}U_{1}^{\prime} \\ U_{2}^{\prime} \\ U_{3}^{\prime}\end{array}\right]\right.\end{align}\) (2.7)
여기서 RFM는 이동좌표계{M}으로부터 {F}까지의 회전행렬 변환 좌표계를 나타내고 다음의 식과 같이 주어진다.
\(\begin{align}R_{M}^{F} = \left[\begin{array}{ccc} \overrightarrow{e_{1}} \cdot \overrightarrow{e_{1}}{ }^{\prime} & \overrightarrow{e_{1}} \cdot \overrightarrow{e_{2}}{ }^{\prime} & \overrightarrow{e_{1}} \cdot \overrightarrow{e_{3}}{ }^{\prime} \\ \overrightarrow{e_{2}} \cdot \overrightarrow{e_{1}}{ }^{\prime} & \overrightarrow{e_{2}} \cdot \overrightarrow{e_{2}}{ }^{\prime} & \overrightarrow{e_{2}} \cdot \overrightarrow{e_{3}}{ }^{\prime} \\ \overrightarrow{e_{3}} \cdot \overrightarrow{e_{1}}{ }^{\prime} & \overrightarrow{e_{3}} \cdot \overrightarrow{e_{2}}{ }^{\prime} & \overrightarrow{e_{3}} \cdot \overrightarrow{e_{3}}{ }^{\prime} \\ \end{array}\right]\end{align}\) (2.8)
Fig. 2.1(b)에 나타낸바와 같이 임의의 각(⍺)만큼 x축에 관하여 회전한 특별한 경우에 대한 회전행렬은 다음식과 같이 정의된다.
\(\begin{aligned} R_{M}^{F}(x ; \alpha) & =\left[\begin{array}{ccc}1 & 0 & 0 \\ 0 & e_{2} \cdot e_{2}{ }^{\prime} & e_{2} \cdot e_{3}^{\prime} \\ 0 & e_{3} \cdot e_{2}^{\prime} & e_{3} \cdot e_{3}^{\prime}\end{array}\right] \\ & =\left[\begin{array}{ccc}1 & 0 & 0 \\ 0 & \cos (\alpha) & -\sin (\alpha) \\ 0 & \sin (\alpha) & \cos (\alpha)\end{array}\right]\end{aligned}\) (2.9)
PF를 Fig. 2.1(a)에서 보여준 바와 같이 점 U의 고정 좌표계 {F}에서의 벡터표현으로 정의하면, 같은점 PF는 이동좌표계{M} 내에서의 벡터 pM으로 표현될 수 있다. 식 (2.6)로부터 다음의 식이 유도된다.[6]
PF = RFMPM (2.10)
여기서 이전의 유도된 것을 기반으로, \(\begin{align}\text {if}\overrightarrow{d^{F}}= \overrightarrow{0}\end{align}\)가 되고, 그리고 PF=RFMPM로 쓸 수 있다. 그 러나 O와 Of가 일정한 거리만큼 떨어져 있으므로, \(\begin{align}\overrightarrow{d^{F}} \neq \overrightarrow{0}\end{align}\)가 된다. 그러므로 PF는 다음 식과 같이 정의된다.
PF = RFMPM + dF (2.11)
여기서 RFM는 이동좌표계 {M}과 고정좌표계 {F}로부터 회전 변환을 나타낸다. 그리고 dF는 이동 좌표계의 원점 O’ 과 고정 좌표계의 원점 O사이의 고정좌표계를 나타내고 있다. 따라서 위의 Fig. 2.2로부터 다음과 같은 행렬식을 얻을 수 있다.[7]
\(\begin{align}\left[\begin{array}{l}P_{x} \\ P_{y} \\ P_{z}\end{array}\right]=R_{M}^{F}\left(\begin{array}{l}p_{x} \\ p_{y} \\ p_{z}\end{array}\right)^{M}+\left(\begin{array}{l}d_{x} \\ d_{y} \\ d_{z}\end{array}\right)^{F}\end{align}\) (2.12)

Fig. 2.2 The relation between fixed and moving coordinates.
회전 행렬과 변위벡터는 4x4 동차변환 행렬 AFM의 행렬구성요소 이다. 식 (2.13)은 4x4 동차 변환행렬 AFM을 나타낸다. 따라서 다음의 행렬식을 얻는다.[8]
\(\begin{align}\left[\begin{array}{l}P_{x} \\ P_{y} \\ P_{z}\end{array}\right]^{F}=\left(\begin{array}{cc}R_{M^{3 \times 3}}^{F} & d_{3 \times 1}^{F} \\ 000 & 1\end{array}\right)\left(\begin{array}{l}P_{x} \\ P_{y} \\ P_{z}\end{array}\right) \Rightarrow A_{M}^{F}=\left(\begin{array}{cc}R_{M^{3 \times 3}}^{F} & d_{3 \times 1}^{F} \\ 000 & 1\end{array}\right)\end{align}\) (2.13)

Fig. 2.3 Schematic of theadjacent axes with the assigned reference frames for determining the Denavit-hartenburg parameters.
2.2 제조로봇의 기구학 해석
기준 좌표계로부터 {Fa}부터 기준 좌표계{Fb} 까지의 좌표변환을 수행하기 위해서는 회전행렬과 변위벡터를 유도해야한다.
Ri-1i = UiVi (2.14)
여기서 Ui(θi)는 다음과 같이 주어진다.
\(\begin{align}U_{i}\left(\theta_{i}\right)=\left[\begin{array}{ccc}\cos \left(\theta_{i}\right) & -\sin \left(\theta_{i}\right) & 0 \\ \sin \left(\theta_{i}\right) & \cos \left(\theta_{i}\right) & 0 \\ 0 & 0 & 1\end{array}\right]\end{align}\) (2.15)
따라서 Vi(⍺i)는 다음과 같이 주어진다.
\(\begin{align}V_{i}\left(\alpha_{i}\right)=\left[\begin{array}{ccc}1 & 0 & 0 \\ 0 & \cos \left(\alpha_{i}\right) & -\sin \left(\alpha_{i}\right) \\ 0 & \sin \left(\alpha_{i}\right) & \cos \left(\alpha_{i}\right)\end{array}\right]\end{align}\) (2.16)
{Fi}에서 {Fi-1}의 좌표로부터 동차변환 행렬은 다음과 같이 주어진다.
Ai-1i = Ai-1i Ai'i (2.17)
\(\begin{align}A_{i}^{i-1}=\left[\begin{array}{cccc} & & & 0 \\ & U_{i_{3,3}} & & 0 \\ & & & d_{i} \\ 0 & 0 & 0 & 1\end{array}\right]\end{align}\) (2.18)
\(\begin{align}A_{i}^{i}=\left[\begin{array}{llll} & & & a_{i} \\ & V_{i_{3,3}} & 0 \\ & & & 0 \\ 0 & 0 & 0 & 1\end{array}\right]\end{align}\) (2.19)
따라서,
\(\begin{align}A_{i}^{i-1}=\left[\begin{array}{cccc} & & & 0 \\ & U_{i} & & 0 \\ & & & d_{i} \\ 0 & 0 & 0 & 1\end{array}\right]\left[\begin{array}{llll} & & & a_{i} \\ & V_{i} & & 0 \\ & & 0 \\ 0 & 0 & 0 & 1\end{array}\right]=\left[\begin{array}{cc}U_{i} V_{i} & U_{i S i} \\ 0 & 1\end{array}\right]\end{align}\) (2.20)
그리고 식 (2.21)을 사용하여 다양한 조건을 덧붙이면 다음의 UiVi와 UiSi를 얻을 수 있다. [9]
\(\begin{align}\begin{array}{l}U_{i} V_{i}=\left[\begin{array}{ccc}c \theta_{i} & -s \theta_{i} & 0 \\ s \theta_{i} & c \theta_{i} & 0 \\ 0 & 0 & 1\end{array}\right]\left[\begin{array}{ccc}1 & 0 & 0 \\ 0 & c \alpha_{i} & -s \alpha_{i} \\ 0 & s \alpha_{i} & +c \alpha_{i}\end{array}\right] \\ =\left[\begin{array}{ccc}c \theta_{i} & -s \theta_{i} c \alpha_{i} & s \theta_{i} s \alpha_{i} \\ s \theta_{i} & c \theta_{i} c \alpha_{i} & -c \theta_{i} s \alpha_{i} \\ 0 & s \alpha_{i} & +c \alpha_{i}\end{array}\right]\end{array}\end{align}\)
\(\begin{align}U_{i S i}=\left[\begin{array}{ccc}c \theta_{i} & -s \theta_{i} & 0 \\ s \theta_{i} & c \theta_{i} & 0 \\ 0 & 0 & 1\end{array}\right]\left[\begin{array}{c}a_{i} \\ 0 \\ 0\end{array}\right]+\left[\begin{array}{c}0 \\ 0 \\ d_{i}\end{array}\right]=\left[\begin{array}{c}c \theta_{i} a_{i} \\ s \theta_{i} a_{i} \\ d_{i}\end{array}\right]\end{align}\) (2.21)
따라서, si는 다음과 같이 표현된다.
\(\begin{align}s_{i}=\left[\begin{array}{c}a_{i} \\ 0 \\ d_{i}\end{array}\right]\end{align}\) (2.22)
위의 Fig. 2.4로부터 n번째 좌표계로부터 기저좌표계까지의 변환과정은 다음의 식과 같이 표현된다.
\(\begin{align}A_{n}^{0}=A_{1}^{0} A_{2}^{1} \ldots A_{n}^{n-1}=\left[\begin{array}{cc}R_{n}^{0} & d_{n}^{0} \\ 0 & 1\end{array}\right]\end{align}\) (2.23)

Fig. 2.4 Transformation from the end-effector frame to the base frame.
식 (2.20)과 식 (2.23)을 사용하여 R0n는 다음과 같이 표현된다.
R0n = (U1V1)(U2V2) ⋯ (UnVn) (2.24)
그리고,
d0n = U1S1 + U1V1U2S2 + U1V1U2V2U3S3 ⋯ + U1V1U2V2 ⋯ Un-1Vn-1UnSn (2.25)
본 연구는 제조공정 자동화를 위한 6관절 수직 다관절 로봇 모델을 적용하는 연구내용으로서 이에 대한 상세구조는 Fig. 2.5에서 나타내고 있다. 제안된 다관절 매니퓰레이터는 수직다관절형 로봇 매니퓰레이터로서 회전하는 6개의 조인트는 어깨, 팔꿈치, 손목형태로 사람팔과 유사하게 직렬로 배열되어 있다. 어깨 조인트(1, 2, 3)는 이 조인트 축들이 한 점에서 교차하기 때문에 스페리컬 조인트로 간주된다. 손목 조인트(4, 5, 6) 역시 같은 구조로 배열된다. 그리고 인접한 두 개의 조인트 축들은 수직으로 위치한다.[10]

Fig.2.5 Robot coordinates frame with 6 D.O.F
운동학 관계를 설명하기 위해서 로봇 조인트의 좌표축들은 Fig. 2.5처럼 설정된다. Denavit-Hatenberg 법칙에 따라 n 자유도 로봇의 파라미터들은 Table 1에 나타난 것처럼 결정되었다. Table 1의 파라미터들은 Denavit-Hatenberg 표기법이 고유하지 않기 때문에 다른 방법들로 선택이 되었다.[11]
Table 1. Link Parameters

변환행렬의 일반적인 공식 다음과 같이 나타낼 수 있다.
\(\begin{align}T_{j}^{i}=\left[\begin{array}{cccc}c \theta_{j} & -s \theta_{j} c \alpha_{j} & s \theta_{j} s \alpha_{j} & a_{j} c \theta_{j} \\ s \theta_{j} & c \theta_{j} c \alpha_{j} & -c \theta_{j} s \alpha_{j} & a_{j} s \theta_{j} \\ 0 & s \alpha_{j} & c \alpha_{j} & d_{j} \\ 0 & 0 & 0 & 1\end{array}\right]\end{align}\) (2.26)
식 (2.26)에 Table.1의 Denavit-Hatenberg 파라미터들을 대입하기 위해 로봇 좌표들 사이의 변환행렬들은 다음 식에 따라 계산된다.
\(\begin{align}\begin{array}{l} T_{1}^{0}=\left[\begin{array}{cccc} c_{1} & 0 & s_{1} & 0 \\ s_{1} & 0 & -c_{1} & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \\ T_{2}^{1}=\left[\begin{array}{cccc} c_{2} & 0 & s_{2} & 0 \\ s_{2} & 0 & -c_{2} & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \quad T_{3}^{2}=\left[\begin{array}{cccc} c_{3} & 0 & s_{3} & 0 \\ s_{3} & 0 & -c_{3} & 0 \\ 0 & -1 & 0 & l_{1} \\ 0 & 0 & 0 & 1 \end{array}\right] \\ T_{4}^{3}=\left[\begin{array}{cccc} c_{4} & 0 & s_{4} & 0 \\ s_{4} & 0 & -c_{4} & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \quad T_{5}^{4}=\left[\begin{array}{cccc} c_{5} & 0 & -s_{5} & 0 \\ s_{5} & 0 & c_{5} & 0 \\ 0 & -1 & 0 & l_{2} \\ 0 & 0 & 0 & 1 \end{array}\right] \\ T_{6}^{5}=\left[\begin{array}{cccc} c_{6} & 0 & s_{6} & 0 \\ s_{6} & 0 & -c_{6} & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \end{array}\end{align}\) (2.27)
여기서 Tij는 좌표 oixiyizi에 대한 ojxjyjzj위치와 방향이 표현된 변환행렬이고 ci, si는 조인트 각도 i의 코사인과 사인연산을 약어로 나타낸 것이다. 이때 로봇 엔드이펙터(끝점)의 자세는 변환 행렬의 계산에 의해 결정된다.
현재 로봇 상태 : (θ1(t), θ2(t), θ3(t), θ4(t), θ5(t), θ6(t), θ7(t))와 끝단(엔드이펙터) 상태는 아래와 같이 계산된다.
\(\begin{align}\begin{aligned} T_{7}^{0}(t) & =T_{1}^{0} T_{2}^{1} T_{3}^{2} T_{4}^{3} T_{5}^{4} T_{6}^{5} T_{7}^{6} \\ & =\left[\begin{array}{cc}R_{\text {Origin }}^{T i p}(t) & P_{\text {Origin }}^{T i p}(t) \\ 0 & 1\end{array}\right]\end{aligned}\end{align}\) (2.28)
여기서 RTipOrigin은 회전행렬이고 PTipOrigin는 글로벌 좌표계(O0X0Y0)에서의 엔드이펙터의 벡터 위치다. 역기구학 문제의 목적은 로봇 엔드이펙터의 다음 자세를 만족하는 새로운 조인트 (θ1(t+1), θ2(t+1), θ3(t+1), θ4(t+1), θ5(t+1), θ6(t+1), θ7(t+1)) 상태를 결정하는 것이다.[12]
\(\begin{align}T_{7}^{0}(t+1)=\left[\begin{array}{cc}R_{\text {Origin }}^{T i p}(t+1) & P_{\text {Origin }}^{T i p}(t+1) \\ 0 & 1\end{array}\right]\end{align}\) (2.29)
여러개의 조인트가 한 점에서 교차하는 특정한 구조 때문에 셋 중에 첫 조인트와 마지막 조인트는 스페리컬 조인트로 간주한다.
J11 = l2(s4(c1s3 - s1c2c3) - s1c4s2) - l1s1s2
J12 = l2(-s4c1s2c3 + c1c4c2) + l1c1c2
J13 = l2s4(s1c3 - c1c2s3)
J14 = l2(c4(s1s3 + c1c2c3) - s4c1s2)
J21 = l1c1s2 - l2(s4(-s1s3 - c1c2c3) - c1c4s2)
J22 = l1s1c2 - l2(s4s2c3s1 - c4s1c2)
J23 = -l2s4(c1c3 + c2s3s1)
J24 = -l2(c4(c1s3 - c2c3s1) + s4s1s2)
J31 = 0
J32 = l1s2 - l2(-s2c4 - c3c2s4)
J33 = -l2s3s2s4
J34 =-l2(-c2s4 - c3s2c4) (2.30)
네 번째 조인트의 각도 값은 앞에서 언급했던 과정과 같이 결정된다. 따라서 각속도는 쉽게 얻을 수 있다.[13]
\(\begin{align}\dot{\theta}_{4}=\frac{\theta_{4}(t+1)-\theta_{4}(t)}{\Delta t}\end{align}\) (2.31)
식 (2.40)를 확장하면 선형 방정식 세트는 다음과 같이 설정된다.
\(\begin{align}\begin{array}{l}\left(\frac{\partial}{\partial \theta_{1}} f_{1}\right) \dot{\theta}_{1}+\left(\frac{\partial}{\partial \theta_{2}} f_{1}\right) \dot{\theta}_{2}+\left(\frac{\partial}{\partial \theta_{3}} f_{1}\right) \dot{\theta}_{3}=\partial C x-\left(\frac{\partial}{\partial \theta_{4}} f_{1}\right) \dot{\theta}_{4} \\ \left(\frac{\partial}{\partial \theta_{1}} f_{2}\right) \dot{\theta}_{1}+\left(\frac{\partial}{\partial \theta_{2}} f_{2}\right) \dot{\theta}_{2}+\left(\frac{\partial}{\partial \theta_{3}} f_{2}\right) \dot{\theta}_{3}=\partial C y-\left(\frac{\partial}{\partial \theta_{4}} f_{2}\right) \dot{\theta}_{4} \\ \left(\frac{\partial}{\partial \theta_{1}} f_{3}\right) \dot{\theta}_{1}+\left(\frac{\partial}{\partial \theta_{2}} f_{3}\right) \dot{\theta}_{2}+\left(\frac{\partial}{\partial \theta_{3}} f_{3}\right) \dot{\theta}_{3}=\partial C z-\left(\frac{\partial}{\partial \theta_{4}} f_{3}\right) \dot{\theta}_{4}(2.32)\end{array}\end{align}\) (2.32)
앞 절에서 언급한 것처럼 손목 위치는 손목 좌표로 독립적으로 얻을 수 있다. 게다가 행렬(2.32)에서 determinant는 0이다(행렬이 3보다 작은 rank를 가진다.). 그러므로 행렬의 세 식은 독립적이지 않고 유일해를 결정할 수 없다. 그러나 어깨 조인트 그룹 사이의 관계는 추정될 수 있다. J31 = 0이기 때문에 아래의 제약을 얻기 위해 (2.32)의 첫 번째와 마지막 식을 선택한다.[14]
\(\begin{align}\begin{array}{l}\dot{\theta}_{1}=A+B \dot{\theta}_{3} \\ \dot{\theta}_{2}=C+D \dot{\theta}_{3}\end{array}\end{align}\) (2.33)
여기서 A, B, C, D는 다음과 같이 계산된다.
\(\begin{align}\begin{aligned} A & =\left(\partial C x-\left(\frac{\partial}{\partial \theta_{4}} f_{1}\right) \dot{\theta}_{4}-\frac{J_{12}\left(\partial C z-\left(\frac{\partial}{\partial \theta_{4}} f_{4}\right) \dot{\theta}_{4}\right)}{J_{32}}\right) \frac{1}{J_{11}} \\ B & =\frac{J_{11} J_{33}-J_{13} J_{32}}{J_{11}} \quad C=\frac{\partial C z-\left(\frac{\partial}{\partial \theta_{4}} f_{4}\right) \dot{\theta}_{4}}{J_{32}} \\ D & =-\frac{J_{33}}{J_{32}}\end{aligned}\end{align}\) (2.34)
식 (2.42)로부터 어깨 조인트 각사이의 관계가 결정된다. 3개의 변수와 2개의 식이 있으므로 유일해를 계산하기 위해서는 코스트 함수라 불리는 하나의 식이 제안되어야 한다.
3. 모니터링 시뮬레이터의 구조
모니터링을 위한 시뮬레이터의 프로그래밍 시스템 개발시 꼭 포함되어야 할 사항으로 다음의 요소들을 언급하였다. 주요 기능으로는, 기구학 및 동역학적 에뮬레이션 기능, 사용자 인터페이스 기능, CAD 파일 기반 3차원 모델링 기능, 그리고 작업장 환경 모델링기능으로 구성된다.[15]
3.1 기구학 및 작업궤적 분석기능
3차원 시뮬레이션 되어진 세계를 유효하게 유지하기 위해서 필요하다. 대개 로봇의 정기구학과 역기구학을 프로그램에 포함시킴으로서 가능하게 된다. 로봇의 정, 역기구학을 개발된 프로그램에서는 수식을 풀어서 부함수를 따로 작성하였다. 여기에 기존 로봇의 세부사양 및 dimension, 그리고 무게 변화에 대처할 수 있도록 각종 파라메터 설정도 사용자가 할 수 있도록 하는 기능도 첨가시켰다.
동특성 해석에 있어서는 만약, 모니터링 프로그래밍 시스템이 제어기의 경로계획 알고리즘을 잘 분석되고, 실제 로봇이 매우 느린 속도로 원하는 경로를 쫓아간다면, 프로그램에서 모의되는 동작의 동적인 특성은 무시할 수가 있다. 그러나, 아주 빠른 속도로 작업이 지시된 경우나 중 하중상태에서 경로를 추적하는데 발생하는 오류는 중요할 수 있다. 이러한 추적 오류를 시뮬레이션하기 위하여 정확한 동역학적 에뮬레이션이 필요하며,. 구해진 기구학 및 동역학 방정식에는 로봇을 구동하는 서보계인 DC/AC 모터에 대한 운동특성도 함께 고려하여 보다 실제시스템에 가까운 모델링을 통해 수행하였다.
3.2 사용자 인터페이스
모니터링 프로그래밍 시스템은 사용자의 사용방법 습득 및 프로그램 데이터 관리가 쉽고 편해야 한다. 그 외에 로봇 시스템의 교시상자를 대체할 수 있는 컴퓨터상의 사용자 인터페이스 방식 개발이 필요하다. 프로그래밍 시스템 Windows OS에서 기본적으로 제공되는 여러 가지 대화상자 및 마우스 기능, 단축키 기능 등을 사용하여 프로그램 관리 및 사용방법을 쉽게 할 수 있었다. 결국 교시상자는 대화상자 상에서 제공되는 여러 기능을 일부 변형 제작하여 최대한 쉽게 사용하게 하는데 집중했다.[16]
3.3 로봇 및 작업환경 모델링
컴퓨터 화면상에 제시되는 로봇 자체와, 공구, 작업셀 등이 모두 3D 물체로 모델화되는 것을 요구한다. 또한, 이 3D 모델화된 화면상의 물체들은 애니메이션 기능을 가져야 한다. 이 문제에 대해 개발된 프로그램에서는 실리콘 그래픽스사에서 제공하는 그래픽 라이브러리인 OpenGL를 이용하여 3D 모델링을 구성하였다. 이 라이브러리의 사용으로 인하여 상당한 속도의 향상이 가능했으며, 고정밀도 애니메이션시 기존의 GDI (Graphic Device Interface)에서 존재했던 약간의 깜박거림도 없앨 수 있었다.
3.4 Track record 밒 데이터 정립
제조로봇 길증라인을 구축하는 많은 부분 중 가장 기본이 되는 요소로서 로봇시스템, 작업 공정라인, 제어시스템, 그리퍼 등의 자동화유닛 등의 데이터 검증 및 상태 분석을 위한 Track record가 필요하다. 스마트공정 실증라인을 구축하기 위해서는 이 요소가 모듈화 되어 데이터베이스로 저장된다. 새로운 작업 셀을 구축하는 경우 작업 셀 중에 사용자가 필요로 하는 모듈을 선택하여 원하는 위치에 배치함으로 작업공정 효율을 극대화 시킬 수 있다. 작업장 내의 물체들을 모델링을 위해 3차원 박스 또는 위치, 속도 등의 데이터를 검증한다.

Fig. 3.1 The basic scheme of track record
3.5 3D 그래픽 구현
2차원 화면올 현실감 있는 3차원 모델로 표현하기 위해 좌표변환을 이용하면 원하는 스크린상의 3차원 이미지구현이 가능해진다. 물체를 화면에 3차원으로 그리기 위해서는 표현기준의 설정이 필요하다. 본 연구에서는 실제좌표계에서 물체의 꼭지점을 기준점으로 모델링하였고, 시뮬레이션올 하는 경우에는 관절 각도값을 변수로 하는 동차변환행렬 올 이용하여 물체가 운동을 한 경우의 형상에 대한 최종 좌표값을 구한다.[17]
화면상의 3차원 표현을 위해서는 실제좌표계를 시각좌표계로 변화시켜야 한다. 즉 관찰자의 눈이 시각좌표계의 원점에 있다고 간주하여 관찰자의 입장에서 물체의 좌표값을 구하였다.
4. 제조로봇 모니터링시스템 시뮬레이터의 성능시험
4.1 모니터링 시물레이터의 성능
모니터링 프로그래밍 시스템은 크게 세팅 및 작업교시, 시뮬레이션, 성능 평가의 부분으로 크게 나뉠 수 있다. 세팅 및 교시 부분에서는 파라미터 설정, 작업 교시, 작업 경로 및 궤적 생성 등이 수행되며, 시뮬레이션 부분에서는 주어진 다양한 제어 알고리즘에 의한 동역학 및 제어 시뮬레이션을 할 수 있고, 성능평가 부분에서는 수치 시뮬레이션 데이터에 의한 3차원 애니메이션과 재조로봇의 동작 및 운영상태의 모니터링 및 성능 검증이 수행된다.
4.1.1 파일 운영 및 메뉴 기능 시험
모니터링 프로그래밍 시스템은 교시점에 관한 정보, 표준 궤적 데이터, 시뮬레이션 궤적 데이터 등 모든 정보를 데이터 파일로 관리한다. 각종 정보가 저장되어 있는 파일들은 개발시 선정된 몇 가지 고유한 확장자를 가지게 되며, 작업이 수행되기 전에 파일메뉴에서 새롭게 만들거나 기존의 작성된 파일을 열어야 한다. Fig. 4.1는 파일 메뉴에서 어떠한 모드가 있는지 나타내는 모습이다.

Fig. 4.1 The Simulator scheme of monitoring system for manufacture robot

Fig. 4.2 Link parameters of robot manipulator

Fig. 4.3 The model generation of robot link arm according to link parameter

Fig. 4.4 3D modeling generation of link arm according to CAD flies in simulator
4.1.2 시물레이터 메뉴 기능 검증 및 분석
시물레이터 메뉴에서는 작업을 수행하기에 앞서 링크별 길이 및 질량, 작업 영역, 최대속도, 그리고 하중의 종류 등을 지정할 수 있다. 링크 별 길이 및 질량지정 메뉴에서는 각 링크의 길이를 mm(혹은 cm)단위로 그리고, 질량을 g(Kg)단위로 지정할 수 있다. 작업영역지정 메뉴에서는 각 관절의 최대 운동범위를 지정할 수 있으며, 속도지정 메뉴에서는 관절별로 속도를 지정할 수 있다.
Fig. 4.1은 실제 로봇의 교시상자를 대체하는 모니터링 프로그래밍 시스템의 교시 대화상자와, 교시메뉴에서 설정 값을 입력하였을 때, 자동적으로 경로를 바꾸는 로봇의 동작상태를 보여주고 있다.
시뮬레이션 메뉴에서는 작업경로의 궤적에 따른 시뮬레이션을 통해 수행하고자 하는 작업동작 상태를 3차원과 2차원 그래픽으로 컴퓨터 화면상에서 미리 볼 수 있으며, 이에 이은 시뮬레이션 결과의 확인에 의해 성능 평가가 가능하므로 로봇동작 상태 및 성능을 미리 분석 점검할 수 있다.
5. 맺음말
본 연구에서 제안된 중소기업 보급형 스마트공장 실증라인 적용을 위한 모니터링 프로그래밍 시스템은 크게 셋팅 및 교시, 시뮬레이션, Track Recorder, 기능 상태진단 분석기능으로 크게 나뉠 수 있다. 셋팅 및 교시 부분에서는 파라미터 설정, 경로점 교시, 궤적 생성 등이 수행되었으며, 시뮬레이션 부분에서는 주어진 여러 알고리즘에 의한 동역학 및 시뮬레이션을 할 수 있고, 성능분석 부분에서는 수치 시뮬레이션 데이터에 의한 3차원 애니메이션과 제조로봇의 I/O신호 및 로봇운행상태 진단분석이 가능한 구조로 설계되었다.
기존의 작업장 도면을 시뮬레이터 프로그램에 이용하기 위해 CAD 파일을 입력하는 기능이 필요하다. 실제적으로 2차원 파일이 아닌 3차원 파일의 입력이 필요하다. 3차원 CAD 프로그램 중 많이 사용되는 ACAD의 파일과 3D 파일을 입력받는다. 입력받은 CAD 도면은 파일로 데이터베이스화 되어 사용자가 시스템 내에 적용하기 위해 위치, 속도 정보에 대해 수정을 할 수 있다.
스마트 팩토리를 위한 중소기업 보급형 제조로봇 실증라인에 적용하여 중소기업제조기술혁신에 효율적으로 적용될 수 있을 것으로 사료된다.
사사
본 연구는 산업부지원 산업기술혁신사업(과제번호: 20005020)에 의해 수행되었습니다.
References
- K.J. Kyriakopolos and G.N. Saridis. "Distance etimation and collision prediction on-line robotic motion planning", Automatica, Val. 28, No. 2, pp. 2, 389-394, (1992). https://doi.org/10.1016/0005-1098(92)90124-X
- 이형묵, 양지훈, 이정환, 박성미, 박성준, "소프트 절환이 가능한 계통 연계형 CTTS 시스템 구성에 관한 연구", 한국산업융합학회 논문집 제 21권 6호 pp. 361-368, (2018). https://doi.org/10.21289/KSIC.2018.21.6.361
- Han Sung Kim "Development of a 4-DOF industrial Robot System" 한국산업융합학회 논문집 제 21권 1호, pp. 37-44, (2018). https://doi.org/10.21289/KSIC.2018.21.1.037
- Tae-seok Jin, "Simulation of Mobile Robot Navigation based on Multi-Sensor Data Fusion by Probabilistic Model" 한국산업융합학회 논문집 제21권 4호, pp,167-174, (2018). https://doi.org/10.21289/KSIC.2018.21.4.167
- Johann Borenstein and Yaram Koren, "Error Eliminating Rapid Ultrasonic Firing For Mobile Robot Obstacle Avoidance," IEEE Translation on Robotics and Automation, Vol .11 No. 1, pp. 135-138, (1995).
- 정영석, "회전자 위치센서 없는 동기전동기의 고속 운전 성능 개선" 한국산업융합학회 논문집 제21권 6호, pp. 439-444, (2018). https://doi.org/10.21289/KSIC.2018.21.6.439
- L.A. Zadeh, "Fuzzy Sets," Information&Control, Vol 8, pp. 338-353, (1965). https://doi.org/10.1016/S0019-9958(65)90241-X
- S.M. Smith and D.J. Comer "Automated Calibration of a Fuzzy Logic Controller Using a Cell State Space Algorithm," IEEE Control System, pp. 18-28, (1991).
- U Neis, K Nikel and a Tiehm, "Enhancement of anaerbic sludge".
- U Neis, K Nickel and A Tiehm. "Enhancement of anaerobic sludge digestion by ultrasonic distegration," Proc. of IEEE Intenational Conference on Robotics and Automation, pp. 384-389, (2000).
- Y. Kanayama, Y. Kimura, F. Miyazaki and T. Noguchi, "A Stable Tracking Control Method for an Autonomous Mobile Robot," Proc. of IEEE Intenational Conference on Robotics and Automation, pp. 384-389, (1990).
- Woo-song Lee, Min-Seong Kim, Ho-Yong Bae, Yang-Keun Jung, Young-Hwa Jung, Gi-Soo Shin, In-Man Park, Sung-Hyun Han "A Study on Stable Motion Control of Humanoid Robot with 24 Joints Based on Voice Command" 한국산업융합학회 논문집 제21권 1호, pp. 17-28, (2018). https://doi.org/10.21289/KSIC.2018.21.1.017
- 김한성, "위치/힘 동시제어를 위한 F/T측정 기능을 갖는 6축 순응기구 설계" 한국산업융합학회 논문집 제 21권 2호, pp. 63-70, 2018 https://doi.org/10.21289/KSIC.2018.21.2.63
- Won-Sik Choi, Soon-Goo Kwon, "Analysis of the Reduction Gear in Electric Agricultural Vehicle, 한국산업융합학회 논문집 제21권 4호 pp. 159-166, (2018). https://doi.org/10.21289/KSIC.2018.21.4.159
- 이형묵, 양지훈, 이정환, 박성미, 박성준, "소프트 절환이 가능한 계통 연계형 CTTS 시스템 구성에 관한 연구" 한국산업융합학회 눈문집 제21권 6호, pp. 361-368, (2018).
- 김두범, 김희진, 백영태, 배호영, 한성현, "스마트 팩토리를 위한 제조공정내에서 모바일로봇의 장애물 회피 및 자율주행에 관한 연구" 한국산업융합학회 눈문집 제21권 6호, pp. 379-388, (2018).
- 백준영, 고석조, 김태훈, 운상민, 노치범, 차병수, 이민철, "운동 보초 및 운동 정버 모니터링이 가능한 오토 트레이닝 시스템 개발에 관한 연구" 한국산업융합학회 논문집 제20권 4호, pp. 333-338, (2017). https://doi.org/10.21289/KSIC.2017.20.4.333