읽기 설정
오늘, 동차 변환을 찾는 완벽한 예시들을 보여드리겠습니다.00:01
베이스 프레임에서 엔드 이펙터 프레임으로의 변환 행렬입니다.00:07
이전에 이와 같은 균질한 것에 대해 배웠습니다.00:12
변환 행렬은 3x3 회전 행렬로 구성됩니다.00:16
아래에 0이 세 개 있습니다.00:24
그리고 변위 벡터를, 3행 1열로 구성된 것을요.00:26
아래쪽에 하나 있습니다.00:33
이 변위 벡터는 엔드 이펙터의 위치를 알려주는 것으로 알게 되었습니다.00:37
기본 프레임입니다.00:44
오늘도 좌표 변환이라고 불리는 어떤 것을 어떻게 하는지 배우도록 하겠습니다.00:47
이것입니다.00:53
이는 동차 변환 행렬을 사용하여 위치를 찾을 수 있다는 의미입니다.00:57
로봇 엔드 이펙터가 잡고 있는 물체의 기준 프레임 내에서 이루어져야 합니다.01:03
이것을 동차 변환 행렬을 곱하는 것만으로 간단히 수행할 수 있습니다.01:10
점 x, y, z에 하단에 1을 표시하고 있습니다.01:17
로봇이 잡고 있는 엔드 이펙터 프레임에서 객체의 위치를 나타냅니다.01:27
로봇이 잡고 있는 물체의 위치에 해당하는 XYZ 데이터 포인트는 일반적으로01:33
대문자를 P로 쓰고, 그 위에 프레임을 적습니다.01:40
중심이 있습니다.01:47
이 지점은 x, y, z뿐만 아니라 숫자 1을 포함하고 있습니다.01:49
아래쪽에 붙여서요. 자, 그럼 예시 몇 가지를 살펴 보면서 어떻게 작동하는지 확인해 보겠습니다.01:56
첫 번째 예시로 구형 조작기를 살펴보겠습니다.02:05
이 구형 조작기를 여기, 약간의 오프셋과 함께 그려놓은 이유는 제가02:10
동차 변환 행렬을 이용해서 그 문제를 어떻게 처리하는지 보여드리겠습니다.02:17
가장 먼저 좌표계를 그려 넣을 생각입니다.02:22
Z축이 회전축이 되도록 확실히 확인합니다.02:31
그리고 전체적인 틀이 오른손 법칙을 따른다는 점입니다.02:35
프러ismatic 관절의 경우, Z축이 움직이는 방향이 되도록 해야 합니다.02:50
그리고 엔드 이펙터 프레임의 경우, 바로 그 직전 프레임을 복사합니다.03:00
다음에는 공동 변수를 라벨링해야 합니다.03:12
회전 관절의 경우, 관절 변수들이 오른손 법칙을 따르도록 주의합니다.03:15
그리고 저는 관절 변수가 영향을 미치는 프레임을 나타내기 위해 해당 변수를 번호 매깁니다.03:25
마지막으로, 링크 길이들을 모두 라벨링하러 돌아가야겠어요. 자,03:44
각각의 동차 변환 행렬을 구해낼 수 있습니다.03:57
세 개를 여기에서 찾아야겠네요.04:03
프레임 0부터 프레임 1까지, 그리고 프레임 1부터 프레임 2까지 이어지는 것을 필요합니다.04:06
그리고 두 번째 프레임에서 세 번째 프레임으로 이어지는 것을 의미합니다.04:13
이 행렬을 찾으려면, 회전 행렬을 찾은 다음 그 아래에 세 개의 영(0)을 위치시켜야 합니다.04:20
그리고 나서 변위 벡터를 찾아서 그 아래에 1을 표기해야 할 것 같습니다.04:27
회전 행렬 부분을 찾아보도록 시작해 보겠습니다.04:37
회전 행렬은 프레임 0이 어떻게 변환되는지를 나타내는 행렬로 시작해야 합니다.04:42
프레임 1과 같은 방향으로 회전시켜야 합니다.04:49
두 프레임 사이에 공통으로 존재하는 축이 하나 있다는 것을 확인했습니다.04:54
그것은 제가 프레임 0을 x축을 기준으로 회전시켜서 프레임과 일치시킬 수 있다는 의미입니다.05:01
두 개의 x축이 같은 방향을 향하고 있기 때문입니다.05:07
이 회전을 x축을 기준으로 90도 회전으로 표현할 수도 있지만, 저는 또한 다른 방향으로 진행하고 있습니다.05:14
회전 행렬을 구하는 데 사용할 수 있는 팁을 보여드리겠습니다.05:20
두 프레임은 서로 상대적인 방향으로 배치되어 있습니다.05:27
이 단축키가 어떻게 작동하는지 설명드리겠습니다. 각05:32
이 회전 행렬의 열들은 우리가 다루는 좌표계의 축을 나타냅니다.05:36
가거나, 달리 말하면, 저희의 새로운 틀을 의미합니다.05:43
첫 번째 열은 새로운 x축을 나타내고, 두 번째 열은...05:47
새로운 y축은 입력 텍스트를 나타내고, 세 번째 열은 새로운 z축을 나타냅니다.05:55
각 행은 하나의 내용을 나타냅니다.06:01
이전 축들 중 하나의 축이거나, 우리가 출발하는 기반이 되는 틀이라고 할 수 있습니다.06:04
첫 번째 행은 나타냅니다.06:10
입력 텍스트는 x를 나타내고, 두 번째 행은 y를 나타내며, 세 번째 행은 z를 나타냅니다.06:13
자, 그럼 이 행렬을 채워 넣는 방법을 설명해 드리겠습니다.06:19
새로운 x축이 같은 위치에 있는 것을 확인했습니다.06:23
이것은 이전 x축 방향을 의미합니다.06:28
새로운 x와 기존 x의 교집합에 1을 넣었습니다.06:31
다음으로, 제 새로운 y축이 기존 z축과 같은 방향에 있는 것을 확인했습니다.06:41
제가 가서 놓을 수 있도록 해야겠습니다.06:47
새로운 Y길과 낡은 Z길이 만나는 곳에 하나 있습니다.06:49
마지막으로 새로운 Z축이 위치해 있는 것을 확인했습니다.06:57
이전 Y축과 반대 방향입니다.07:01
제가 새로운 z와 이전 y의 교집합에 음수 1을 입력할 수 있도록 해 주시면 감사하겠습니다.07:05
이제 들어가서 다른 모든 자리에 제로를 채워 넣겠습니다.07:12
3 곱하기 3 행렬입니다.07:18
이렇게 하면 우리가 직접 가서 확인했을 때 얻을 수 있는 결과와 동일한 결과를 얻게 됩니다.07:21
x축 회전 행렬로 채워진 것을 90도 회전했습니다.07:27
아직 다 끝내지 못했습니다.07:36
회전 행렬을 아직 관절 변수 세타 1을 고려하여 계산하지 않았기 때문입니다.07:38
네, 확인하고 그렇게 해야겠어요.07:43
그렇게 하는 방법은 시타(theta) 1 회전을 왼쪽에서 곱하는 것입니다.07:47
음, 제이(Z) 주위를요. 그러니까 이 행렬을 조금 옮겨서 공간을 만들어 다른 것을 넣을 수 있을 것 같습니다.07:53
z축 회전을 하겠습니다. 그리고 이것을 아래로 슬라이드하고, z축 회전을 왼쪽에 배치하겠습니다.08:00
이제 마지막 회전 행렬을 구하기 위해서는 이 두 행렬을 곱해야 합니다.08:31
이것들을 곱해서 균일 변환 행렬에 채워 넣을 예정입니다.08:36
그렇게 얻기 위해08:42
첫 번째 행, 첫 번째 열에 들어가는 값은 첫 번째 행과 열을 곱하여 계산하겠습니다.08:43
하나요. 하나 곱하기 코사인 세타 하나 더하기 음의 사인 세타 하나 곱하기 0 더하기요.08:50
영 곱하기 영은 코사인 세타 1을 줍니다.08:58
그리고 저는 이걸 계속 반복할 거예요. 그러면 두 번째 행은 곱하겠습니다.09:02
2행을 2번 곱하고, 1열을 곱한 뒤 사인 세타 1을 구하고, 그런 다음 3행을 곱하겠습니다.09:07
시간 열에 대해 계산했을 때 0이 나오는 문제가 있습니다.09:14
다음으로, 첫 번째 행을 두 번째 열과 곱해서 0을 얻습니다.09:19
2번 열, 3행 2번 열입니다.09:27
그러면 여기로 이동을 진행하겠습니다.09:35
회전 부분은 완료되었고, 이제 변위 벡터 부분으로 진행할 수 있습니다.09:52
변위입니다.09:58
프레임 0부터 프레임 1까지의 벡터는 저 벡터 맞습니까?10:01
이 변위 벡터에서는 1과 2를 모두 세어야겠네요.10:10
제가 적는 이 벡터를 기억해 주십시오.10:16
세타 각도의 회전에 관계없이 항상 참이어야 합니다.10:18
만약 이 모습을 위에서 내려다본다고 상상해 본다면, 무엇을 볼 수 있을지 알 수 있습니다.10:23
여기서는 x가 0이고, y도 0인 삼각형을 얻게 됩니다.10:31
제가 여기서 위에서 내려다본다면, 이 축들이 이렇게 보일 거예요.10:37
그리고 여기 A2가 있는데, 이것은 프레임 1의 중심부입니다.10:41
이것은 회전 세타 1입니다.10:49
따라서 변위의 x 값은 A2와 같을 것입니다.10:52
빗변에 세타 1의 코사인을 곱한 값입니다.10:59
이 변위의 y값은 A2에 세타 1의 사인 값을 곱한 것과 같을 것입니다.11:06
그리고11:13
여기서 볼 수 있는 3차원 그림을 통해 확인되는 Z축 변위는 항상 A1이 됩니다.11:16
세타 1의 회전 각도가 어떻게 되든 상관없이, 여기 A1에 채워 넣겠습니다.11:23
H01은 모두 마쳤습니다.11:28
H12를 찾으러 이동하겠습니다.11:32
회전 부분을 찾는 것부터 시작하겠습니다.11:35
작은 꼼수를 이용해 봅시다.11:39
이 프레임들의 다양한 방향을 고려하는 회전 부분을 찾는 데 도움이 됩니다.11:42
여기 위에 써서, 이것은 x, y, z라고 하고, 이쪽은 기존의 것을 위한 것입니다.11:49
x축, y축, z축입니다.11:56
저의 새로운 x축은 기존의 z축과 반대 방향에 있습니다.12:02
새로운 x축과 기존 x축의 교차점에 -1을 입력했습니다.12:09
새로운 Y축은 기존 Y축과 같은 방향을 유지합니다.12:16
새로운 Y와 구 Y의 교집합에 1을 넣었습니다.12:20
저의 새로운 Z는 기존 X와 같은 방향에 있습니다.12:28
저는 새로운 곳의 교차로에 하나를 배치했습니다.12:32
z, 그리고 기존 x, 그리고 나서 제로를 채워 넣습니다.12:36
여기서 얻게 되는 결과는 프레임 하나를 가져와서 회전시켰을 때 얻을 수 있는 결과와 동일해야 합니다.12:45
y축을 기준으로 90도 회전시키면 이 프레임을 저 프레임과 일치시킬 수 있을 것 같습니다.12:53
아직 회전 행렬을 다 끝내지 못했습니다. 아직 고려해야 할 부분이 남아있어서요.12:58
세타 회전, 둘입니다.13:05
그리고 그것을 고려하는 방법은 a로 왼쪽 곱셈을 하는 것입니다.13:07
세타 각도 둘을 z축을 기준으로 회전합니다.13:14
저에게는 동차 변환 행렬에 결과를 곱하고 채워 넣어야 합니다.13:30
물론 하단에는 제로를 채워 넣어야겠지요.13:39
지금 여기서는 하나를 내려야 하는데, 아직 변위 벡터 부분을 찾아야 합니다.13:58
이 벡터가 변위 벡터입니다.14:04
거기서요. 그리고 제가 이 벡터를 쓸 때, 회전과 상관없이 항상 참이 되어야 합니다.14:07
세타 2의 값이 있습니다.14:13
세타 2가 회전함에 따라 프레임 2의 중심이 여기 위로 이동할 것입니다.14:16
x 평면에 y 평면이 있습니다.14:23
그 벡터의 x 성분, 바로 이 성분입니다.14:26
세 배가 될 것입니다.14:33
세타 둘의 코사인입니다.14:38
벡터의 y 성분은 세타 두의 사인 값을 세 배로 곱한 값이 될 것입니다.14:41
그리고 이 벡터에는 z 성분이 전혀 없습니다.14:47
회전 각도 세타 2가 어떤 값이 되더라도, 결국 0이 됩니다.14:51
여기서 h 하나 둘을 마칩니다.14:58
제가 완성한 이 행렬들을 가져가서 거기에 내려놓겠습니다.15:01
그래서 마지막 동차 변환 행렬을 계산할 여유가 조금 있습니다.15:06
네, H 두 세를 찾아보도록 하겠습니다.15:14
그리고 이제 회전 부분, R 두 개를 찾아보도록 하겠습니다.15:22
셋입니다.15:30
이제 변환을 나타내는 행렬을 작성하기 시작해야 합니다.15:34
두 프레임 간의 방향이 일치합니다. 두 프레임은 이미 동일한 방향을 향하고 있기 때문입니다.15:41
우리는 항등 행렬을 사용합니다.15:48
이전에 사용했던 방법과 같은 꼼수를 적용하면 됩니다.15:53
행렬을 보시면, 이 회전 행렬이 회전이 없음을 이해하실 수 있을까요?15:59
이 회전 행렬은요.16:05
새로운 x축이 기존 x축과 같은 방향을 향하고 있다는 것입니다.16:08
새로운 y축은 기존 y축과 같은 방향으로 설정되었습니다.16:13
새로운 Z축은 기존 Z축과 같은 방향을 유지합니다.16:20
다시 말해서, 회전은 전혀 없습니다.16:26
자, 이제 회전은 여기서 마치겠습니다.16:28
여기에는 회전 관절 변수를 고려할 요소가 없기 때문에 매트릭스로 표현됩니다.16:33
프리즘 관절이 있습니다.16:40
저는 이제 동차 변환 행렬 안에 회전 행렬을 채워 넣을 예정입니다.16:42
행렬입니다.16:47
아래쪽에 제로를 채워 넣어야겠어요. 다음으로 변위 벡터 부분을 필요로 합니다.16:53
변위 벡터가 바로 여기 있습니다.17:00
d3 값이 무엇이든 간에 이것은 반드시 참이어야 합니다.17:07
이 변위는 z 방향이며, 항상 z 방향으로 나타납니다.17:12
d3에 어떤 값을 대입하더라도요.17:18
x축과 y축으로는 변위가 없고요, z축으로요.17:21
관절 변수 d3의 변위와 링크 길이 a4를 모두 가지고 있습니다.17:27
아, A4에 D3를 더하고, 그런 다음 아래쪽에 1을 넣어줘야 합니다.17:35
자, 마지막 동차 변환 행렬까지 모두 완료되었습니다.17:44
이제 세 가지 모두 찾았네요.17:50
완전한 동차 변환 행렬을 찾기 위해 필요한 행렬들을 말합니다.17:53
모두요.18:00
기저 프레임 제로에서 엔드 이펙터 프레임, 즉 프레임 세까지의 경로입니다.18:01
이 세 개의 행렬을 곱해야 합니다.18:09
영부터 세까지의 h는 영부터 일까지의 h와 곱한 것과 같습니다.18:12
하나에서 두 번까지, 두 번에서 세 번까지입니다.18:20
제가 행렬들을 적어 내려가겠습니다.18:24
여기에서 찾아냈습니다. 이제 행렬 곱셈은 결합 법칙을 만족하므로, 즉 다음과 같이 계산해도 결과가 동일하다는 뜻입니다.18:28
어떤 행렬을 먼저 곱하든 상관 없습니다.18:35
이 두 행렬을 곱한 다음에, 그 결과를 오른쪽 행렬과 다시 곱할 수 있습니다.18:40
혹은 곱셈을 할 수도 있습니다.18:46
이 두 개의 행렬을 함께 더한 후, 왼쪽에 있는 행렬과 곱해주세요.18:48
어떤 방식으로든 좋으니 그렇게 하시면 됩니다. 저는 곱셈을 할 예정입니다.18:54
왼쪽에 있는 것 두 개를 먼저 적용해 주세요.19:00
그래서 저는 여기 이 열, 첫 번째 열을 곱하는 것부터 시작했습니다.19:16
첫 번째 줄부터, 그리고 두 번째 줄, 세 번째 줄, 네 번째 줄까지요.19:21
그 덕분에 제가 이 연재 전체를 맡게 되었습니다.19:27
다음으로 두 번째 열을 각각 곱하겠습니다.19:29
다음 열을 얻기 위해 행을 가져와야 합니다.19:35
각 행별로 세 번째 열과 네 번째 열을 확인해주세요.19:39
아직 이 행렬을 이 행렬과 곱해야 합니다.19:49
매트릭스 크기를 줄여서 공간을 조금 더 확보하려고 합니다.19:54
네, 여기서는 이 행렬과 이 행렬을 곱하게 될 겁니다.19:59
이 열과 이 행을 곱하고, 이 열을 각각 곱합니다.20:05
다른 행들을 살펴보면 이 열의 나머지 정보는 알 수 있을 것 같습니다.20:12
행렬의 두 번째 열을 각 행별로 두 번씩 반복하세요.20:17
각 행을 세 번씩 반복하고, 마지막으로 네 번째 열을 각 행마다 네 번씩 반복해 주세요.20:23
그리고20:29
우리가 움직이면, 프레임 0에서 프레임 3까지의 완전한 동차 변환 행렬을 얻게 됩니다.20:31
이것입니다.20:39
행렬을 사용하면 엔드 이펙터의 x축 방향 위치를 계산할 수 있습니다.20:40
입력 텍스트를 여기에 넣어주세요.20:47
여기 Y 방향의 첫 번째 요소이고, 그 다음 요소입니다.20:48
여기 Z축 방향으로 말이죠.20:56
링크 길이와 관절 변수 값에 관계없이 세 번째 요소에 해당합니다.20:58
하지만 그것 역시 저희에게 가능하게 해 줍니다.21:06
또 다른 작업을 수행할 수 있는데, 이것을 좌표 변환이라고 합니다. 좌표 변환을 통해 우리는 무언가를 찾아낼 수 있습니다.21:09
로봇이 엔드 이펙터에 잡고 있는 물체의 위치를 나타냅니다.21:16
저는 이제 운동학 다이어그램으로 다시 돌아가 보도록 하겠습니다.21:20
이 엔드 이펙터의 끝부분을 예로 들어 보겠습니다.21:25
로봇이 의자에요. 그리고 의자에 사람이 앉아 있어요.21:30
저는 여기 사람을 그려볼게요. 여기 의자가 있다고 해 봅시다.21:37
그렇게 말씀드리죠. 그리고 여기 앉아있는 분이 있다고 가정해 보겠습니다.21:42
만약 이것이 저희가 누군가를 이동시키는 일종의 놀이기구라고 가정해 보겠습니다.21:50
저희는 엔드 이펙터 프레임에서 이 사람의 머리 위치를 알고 있습니다.21:57
그것을 대문자 P라고 부르고, 거기에 3이라고 표시하여 이것이 점임을 나타내겠습니다.22:04
세 번째 프레임 안에서요.22:10
만약 그 사람의 머리 위치가 0에 있다고 가정한다면요.22:15
x축에서 0이고, 음, 3피트 정도에 위치한다고 해 보겠습니다.22:19
그리고 z에서는 0이 되고, 우리는 그것을 해야 합니다.22:26
이 벡터의 끝에 항상 1을 추가해주세요.22:32
저희는 그 사람이 어디를 보고 있는지 알아낼 수 있을 겁니다.22:36
이것은 세 번째 프레임이 아니라 이 값을 곱함으로써 제로 프레임에 위치하게 됩니다.22:40
벡터 횟수 프레임, 우리의 동차 변환 행렬입니다.22:47
세 번째 프레임에서 이 지점을 기준으로 곱하겠습니다.22:51
이것은 영, 삼, 그리고 이 예시에서는 피트를 사용하고 있습니다. 영, 그리고 나서...23:00
항상 맨 아래에 하나가 있어야 합니다. 이제 이 벡터에 이 행렬을 곱하면요.23:06
프레임 0에서의 지점을 알려주실 겁니다.23:12
제가 이 곱셈을 풀어서 보여드리려고 합니다. 어떻게 작동하는지 설명해 드릴게요.23:19
그래서 저는 이 벡터에 행 하나를 곱하는 것부터 시작합니다.23:24
이 모든 것을 왜냐하면 그것이 1로 곱해지기 때문입니다.23:30
두 번째 행의 경우에는, 이 벡터에 두 번째 행을 곱해줍니다.23:33
그러면 이 벡터에 행 세 번째를 곱합니다.23:40
그리고 이 벡터에 네 번째 행을 곱하는데, 그 결과는 항상 1이 되어야 합니다.23:44
이것은 우리에게 알려주는 내용입니다.23:49
끝 위치가 아닌, x, y, 그리고 z 좌표를 말씀드립니다.23:53
의자에 앉은 사람의 머리 부분에 영향을 미치는 효과를 말하는 것입니다.24:00
이것이 왜 그렇게 유용하고 중요한 일인지 아마 눈치채셨을 겁니다.24:03
우리는 그렇게 할 수 있었습니다.24:09
의자에 앉아 계신 분의 머리 위치를 파악해 주십시오.24:10
공동 변수 값과 링크 길이의 어떤 값에 대해서든 적용 가능하지만, 예측할 수도 있습니다.24:16
다른 사람의 키가 더 크거나 작은 사람이 의자에 앉았을 때 그 사람의 머리 위치를 나타냅니다.24:22
로봇의 최종 작동 부입니다.24:28
사람을 다치게 하지 않도록 재난을 예방하는 데 도움이 되는 유용한 일입니다.24:31
또한, 그리고요.24:39
로봇이 집을 수 있는 물체의 위치를 예측하고 있습니다.24:40
것의 끝입니다.24:47
로봇이 잡고 있는 용접 도구이거나, 저희가 사용하게 될 페인트 스프레이 노즐 끝부분일 수 있습니다.24:48
로봇의 엔드 이펙터 안으로 넣어 주세요.24:55
알려진 위치를 기준으로 다른 위치를 찾는 데 이 방법을 활용할 수 있습니다.25:00
엔드 이펙터까지 이동해서, 저희 베이스 프레임 또는 월드 프레임 좌표계에서 위치를 알아낼 수 있습니다.25:07
AI Summary
이 텍스트는 로봇 공학 강좌의 일부로, 동차 변환 행렬을 사용하여 로봇 팔의 운동학을 분석하는 방법을 설명합니다. 각 관절 간의 변환을 정의하고, 행렬 곱셈을 통해 엔드 이펙터의 위치와 방향을 계산하는 과정을 다룹니다. 특히, 사람의 머리 위치 추적 및 좌표 변환 기술은 로봇이 사람과 안전하게 상호작용하고, 엔드 이펙터의 위치를 예측하여 작업 효율성을 높이는 데 활용됩니다. 즉, 동차 변환 행렬은 로봇 팔의 움직임을 제어하고 시뮬레이션하는 데 필수적인 개념입니다.
Key Highlights
- •동차 변환 행렬을 사용하여 로봇 팔의 각 프레임 간 변환(위치 및 회전)을 표현하고 엔드 이펙터의 위치와 자세를 계산합니다.
- •행렬 곱셈을 통해 여러 프레임 간 변환을 합성하여 기저 프레임에서 엔드 이펙터 프레임까지의 변환 행렬을 구합니다.
- •머리 위치 추적 및 좌표 변환 기술을 통해 로봇이 사람과 안전하게 상호작용하고, 작업 효율성을 높일 수 있습니다.
- •동차 변환 행렬은 로봇의 엔드 이펙터 위치를 파악하고 물체를 조작하는 데 활용됩니다.
- •좌표 변환 기술은 단순히 머리 위치를 찾는 것 외에도, 다양한 키의 사람에 대한 머리 위치 표현, 엔드 이펙터의 위치 예측 등에 적용될 수 있습니다.


