Skip to content
Home
Back to Projects

REAL-WORLD ROBOTICS

실환경 로봇 실험 시스템 구축

실제 로봇 실험을 위한 로봇 시스템 통합, HIL 환경 구축, F/T 센서 기반 실시간 모니터링 및 멀티모달 데이터 수집 시스템을 개발했습니다.

연구실 자체 프로젝트

로봇 팔과 카메라, 조명, 작업대가 구성된 실제 로봇 실험 환경

Robot Platforms

RB3-730 협동 로봇 2대와 작업대로 구성한 로봇 실험 플랫폼

Robot Platform

RB3-730 협동 로봇 2대를 사용해 실제 로봇 실험을 위한 플랫폼을 구성하였습니다. 두 로봇의 제어 인터페이스를 통합하는 별도의 wrapper를 구현하여, 양팔을 하나의 공통 인터페이스에서 관리·제어할 수 있는 dual-arm environment를 구축하였습니다.

로봇 팔에 장착된 PGC-50-35 그리퍼
RFT64-SB01 F/T 센서

Grippers & Sensors

PGC-50-35 그리퍼와 RFT64-SB01 F/T 센서를 연동해 사용하였으며, F/T 센서 데이터는 100 Hz 주기로 수집하였습니다.

Head camera로 사용하는 Intel RealSense D455
로봇 손목에 장착한 Intel RealSense D405

Cameras & Hardware

상단 카메라는 Intel RealSense D455, 손목 카메라는 Intel RealSense D405를 사용했습니다. Teleoperator로는 3Dconnexion의 SpaceMouse Compact를 사용했습니다.

Real-Time F/T Monitoring

3Dconnexion SpaceMouse Compact를 이용한 teleoperation은 end-effector의 위치와 자세를 직관적으로 조작할 수 있지만, 별도의 haptic feedback을 제공하지 않기 때문에 작업자가 로봇과 환경 사이에 발생하는 접촉력을 직접 인지하기 어렵습니다. 특히 contact-rich manipulation에서는 카메라 영상만으로 현재 end-effector에 어느 정도의 힘과 토크가 가해지고 있는지 판단하기 어렵고, 순간적으로 큰 접촉력이 발생하더라도 이를 즉각적으로 인지하지 못할 수 있습니다. 이를 보완하기 위해 양팔 end-effector에서 측정되는 6-axis F/T 신호를 teleoperation 화면과 함께 실시간으로 확인할 수 있는 모니터링 시스템을 구축하였습니다.

Initial Design — STL-based Spatial Visualization

초기에는 gripper의 STL model을 기반으로 한 3D spatial visualization을 구현하였습니다. 로봇의 TCP pose를 이용해 실제 end-effector의 위치와 자세를 3D scene에 반영하고, F/T sensor에서 측정한 힘과 토크를 벡터 형태로 함께 표시하였습니다. 또한 world-frame XYZ 축을 추가하여 gripper의 현재 자세와 외력 방향의 관계를 직관적으로 확인할 수 있도록 구성했습니다. 양팔에 대해 각각 visualization을 생성한 뒤 카메라 이미지와 하나의 화면으로 결합하여, 실제 작업 장면과 end-effector에 가해지는 외력을 동시에 모니터링할 수 있도록 하였습니다.

해당 방식은 특히 gripper의 자세와 힘 방향을 공간적으로 함께 확인할 수 있다는 점에서 유용했습니다. 하지만 실제 teleoperation 과정에서는 몇 가지 한계가 있었습니다. 힘은 직선 벡터로 표현했을 때 비교적 직관적이지만, 토크는 회전축과 회전 경향을 나타내는 물리량임에도 동일한 화살표 형태로 표현되어 즉각적인 해석이 어려웠습니다. 또한 매 순간의 F/T vector만 보여주기 때문에 순간적인 peak, 지속적인 contact load, vibration 등 시간에 따른 변화 양상을 확인하기 어려웠고, 작업자가 특정 순간을 놓치면 직전에 발생한 큰 contact event를 다시 파악하기도 어려웠습니다. 이러한 한계를 바탕으로 이후에는 3D spatial visualization 대신 축별 F/T 값과 최근 변화 추이를 함께 확인할 수 있는 대시보드 형태로 모니터링 인터페이스를 재설계하였습니다.

