Damiao AGV 커뮤니티 및 FAQ
OpenArm을 사용한 DBUS 프로토콜, 탐색, 문제 해결 및 모바일 조작에 대해 자주 묻는 질문입니다. 포럼 및 지원 링크.
자주 묻는 질문
Damiao AGV의 정확한 직렬 포트 설정은 무엇입니까?
AGV 펌웨어는 UART5(핀 PD2, RX)를 수신합니다. 8개의 데이터 비트, 짝수 패리티 및 2개의 정지 비트(8E2)를 포함한 100000보드. pyserial에서 다음을 사용하여 포트를 엽니다.
serial.Serial(
port='/dev/ttyUSB0',
baudrate=100000,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_TWO
)
매우 흔한 실수는 8N1(패리티 없음, 1 정지 비트)을 사용하는 것입니다. AGV는 연결된 것처럼 보이지만 모든 프레임을 자동으로 무시하거나 잘못 구문 분석합니다. 항상 사용 PARITY_EVEN 그리고 STOPBITS_TWO.
18바이트 DBUS 프레임은 속도를 어떻게 인코딩합니까?
DBUS 프레임은 리틀 엔디안 비트 패킹을 사용하여 4개의 11비트 채널 값(ch0~ch3)을 바이트 0~5로 압축합니다. 각 채널의 범위는 0~2047이며 1024는 중앙(중립/중지)입니다. 속도 매핑은 다음과 같습니다. ch3 = 1024 + vx × amp (앞으로), ch2 = 1024 + vy × amp (옆쪽), ch0 = 1024 + (−vw) × amp (회전). 바이트 6~15는 0으로 설정된 마우스/키보드 필드입니다. 바이트 16-17에는 ch4가 포함되어 있으며 1024로 고정되어 있습니다. 명세서 전체 채널 맵 테이블의 경우.
AGV가 잠깐 움직였다가 멈췄습니다. 무슨 일이 일어나고 있는 걸까요?
이는 명령 시간 초과 안전 기능이 트리거되는 것입니다. 이내에 이동 또는 정지 명령이 수신되지 않는 경우 --cmd-timeout-ms (기본값 300ms) 에이전트는 자동으로 모든 속도 채널을 0으로 설정하고 AGV가 중지됩니다. 이는 일반적으로 플랫폼이 명령을 충분히 빠르게 전송하지 않거나 네트워크 대기 시간으로 인해 간격이 발생함을 의미합니다. 해결책: (1) 증가 --cmd-timeout-ms 500 대기 시간이 긴 연결의 경우 (2) 브라우저 텔레오프 패널이 적극적으로 반복적으로 전송하고 있는지 확인합니다. move 방향 버튼을 누르고 있는 동안 ~10Hz로 명령을 내리십시오. (3) 플랫폼에 대한 네트워크 RTT를 확인하십시오.
AGV가 잘못된 방향으로 움직입니다. 어떻게 고치나요?
에이전트에서 축 반전 플래그를 사용합니다. 펌웨어 변경이 필요하지 않습니다.
# Flip forward/backward python3 dami_agent.py --session RC-XXXX --serial-port /dev/ttyUSB0 --invert-x # Flip lateral (left/right) python3 dami_agent.py ... --invert-y # Flip rotation direction python3 dami_agent.py ... --invert-z
각 축을 개별적으로 테스트(예: X 명령만 전송, 동작 관찰)하여 실제 설치 방향에 필요한 플래그를 결정합니다.
실제 AGV 없이 테스트할 수 있나요?
예. 통과하다 --mock 시작할 때 dami_agent.py. 모의 모드에서는 직렬 포트가 열리지 않습니다. 제어 루프는 여전히 DBUS 프레임(메모리에 저장됨)을 인코딩하고 원격 분석은 플랫폼 WebSocket으로 전달되며 모든 명령 구문 분석은 동일하게 작동합니다. 이를 통해 전체 WebSocket 파이프라인을 확인하고, 플랫폼 UI를 테스트하고, 하드웨어 없이 CI에 통합할 수 있습니다.
python3 dami_agent.py --session RC-XXXX-XXXX --mock
시작할 때 pyserial.SerialException이 발생합니다. 무엇을 확인해야 합니까?
첫 번째: ls /dev/ttyUSB* 어댑터가 나타나는지 확인하세요. 그렇지 않으면 USB-TTL 어댑터 드라이버가 로드되지 않을 수 있습니다(다른 USB 포트를 사용해 보십시오). 포트가 표시되지만 권한 오류가 발생하는 경우 다이얼아웃 그룹에 사용자를 추가하세요.
sudo usermod -aG dialout $USER
# Log out and back in, then retry
포트가 장치 목록에 나타나지만 에이전트가 여전히 포트를 열 수 없는 경우 다른 프로세스에서 포트를 열었을 수 있습니다(예: 이전 에이전트 인스턴스 또는 직렬 모니터). 포트를 사용하는 다른 모든 프로세스를 닫습니다.
에이전트가 연결되었지만 플랫폼에 원격 측정이 표시되지 않습니다. 무엇이 잘못되었나요?
전달된 세션 ID를 확인하세요. --session 플랫폼 UI에서는 여전히 활성화되어 있습니다. 비활성 상태인 경우 세션이 만료될 수 있습니다. 등록 핸드셰이크 응답에 대한 에이전트의 터미널 출력을 확인합니다. "handshake failed"가 인쇄되거나 "ready"가 인쇄되지 않으면 세션이 만료되었을 수 있습니다. 플랫폼에서 새 세션을 생성하고 새 ID를 에이전트에 전달합니다. 또한 확인 --backend 올바른 플랫폼 WebSocket URL을 가리킵니다.
AGV의 속도를 어떻게 조정합니까?
조정하다 --amp 매개변수. 모션 명령을 나타내는 중심(1024)으로부터의 채널 오프셋을 설정합니다. 기본값은 660이며 최대 속도의 약 64%를 제공합니다. 팔에 장착된 조작 작업 중 더 느리고 더 제어된 작동을 위해서는 다음을 사용하십시오. --amp 400. 열린 바닥에서 최대 속도를 얻으려면 최대 --amp 900. 메카넘 휠은 매우 빠른 속도에서 일부 측면 효율을 잃습니다. --amp 측면 기동의 경우 800 미만.
OpenArm과 통합을 위한 팁
암을 장착하기 전에 케이블 라우팅을 계획하세요.
암을 볼트로 고정하기 전에 AGV의 내부 케이블 관리 채널을 통해 암의 CAN/USB 케이블을 배선하십시오. 암이 장착되면 제거하지 않고는 케이블을 다시 배선하기가 어렵습니다. 손목에 20~30cm 정도 여분의 케이블을 남겨두십시오. 팔의 작업 공간이 측면과 후면으로 확장되어 케이블 장력으로 인해 관절 궤적에 예상치 못한 저항이 발생할 수 있습니다.
암이 장착되어 움직일 때 더 낮은 --amp를 사용하십시오.
AGV의 로봇 팔은 질량 중심을 높입니다. 급격한 측면 가속으로 인해 플랫폼이 흔들릴 수 있으며, 이로 인해 팔의 궤적에 교란이 발생하며, 특히 확장된 도달 위치에서 더욱 그렇습니다. 다음으로 시작 --amp 400 팔 작동 중 기본 동작을 위해 필요하며 필요한 경우에만 증가합니다. 원격 조작 데이터 수집의 경우 일관된 느린 기본 동작은 빠르고 갑작스러운 움직임보다 더 깨끗한 훈련 데이터를 생성합니다.
서로 다른 --node-id 값을 사용하여 두 에이전트를 모두 등록하세요.
동일한 플랫폼 세션에서 AGV 에이전트와 arm 에이전트를 동시에 실행하는 경우 각각에 고유한 에이전트를 제공합니다. --node-id. 이를 통해 플랫폼은 별도의 원격 측정 스트림을 표시하고 에피소드 JSONL 아카이브는 각 노드의 데이터에 독립적으로 레이블을 지정합니다. 권장되는 명명 규칙: damiao-base AGV용 openarm-right / openarm-left 팔 노드의 경우.
텔레오프에서 기본 동작과 팔 동작 조정
Fearless Platform 텔레오프 패널에는 두 노드가 동시에 나타납니다. 유용한 원격 조작 패턴은 베이스를 멈추고, 팔을 움직여서 잡고, 베이스를 움직여 위치를 바꾸고, 반복하는 것입니다. 에피소드 JSONL 아카이브는 타임스탬프를 기준으로 모든 노드의 원격 측정을 동기식으로 캡처하므로 다운스트림 정책은 전체 모바일 조작 궤적에서 학습할 수 있습니다. 각 에피소드 내에서 기본 모션이 팔 모션으로 전환되는 위치에 주석을 추가하려면 플랫폼의 기록 마커를 사용하는 것이 좋습니다.
접촉이 많은 모바일 조작 데이터를 위해 Paxini GEN3 센서 추가
산 파시니 PX-6AX GEN3 OpenArm 손끝 또는 엔드 이펙터의 촉각 센서. 동일한 세션에서 센서 브리지를 세 번째 노드로 등록합니다. 플랫폼은 촉각, 팔 관절 및 기본 속도 스트림을 동기식으로 기록하여 행동 복제 및 강화 학습을 위한 풍부한 접촉 인식 모바일 조작 데이터 세트를 생성합니다.