[SIM→HW] [SAFETY] 실습 3-3: ROS 2 JointState 안전 브리지

목표

  • ROS 2 Jazzy 패키지를 빌드하고 이름 기반 JointState 릴레이를 관찰한다.
  • 잘못된 관절 집합, NaN, timeout을 주입해 실패 경로를 확인한다.

빌드

cd ebook/book/03_so101_kinematics_teleop
cd code/ros2_ws
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
source install/setup.bash

정상 입력

터미널 A:

ros2 run so101_training_bridge safe_joint_bridge

터미널 B:

source /opt/ros/jazzy/setup.bash
ros2 topic echo /follower/joint_command

터미널 C:

source /opt/ros/jazzy/setup.bash
ros2 topic pub -r 20 /leader/joint_states sensor_msgs/msg/JointState \
"{name: ['wrist_roll','elbow_flex','gripper','shoulder_pan','wrist_flex','shoulder_lift'], position: [0.1,0.4,50.0,0.2,-0.1,-0.3]}"

출력 배열은 입력 순서가 아니라 JOINTS의 계약 순서로 재정렬되어야 한다.

실패 주입

  1. gripper를 이름 배열에서 제거한다.
  2. 이름은 6개, 위치는 5개만 보낸다.
  3. 정상 발행을 중단하고 0.25 s 이후 timeout 로그를 확인한다.
  4. control_period_s와 입력 발행률을 다르게 설정하고 추종 지연을 관찰한다.

모니터

ros2 run so101_training_bridge joint_state_monitor

/follower/joint_states에 fake 상태를 발행해 유효 프레임과 stale 경고를 확인한다.

실물 연결 전 검토

  • 출력 토픽을 모터 드라이버에 직접 연결하지 않는다.
  • Follower의 실측 초기 자세를 브리지에 공급하도록 인터페이스를 수정한다.
  • HOLD 명령과 torque-off의 의미를 드라이버 계약에 정의한다.
  • E-stop 복구에는 수동 승인과 재정렬 단계를 둔다.

장비 없이 먼저 해보기

가상실습

실제 장비의 정밀한 동작을 재현하는 대신, 제어값을 바꾸고 결과를 관찰하는 실습 흐름을 안전하게 연습합니다.

Browser simulation

2링크 로봇팔 기구학

관절각을 직접 바꾸어 순기구학을 관찰하거나, 목표점을 정해 단순 역기구학 추종을 실행합니다.

개념 모형
실습 과제: 관절각을 바꿔 말단 위치를 예측한 뒤, 목표점을 이동하고 역기구학 추종 결과와 비교하세요.
초록: 목표 · 주황: 말단

말단 X

97.7mm

말단 Y

91.0mm

위치 오차

42.3mm

수동 관절 조작

  • ›대기: 목표점을 정하고 추종을 실행하세요.
단순화 안내: 지연, 마찰, 백래시, 센서 비선형성 등 실제 장비의 모든 특성을 재현하지 않습니다. 실물 적용 전에는 저속·제한된 작업공간·비상 정지 조건에서 다시 검증하세요.
가상실습 해설과 적용 범위

관절각과 목표 위치의 관계를 먼저 확인하세요. 이 기구학 모형만으로 안전한 텔레오퍼레이션이 보장되지는 않습니다. 아래 보고서에서는 정렬, timeout, 속도 제한, 자동 재개 금지 조건을 별도로 설명하세요.

직접 답하고 피드백 받기

답안은 이 브라우저에 저장됩니다. AI 평가는 학습을 위한 피드백이며 실제 코드 실행이나 장비 동작을 검증하지 않습니다.

1. 수행 결과와 근거

위 과제를 수행하고 설정값, 관찰 결과, 해석과 개선안을 작성하세요. 실제 장비 없이 한 경우 가상실습 결과임을 명시하세요.

0 / 8,000자 · 최소 10자
이 장의 예제 코드·설정 파일 (6)

이 장의 자가 점검·가상실습