Final Design — Time-Series F/T Dashboard

이러한 한계를 바탕으로 최종 구현에서는 3D STL visualization을 제거하고, 좌/우 end-effector의 힘과 토크를 time-series 형태로 직접 모니터링하는 대시보드 형태로 변경하였습니다. 각 arm에 대해 Fx, Fy, Fz와 Tx, Ty, Tz를 독립적으로 표시하고, 힘과 토크를 별도의 행으로 분리하였습니다. 실제 카메라 이미지를 화면 상단에 유지한 채 그 아래에 좌/우 힘 패널과 토크 패널을 배치하여, 작업 장면과 F/T state를 하나의 화면에서 동시에 확인할 수 있도록 구성했습니다.

각 패널은 또한 전체 vector norm을 함께 제공하도록 구성하였습니다. 따라서 작업자는 최근 신호의 변화 추이를 그래프로 확인하는 동시에, 현재 Fx/Fy/Fz 또는 Tx/Ty/Tz의 정확한 값을 바로 읽을 수 있습니다. X/Y/Z 축에는 일관된 색상을 적용하여 여러 패널 간에도 동일한 축을 빠르게 추적할 수 있도록 하였습니다.

Time-series 그래프는 전체 history를 별도 자료구조에 계속 누적하는 방식 대신 고정 크기의 image buffer를 scrolling하는 방식으로 구현하였습니다. 매 업데이트마다 기존 trace를 한 픽셀 씩 왼쪽으로 이동시키고, 가장 오른쪽 열에 이전 샘플과 현재 샘플을 연결하는 새로운 line segment만 추가합니다. 이 방식은 모니터링 시간이 길어져도 visualization에 사용하는 메모리와 화면 크기가 증가하지 않으며, 최근 F/T history만 지속적으로 유지할 수 있다는 장점이 있습니다.

Visualization이 teleoperation의 타이밍에 영향을 주지 않는 것을 중요한 설계 조건으로 유지하여 control loop에서는 가장 최신 visualization frame 하나만 queue에 전달하고, OpenCV window rendering은 별도의 daemon thread에서 처리합니다. Queue가 이미 차 있는 경우에는 기존 프레임을 제거하고 새로운 프레임으로 교체하므로, 랜더링 속도가 일시적으로 느려져도 과거 프레임이 쌓이면서 display latency가 증가하지 않습니다.

HIL System

Human-in-the-Loop action 선택 흐름Dual SpaceMouse 입력과 버튼 및 조작 모드를 처리한 뒤 intervention 여부에 따라 action을 선택합니다. Intervention이 없으면 policy action을 그대로 사용하고, 있으면 expert action에 invsymlog와 gripper 끝단 기준 translation 보정을 적용합니다. 최종 action으로 env.step()을 실행하고 intervention 및 조작 상태를 info에 기록합니다.Policy actionDual SpaceMouseInput & mode handling6-DoF · buttons · locksIntervened?NoYesPolicy actionunchangedExpert actioninvsymlog + tip correctionenv.step()Record info

HIL Teleoperation Demo영상 준비 중

Policy & Human Intervention

Policy action과 Dual SpaceMouse 기반 human intervention을 중재하는 Human-in-the-Loop (HIL) wrapper를 구현하였습니다. 작업자 입력 유무에 따라 매 step에서 실행할 action을 선택합니다.

SpaceMouse의 움직임이나 gripper 입력이 감지되면 intervened=True로 판단하고, policy action을 expert action으로 대체합니다. Intervention이 없으면 policy action을 그대로 사용합니다. 실행 중에는 human intervention이 발생한 action과 버튼·회전 잠금 상태를 함께 기록하여, 작업자의 개입과 조작 과정을 확인할 수 있도록 하였습니다.

Teleoperation & Logging

Dual SpaceMouse로 로봇의 위치·자세와 gripper를 조작하며, 이동·회전 잠금과 오른팔 단독 조작을 지원합니다. 입력에는 invsymlog를 적용해 로봇이 사용하는 action 형식으로 변환합니다.

