2025-06-01 15:45:21

 

로봇 시뮬레이션 프로그램 개발 (Forward Kinematics 기반)

2주 차 프로젝트 목표
2개

1. DH(Denavit–Hartenberg) 파라미터를 이용한
Forward Kinematics 알고리즘을 구현

2. 이를 통해 로봇의 각 관절 위치를 계산 및 시각화하는 시뮬레이션 프로그램을 개발

################################################################

개발 항목 시작

1. DH 변환 행렬 계산 함수

DH 파라미터 (`θ`, `d`, `a`, `α`)를 입력받아 다음 4x4 변환 행렬을 생성
--파라미터 설명
[
    | 기호        | 설명                 | 단위  |
| --------- | ------------------ | --- |
| θ (theta) | 관절의 회전각 (z축 기준 회전) | rad |
| d         | z축을 따라의 이동 거리      | m   |
| a         | x축을 따라의 거리 (링크 길이) | m   |
| α (alpha) | x축을 기준으로의 회전각      | rad |

]

Ti​
=
[
    cosθ    −sinθcosα   sinθsinα    acosθ
    sinθ    cosθcosα    −cosθsinα   asinθ
    0       sinα        cosα        d
    0       0           0           1
]

2. Forward Kinematics 함수 구현

여러 개의 DH 파라미터를 받아 모든 관절 위치의 최종 위치(End Effector Position)를 계산

복수의 변환 행렬을 곱해 전체 좌표 변환 행렬을 산출이 목적

3. 시뮬레이션 프로그램 개발

--시각화 도구 예시:

    `matplotlib` 3D plot
    `PyOpenGL` 또는 `vpython` 등 사용 가능

--입력:

    관절 개수 및 각 관절의 DH 파라미터

--출력:

    로봇 관절 위치 시각화
    End Effector의 좌표 출력

--추천 기술스택

언어: Python
수치 계산: `numpy`
시각화: `matplotlib.pyplot (3D)` 또는 `vpython`

###
내 3d프린터 자동화의 목표!!!
| 동작 단계      | 설명                                 |
| ---------- | ---------------------------------- |
| ① 출력 완료 신호 | 프린터가 G-code 끝나고 "작업 완료" 신호 발생      |
| ② 로봇팔 작동   | FK → IK → 로봇 제어기로 관절 각도 전달         |
| ③ 출력물 집기   | 그립퍼가 출력물 위치까지 이동 → 파지              |
| ④ 옮기기/보관   | 특정 위치(예: 보관 트레이)에 내려놓기             |
| ⑤ 문 닫고 재출력 | 프린터 덮개 닫고, `OctoPrint` API 등으로 재출력 |

 

 

예시 출력

DH 파라미터 기반 변환 행렬 계산기
몇 개의 관절(DH 파라미터 셋)을 입력하시겠습니까? : 4

1번 관절의 DH 파라미터를 입력하세요:
  θ (deg): 0.707
  d (m): -0
  a (m): 0.707
  α (deg): 0.707

  → 변환 행렬:
[[ 1.    -0.012  0.     0.707]
 [ 0.012  1.    -0.012  0.009]
 [ 0.     0.012  1.    -0.   ]
 [ 0.     0.     0.     1.   ]]

2번 관절의 DH 파라미터를 입력하세요:
  θ (deg): 0
  d (m): 0
  a (m): 0
  α (deg): 0

  → 변환 행렬:
[[ 1. -0.  0.  0.]
 [ 0.  1. -0.  0.]
 [ 0.  0.  1.  0.]
 [ 0.  0.  0.  1.]]

3번 관절의 DH 파라미터를 입력하세요:
  θ (deg): 0
  d (m): 0
  a (m): 0
  α (deg): 0

  → 변환 행렬:
[[ 1. -0.  0.  0.]
 [ 0.  1. -0.  0.]
 [ 0.  0.  1.  0.]
 [ 0.  0.  0.  1.]]

4번 관절의 DH 파라미터를 입력하세요:
  θ (deg): 0
  d (m): 0
  a (m): 0
  α (deg): 0

  → 변환 행렬:
[[ 1. -0.  0.  0.]
 [ 0.  1. -0.  0.]
 [ 0.  0.  1.  0.]
 [ 0.  0.  0.  1.]]