원격웹캠동작 - dingdongdengdong/astra_ws GitHub Wiki
원격 조종 웹캠(사용자 컴퓨터 웹캠)을 통해 동작을 수행하고 싶으시군요. 이 웹캠은 index.js
에서 navigator.mediaDevices.getUserMedia
를 통해 직접 접근하며, 그 영상은 로컬에서 OpenCV.js로 처리되어 손 제스처 인식을 통해 hand
데이터 채널을 통해 로봇으로 제어 신호를 보냅니다.
이 기능을 활성화하고 사용하기 위한 단계는 다음과 같습니다:
1. 전체 ROS 2 시스템 실행
먼저, 로봇과 웹 서버, 그리고 웹 페이지의 백엔드 통신을 담당하는 전체 ROS 2 시스템을 구동해야 합니다.
-
ROS 2 환경 소싱:
source /opt/ros/<YOUR_ROS_DISTRO>/setup.bash source install/setup.bash
(새로운 터미널을 열 때마다 실행해야 합니다.)
-
런치 파일 실행:
ros2_ws
디렉터리에서start.launch.py
파일을 실행합니다.ros2 launch astra_controller start.launch.py
이 명령을 통해
teleop_web_node
(내부에webserver.py
와teleoprator.py
포함)를 포함한 필요한 모든 ROS 2 노드가 시작됩니다.
2. 웹 브라우저에서 텔레오퍼레이션 인터페이스 접속
- URL 접속: 웹 서버가 성공적으로 시작되면 콘솔에 표시되는 URL(
https://localhost:9443/index.html
)로 웹 브라우저를 통해 접속합니다.- 보안 경고가 나타나면 무시하고 진행합니다.
3. 원격 조종 웹캠 활성화 및 제어 시작
웹 페이지에 접속하면, "Capture Playback" 섹션 아래에 있는 사용자 컴퓨터 웹캠을 활성화하고 손 제스처를 통해 로봇을 조종할 수 있습니다.
-
Start Stream
버튼 클릭: 웹 페이지 왼쪽 상단에 있는Start Stream
버튼을 클릭하여 로봇 카메라로부터의 비디오 스트림을 시작합니다. 이 단계에서video-head
,video-wrist-left
,video-wrist-right
화면에 로봇 카메라 영상이 나타날 것입니다. -
Start Capture
버튼 클릭:Start Stream
버튼 아래에 있는Start Capture
버튼을 클릭합니다.- 이 버튼을 클릭하면 브라우저가 사용자 컴퓨터의 웹캠 접근 권한을 요청할 것입니다. 반드시 허용해야 합니다.
- 권한을 허용하면 "Capture Playback" 섹션 아래의
<canvas id="canvas-imshow">
영역에 사용자 컴퓨터의 웹캠 영상이 표시되기 시작할 것입니다. 이 영상은 로컬에서 OpenCV.js를 통해 처리됩니다.
-
Calibrate Camera
버튼 클릭 (필요시): 만약 손 제스처 인식이 정확하지 않다면,Calibrate Camera
버튼을 클릭하여 웹캠 캘리브레이션을 수행해야 할 수 있습니다. 이는 ARUCO 마커 기반의 손 제스처 인식을 위해 카메라의 내부 파라미터 및 왜곡 계수를 보정하는 과정입니다. -
Connect Pedal
및Calibrate Pedal
버튼 클릭 (페달 사용 시): 만약 페달 장치를 사용하여 로봇을 조종한다면,Connect Pedal
및Calibrate Pedal
버튼을 클릭하여 페달 장치를 연결하고 캘리브레이션 해야 합니다. -
손 제스처를 통한 로봇 조종:
Start Capture
가 활성화되고 웹캠 영상이canvas-imshow
에 표시되면, 이제 웹캠 앞에서 손 제스처를 수행하여 로봇을 조종할 수 있습니다.index.js
의capture()
함수는 웹캠 영상에서 ARUCO 마커를 감지하고, 이 마커의 위치와 자세 정보를handChannel
을 통해webserver.py
로 보냅니다.webserver.py
의on_datachannel
콜백은 이hand
채널 데이터를 수신하여teleopoperator.on_hand
콜백으로 전달합니다.teleoprator.py
의hand_cb
메서드는 이 데이터를 바탕으로 로봇 팔의 목표 자세를 계산하고 제어 명령을 ROS 2 토픽으로 발행하여 로봇을 움직입니다.
요약: 웹 브라우저에서 Start Capture
버튼을 누르는 것이 사용자 컴퓨터 웹캠을 활성화하고 손 제스처를 통한 원격 조종을 시작하는 핵심 단계입니다.