미세한 SpaceMouse 움직임으로 불필요한 intervention이 발생하지 않도록 입력 크기에 임계값을 적용하였습니다. 또한, gripper의 개폐 동작 delay를 고려하여 버튼 입력에 0.5초의 최소 간격을 설정하고, 개폐 명령이 짧은 시간에 반복 전달되지 않도록 하였습니다.

SpaceMouse 회전 입력 시 TCP 중심 회전으로 인해 그리퍼 끝단의 위치가 크게 변하는 문제를 줄이기 위해, 그리퍼 길이와 현재 자세를 기반으로 끝단의 변위를 계산했습니다. 계산된 변위를 Cartesian translation에 보상하여, 그리퍼 끝단을 중심으로 회전하는 것에 가까운 직관적인 원격 조작을 구현했습니다.

로봇 환경이 특정 조작 장치에 종속되지 않도록, 장치별 입력을 공통 action 형식으로 변환하는 teleoperator-agnostic 구조로 설계하였습니다. 다른 장치는 이 형식에 맞는 입력 연동을 추가하는 방식으로 확장할 수 있습니다.

Data Structure

실제 로봇 실험에서 수집한 데이터는 한 step의 관측, 행동, 다음 관측과 보상·종료 정보를 하나의 transition으로 묶어 저장합니다. 세 카메라 영상과 양팔 로봇 상태를 포함하며, human intervention이 발생한 경우 해당 action을 추가로 기록합니다.

Transition

Transition의 최상위 데이터 필드
KeyFormat / range내용
observationsdict현재 step의 카메라 영상과 로봇 상태
actions(14,)왼팔과 오른팔의 position, orientation, gripper action
next_observationsdict다음 step의 관측. observations와 동일한 key 구성
rewards0–1보상값. 예시 transition에서는 0
masks1.0 - done진행 중에는 1.0, 종료 시에는 0.0
donesFalse / True에피소드 종료 여부
infosdict버튼 입력, 작업 성공 여부 및 사용자 개입 정보

Observations

observations와 next_observations는 아래 네 개의 key를 공유하며, 각각 행동 실행 전후의 관측을 저장합니다.

카메라 관측과 state의 key 및 shape
KeyShape내용
left/head_cam(1, 128, 128, 3)상단 카메라 영상
left/wrist_cam(1, 128, 128, 3)왼팔 손목 카메라 영상
right/wrist_cam(1, 128, 128, 3)오른팔 손목 카메라 영상
state(1, 38)양팔의 gripper 상태, TCP pose·velocity, force·torque

Robot State

왼팔 19차원과 오른팔 19차원을 이어 붙인 38차원 state입니다.

38차원 state의 팔별 인덱스
FieldLeft indexRight index
gripper_pose019
tcp_force1–320–22
tcp_pose4–923–28
tcp_torque10–1229–31
tcp_vel13–1832–37

Actions

각 팔의 position 3개, orientation 3개, gripper action 1개를 묶은 총 14차원 action입니다.

14차원 action의 팔별 인덱스
FieldLeft indexRight index
position0–27–9
orientation3–510–12
gripper_action613

Episode & Intervention Info

기본 infos에는 네 버튼의 입력 상태와 작업 성공 여부를 저장합니다. 사용자가 개입한 step에는 intervene_action이 추가되어, 해당 시점의 개입 행동을 함께 확인할 수 있습니다.

기본 infos 필드와 사용자 개입 시 추가되는 필드
KeyShape / example내용
left1left2right1right2
0양팔의 버튼 상태. 수집 샘플에서는 네 버튼 모두 0
succeed
False작업 성공 여부. 수집 샘플에서는 False
intervene_action
(14,)사용자 개입 시에만 추가되는 action. actions와 동일한 양팔 구성 및 인덱스 순서

이미지 준비 중

실험 환경

이미지 준비 중

시스템 통합

이미지 준비 중

로봇 실험 데모

Tools

사용한 도구와 기술 스택을 추가할 예정입니다.

  • Tool 01
  • Tool 02
  • Tool 03
  • Tool 04