20260914-20260922 주간학습정리
20260914-20260922 주간학습정리
이번 주 목표
지난주에 C++ 언어 공부를 마치고, 이번 주에는 Gazebo를 이용한 로봇팔 시뮬레이션을 진행했다.
최종 목표는 가상의 공간에서 로봇팔이 사람의 개입 없이 공을 집어 바구니에 넣도록 만드는 것이다.
이를 위해 다음과 같은 순서로 작업을 계획했다.
- 로봇팔, 바구니, 공을 시뮬레이션하기 위한 모델 구축
- 키보드로 로봇팔을 움직이는 기능 구현
- 로봇팔이 공을 집어 바구니에 넣는 Pick & Place 기능 구현
완료한 작업
이번 주에는 1단계와 2단계를 완료했다.
- 로봇팔, 바구니, 공을 포함한 Gazebo 시뮬레이션 모델 구축
- 키보드 입력을 이용한 로봇팔 제어
처음 선택한 로봇팔 모델에는 그리퍼가 부착되어 있지 않았다. 여러 방법을 검토한 뒤 RG2 그리퍼가 포함된 모델로 변경했고, 해당 모델을 이용해 로봇팔을 움직이는 데 성공했다.
Pick & Place 구현 계획
아직 Pick & Place 기능은 구현하지 않았으며, 이번 주 남은 기간에 고정 joint waypoint 기반으로 구현할 예정이다.
현재는 역기구학을 적용하지 않고, 미리 정의한 pose와 joint waypoint를 순서대로 실행하는 방식으로 먼저 동작을 완성하려고 한다. 처음부터 모든 로봇공학 기술을 적용하기보다, 동작 성공에 필요한 최소 시스템을 구현한 뒤 점진적으로 기능을 발전시키는 방향을 선택했다.
이후에는 다음 순서로 기능을 확장할 계획이다.
IK → Trajectory / Motion Planning → TF2 → Vision → Feedback
상태 머신 설계
자동 동작은 다음 순서의 상태 머신으로 구현한다.
1
2
3
4
5
6
7
8
9
10
11
12
HOME
-> OPEN_GRIPPER_FOR_PICK
-> APPROACH_BALL
-> LOWER_TO_BALL
-> CLOSE_GRIPPER
-> LIFT_BALL
-> MOVE_ABOVE_BASKET
-> LOWER_INTO_BASKET
-> RELEASE_BALL
-> RETREAT
-> RETURN_HOME
-> DONE
상태별 의미
| 상태 | 동작 |
|---|---|
HOME | 시작 시 로봇의 기준 관절 자세. 완료 후에도 이 자세로 돌아온다. |
OPEN_GRIPPER_FOR_PICK | 공에 접근하기 전에 RG2 손가락을 완전히 연다. |
APPROACH_BALL | 공과 충돌하지 않도록 공 위쪽의 접근 자세로 이동한다. |
LOWER_TO_BALL | 그리퍼가 공을 감쌀 수 있는 높이까지 천천히 내려간다. |
CLOSE_GRIPPER | 두 손가락을 닫아 공을 잡는다. 닫힌 뒤 안정화 대기 시간을 둔다. |
LIFT_BALL | 공을 바닥에서 들어 올려 운반 높이까지 올린다. |
MOVE_ABOVE_BASKET | 공을 충분히 높이 든 상태로 바구니 위쪽으로 이동한다. |
LOWER_INTO_BASKET | 공을 바구니 내부의 놓기 위치까지 내린다. |
RELEASE_BALL | 그리퍼를 열어 공을 바구니에 놓는다. |
RETREAT | 바구니와 충돌하지 않도록 위쪽으로 후퇴한다. |
RETURN_HOME | 사전에 정의한 홈 자세로 복귀한다. |
DONE | 동작 완료를 로그로 알리고 다음 시작 입력을 대기한다. |
현재는 정상 동작 흐름을 먼저 구현하고, 이후 다음과 같은 실패 처리도 추가할 예정이다.
- waypoint 도착 여부 확인
- 그리퍼 동작 완료 여부 확인
- 공을 제대로 잡았는지 확인
- 이동 실패나 충돌 발생 시 동작 중단 및 오류 상태 전환
학습한 내용
- Gazebo 튜토리얼과 How-to Guide를 확인하고 실습했다.
- 현직자가 알려주는 로보틱스 시스템 완전 해부: 부품부터 통신까지 강의를 키워드 중심으로 학습했다.
- 로봇팔, 그리퍼, 관절 제어, 역기구학, 경로 계획, TF2, 비전, 피드백 제어에 대한 이해를 넓혔다.
이번 주 남은 계획
이번 주 남은 기간에는 다음 작업을 진행한다.
- 고정 joint waypoint 기반 Pick & Place 기능 구현
- 공을 집고 놓는 각 단계의 waypoint 정의
- 정상 동작 흐름을 상태 머신으로 연결
- Gazebo에서 반복 실행하며 충돌과 위치 오차 확인
This post is licensed under CC BY 4.0 by the author.
