GitHub

https://github.com/steeze1213

로보테크AI

융합_로보테크 AI 자율주행 로봇 개발자 과정-26/06/16

steezer 2026. 6. 16. 20:40

작업일지 — 2026-06-16 (eye-in-hand 카메라 + 색상 검출)

집게에 카메라를 새로 달아 "물건 자체를 인식해 팔이 알아서 정렬·집기"(비주얼 서보잉)로 방향 전환한 날.


1. 오늘 한 일 요약

# 작업 결과
1 그리퍼 교체 후 값 재조정 (닫기 50→20, 집기손목 155→150)
2 놓기 손목 더 숙임 (고리 걸림 대응, 110→90)
3 주차 기준점 재측정 → park.py 갱신 (Z 236→234, yaw -2.0→-2.2)
4 카메라를 집게 안쪽에 장착 (eye-in-hand) ✅ 연결확인
5 카메라 연결/토픽 확인 (16Hz로 향상)
6 색상(주황) 검출 구현·테스트 (color_detect.py) ✅ 검출 안정
7 비주얼 서보잉 노드 작성 (visual_pick.py) 🟡 미완
8 Claude Code용 전체 인수인계 문서 작성 ✅ HANDOFF_for_claude_code.md

2. 방향 전환 — 왜 카메라를 집게에 달았나

  • 기존: ArUco 마커 보드 + 주차로 위치 맞춤 → 팔 고정각 집기
  • 문제의식: 터틀봇 주차 오차가 심해도 로봇팔이 알아서 회전해 잡게 하고 싶음
  • 해결: 집게에 카메라(eye-in-hand) → 물건(주황) 보고 베이스 회전으로 정렬 → 집기
  • 인식 방법: 색상 검출 채택 (YOLO는 라파이서 무겁고 학습 필요. 물건을 우리가 만드니 색으로 디자인)

3. 확정/변경된 값

그리퍼 (새 집게)

항목
GRIP_CLOSE (닫기) 50 20
GRIP_WRIST (집기 손목) 155 150
PLACE_WRIST (놓기 숙임) 110 90

주차 기준점 (park.py, 재측정)

노이즈
X_TARGET -12.0 (±2) ±0
YAW_TARGET -2.2 (구 -2.0) ±0.34
Z_TARGET 234.0 (구 236) ±0

색 검출 (color_detect.py)

물건: 밝은 주황 테이프
HSV_LOW=(5,120,120), HSV_HIGH=(22,255,255), MIN_AREA=600
화면: 1640x1232, 중심(820,616)
검출 안정적 (cx/cy/area가 물건 따라 정확히 변함)

카메라 부호 실측 (eye-in-hand)

동작 결과 기울기
베이스(CH15) ↑ (145→150→155) cx ↑ (862→1017→1150) 약 29 px/도
어깨(CH13) ↑ (110→120) area ↑ (563→821) 약 26 /도

집기 위치 측정값 (어깨25/팔꿈치20/손목140/베이스150, 물건 가까움)

cx≈760, cy≈240, area≈35000
정중앙 베이스: arm 15 30 (별도 측정)

4. 핵심 난관 (현재 막힌 지점)

① 카메라가 앞(수평)을 봄 → 아래 물건 안 보임

  • 집게 안쪽 카메라가 거의 수평. 물건은 12cm 낮음.
  • 팔 든 대기자세에선 물건이 화면에 안 들어옴.
  • 해결책(다음): 대기자세의 CH9(손목)을 숙여(값↓) 카메라가 아래 향하게. 지금까지 자세값은 다 "카메라 없을 때" 기준이라 카메라용으로 새로 잡아야 함.

② 물건이 집게에 닿아 cx 출렁임

  • 집게 안쪽 카메라라 물건에 가까우면 물건이 집게에 닿아 팔과 같이 움직임 → cx ±600 출렁(로그 확인), area 160000까지 튐 → 정렬 불가.
  • 해결책: 물건에서 떨어진 대기자세에서 cx 정렬 → 정렬되면 open-loop로 하강·집기(집기 중 카메라 무시). visual_pick.py가 이 구조로 작성됨.

사고 (소): 후면으로 팔 뻗는 비상 → stop으로 정리, 베이스 정중앙 30 재확정.


5. visual_pick.py 현재 상태 (미완)

구조: HOME → 대기자세 → cx만 베이스 정렬 → 1초유지 → 어깨25 하강 → 집게20 닫기 → 들기120
BASE_START=30, SH_GRIP=25, ELBOW=20, WRIST=140, ROLL=130
K_BASE=0.6/29, STEP_MAX=4, BASE_SIGN=-1, CX_TOL=25
★미측정/미해결: SH_WAIT(대기 어깨), 대기자세 CH9(손목 숙임), TARGET_CX
  → 대기자세에서 카메라가 물건 보게 CH9 숙이는 설계부터 다시 해야 함

6. 다음 할 일

  1. 대기자세 재설계 (핵심): CH9(손목) 숙여 카메라가 아래 물건 보게. 그 자세에서:
    • 물건 화면에 들어오는 SH_WAIT(어깨)+CH9(손목) 조합 찾기
    • 물건을 집기 위치에 두고 TARGET_CX(좌우 정중앙 cx) 측정
  2. visual_pick.py에 반영 → 정렬 테스트 (stop 준비)
  3. 정렬 후 하강·집기가 좌우 유지하는지 확인
  4. (정밀 거리) area 부정확 → ArUco PnP 또는 motion stereo(두 자세 시차) 검토
  5. 색검출 견고화 (배경 주황빛 오검출 시 HSV 상향/ROI)

7. 오늘 만든/수정한 파일

파일 내용
color_detect.py 신규 — 색(주황) 검출 테스트
visual_pick.py 신규 — eye-in-hand 색 서보잉 (미완)
aruco_ros_node.py yaw 출력 추가
auto_pick.py GRIP_CLOSE20, GRIP_WRIST150, PLACE_WRIST90
park.py 기준점 Z234/yaw-2.2
HANDOFF_for_claude_code.md 신규 — Claude Code 전용 전체 인수인계

전송 필요(윈도우→라파이 scp): color_detect.py, visual_pick.py, auto_pick.py, park.py, aruco_ros_node.py


8. 한 줄 결론

eye-in-hand 색 검출까지 성공(주황 안정 검출, 16Hz). 비주얼 서보는 카메라가 앞을 봐서 대기자세서 물건을 못 보는 게 막힌 지점 — 다음엔 손목(CH9) 숙여 카메라 시야를 아래로 잡는 것부터