1. 개선 배경
- 기존 chair_grasp_moveit_수정전_기존단일구조.py 는 한 파일 안에서 탐지 수신, 좌표 변환, FK/IK 계산, 조인트 명령 발행까지 순차적으로 처리하는 단일 구조였음
- 기능은 단순했지만, 실행 중 어디에서 막히는지 확인하기 어렵고 TF/MoveIt/토픽 설정 변경에 유연하게 대응하기 어려웠음
- 이를 chair_grasp_moveit_debug.py 에서 실행 안정성과 구조적 유연성을 높이는 방향으로 개선함
2. 단일 흐름에서 상태 기반 실행 구조로 개선
- 기존: “데이터가 오면 바로 계산하고 바로 실행”하는 직선형 구조
- 개선: JointState 준비 여부, Detection 준비 여부, FK/IK 가능 여부를 단계적으로 확인한 뒤 실행하는 구조로 변경
- 효과: 준비되지 않은 상태에서 무리하게 실행하지 않고, 조건이 만족될 때만 grasp 동작을 시작할 수 있게 됨
3. 실행 구조 안정화
- 기존: 단일 실행 흐름 중심
- 개선:
- ReentrantCallbackGroup 적용
- MultiThreadedExecutor 적용
- 서비스 호출과 토픽 콜백 처리를 더 안정적으로 병행할 수 있게 변경
- 효과: FK/IK 서비스 호출 중에도 subscription/timer가 멈추지 않도록 개선
4. 파라미터 기반 구조로 확장
- 기존: frame, link, topic 설정이 고정값 중심
- 개선:
- joint_state_topic
- preferred_camera_frame
- tf_base_frame
- moveit_base_frame
- tip_link
- fk_timeout_sec같은 실행 조건을 파라미터로 분리
- 효과: 코드 수정 없이 실행 옵션만 바꿔 다양한 환경에 대응 가능
5. TF와 MoveIt 기준 분리
- 기존: 하나의 BASE_FRAME 값을 TF lookup 과 MoveIt FK/IK 요청에 공통 사용
- 개선: TF용 기준 프레임과 MoveIt용 기준 프레임을 분리
- 효과: TF 트리 기준과 MoveIt 계산 기준이 다를 때도 각각 독립적으로 맞출 수 있음