최신 버전 정보는 1.33.5에서 확인하세요.
7.2 제어권 상실
A. 오류 상황
제어권(Control Authority) 없이 보낸 명령은 실행되지 않습니다. 컨트롤러는 이런 명령이 네 번 들어올 때마다 TOnLogAlarmCB로 경고 알람을 보고합니다.
클라이언트 프로그램이 컨트롤러에서 로봇 제어권을 얻지 못하고 있다는 뜻입니다.
B. 근본 원인 분석
두산 로봇 시스템에서는 한 번에 하나의 클라이언트만 제어권을 가질 수 있습니다. DART Studio, 다른 API 클라이언트, RT 모니터링 도구 같은 다른 프로세스가 연결되어 있으면, 제어권을 가진 클라이언트가 요청에 MANAGE_ACCESS_CONTROL_RESPONSE_YES로 응답할 때까지 추가 클라이언트의 접근이 거부됩니다. MANAGE_ACCESS_CONTROL_FORCE_REQUEST를 보낸 클라이언트는 응답 없이 제어권을 가져갑니다.
이 문제는 주로 다음과 같은 경우에 발생합니다.
DART Studio가 Monitor 모드나 Control 모드로 연결된 채 남아 있는 경우
이전 API 세션이 올바르게 종료되지 않은 경우(예: 비정상 종료)
여러 애플리케이션이 같은 로봇을 동시에 제어하려는 경우
C. 해결 방법
DART Studio를 열고 다른 연결이 활성화되어 있는지 확인하세요.
Settings → API Control Authority로 이동하세요.
다른 클라이언트가 제어권을 가지고 있으면 Release Control을 클릭하세요.
여러 장치를 사용한다면 같은 로봇 IP에 프로그램 하나만 연결되도록 하세요.
필요하면 컨트롤러 서비스를 재시작해 남아 있는 세션을 정리하세요.
sudo systemctl restart dsr-control
클라이언트 코드에서는 사용이 끝나면 반드시 연결을 닫으세요.
Drfl.close_connection();
참고
컨트롤러는 제어권이 없는 클라이언트의 요청을 get_system_version, get_safety_configuration, setup_monitoring_version을 제외하고 모두 무시합니다. 제어권이 없는 클라이언트도 모니터링 데이터, 상태 콜백, 알람 콜백은 받습니다. 위치와 상태 정보는 모니터링 getter 함수(get_current_posj, get_robot_state, …)로 확인하세요.