이 기사에서는 VEXlink를 사용하여 로봇 간 통신 상태와 Jetson에 대한 상태를 보고하는 대시보드를 표시하는 예제 프로젝트를 다룹니다. ai_demo 프로젝트는 Github에 호스팅됩니다. 이 데모 프로젝트는 USB 직렬 연결을 통해 Jetson 프로세서에서 데이터를 수집합니다. 데이터가 수신되면 V5 Brain의 화면에 표시되고 VEXlink를 통해 연결된 파트너 V5 로봇에도 전송됩니다.

참고: 이 프로젝트에는 최신 버전의 V5용 VS Code Extension이 필요합니다. 여기에서 V5 용 VS Code 확장 프로그램을 다운로드하세요.


NVIDIA Jetson Nano에서 VEX V5 두뇌 통신으로

Jetson 프로세서에는 VEX AI 소프트웨어에서 다음 데이터를 수집하는 애플리케이션이 포함되어 있습니다.

VEX AI를 사용하는 과정을 보여주는 다이어그램으로, V5 로봇 시스템에서 효과적으로 구현하기 위한 주요 구성 요소와 워크플로를 보여줍니다.

로봇 위치 데이터:

  • 필드 중심으로부터 미터 단위의 로봇의 X,Y 위치입니다.
  • 로봇의 방위각(방향), 고도(피치), 회전(롤)은 모두 라디안 단위입니다.

객체 감지 데이터(3가지 유형):

VEX AI 시스템 구성 요소와 그 상호 작용을 설명하는 다이어그램으로, VEX AI가 V5 카테고리의 로봇 기능을 어떻게 향상시키는지 보여줍니다.

이미지 감지(유형 1):
  • 이 데이터는 VEX AI Intel 카메라가 감지한 개체를 나타냅니다.
  • 이 데이터는 카메라 이미지를 참조하여 개체를 설명합니다.
  • X, Y, 너비, 높이 값은 픽셀 단위입니다. 픽셀 값은 이미지 및 개체 감지 상자의 왼쪽 상단을 참조합니다. 이미지 해상도는 640x480입니다.

 

V5 카테고리 설명의 일부로, 로봇공학에서의 응용 분야와 이점을 강조하여 VEX AI의 기능과 구성 요소를 설명하는 다이어그램입니다.

지도 감지(유형 2):

  • 이 데이터는 GPS 센서와 동일한 좌표계에서 필드에 있는 물체의 위치를 ​​미터 단위로 나타냅니다.
  • 각 객체에는 필드 중심을 기준으로 한 객체의 위치도 포함됩니다. X 및 Y 값은 해당 축의 필드 중심으로부터 미터 단위입니다. Z 값은 필드 타일(높이)로부터의 미터입니다.

감지 개체(유형 3):

VEX AI 시스템 구성 요소와 상호 작용을 설명하는 다이어그램으로, V5 로봇 플랫폼 내의 주요 특징과 기능을 강조하고 있습니다.

  • 이는 감지된 개체에 대한 모든 정보를 캡슐화합니다.
  • 각 개체에는 감지된 개체의 분류를 나타내는 값이 포함되어 있습니다. (클래스 ID: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • 각 객체에는 VEX AI의 탐지 신뢰도를 나타내는 확률도 포함되어 있습니다. 이는 확률이 낮은 탐지를 제거하는 model.py의 필터 뒤에 있습니다.
  • 또한 VEX AI Intel 카메라에서 물체의 깊이가 미터 단위로 보고됩니다.
  • 각 객체에는 이미지 감지 및 지도 감지 기능이 부착되어 실제 세계뿐만 아니라 이미지에서도 객체의 좌표를 나타냅니다.

ai_demo 프로그램 분석:

메인.cpp

V5 카테고리의 VEX AI의 특징과 기능을 설명하는 다이어그램으로, 로봇 응용 분야에서 이 기술을 효과적으로 사용하는 방법을 보여줍니다.

VEX 프로젝트에 대한 표준에는 다음이 포함됩니다.

VEX AI 사용 섹션의 V5 카테고리 설명의 일부로, VEX AI 시스템 구성 요소와 그 상호 작용을 설명하는 다이어그램입니다.

Jetson 클래스의 인스턴스를 선언합니다. 이 클래스는 Jetson에 데이터 요청을 보내고 USB 직렬 연결을 통해 데이터를 수신하는 데 사용됩니다.

#MANAGER_ROBOT 1 정의

V5 로봇공학 맥락에서 VEX AI의 기능과 구성 요소를 설명하는 다이어그램으로, 주요 기능과 사용 지침을 강조하고 있습니다.

robots_link 클래스의 인스턴스를 선언합니다. 이 개체는 이 로봇과 파트너 로봇을 연결하고 데이터를 전송하는 데 사용됩니다. 이 동일한 프로젝트를 두 개의 별도 로봇에 다운로드할 수 있습니다. 하나의 로봇에는 다음 라인이 필요합니다.

//#MANAGER_ROBOT 1 정의

두 번째 로봇에 코드를 로드하기 전에 해당 줄을 주석 처리해야 합니다.

robots_link 클래스는 로봇의 VEXlink를 설정하고 두 로봇 간의 데이터 전송 및 수신을 처리합니다. 해당 클래스가 어떻게 작동하는지에 대해서는 이 기사에서 자세히 다루지 않을 것입니다. 먼저 VEXlink가 어떻게 작동하는지 이해하는 것이 좋습니다. V5 VEXlink API 사용에 대한 자세한 내용은 이 문서 라이브러리에 대한 설명과 로봇 간 통신에 효과적으로 라이브러리를 사용하는 방법을 설명합니다.

  • 대회 이벤트 핸들러

    V5 로봇 시스템에서 VEX AI의 기능과 구성 요소를 설명하는 다이어그램으로, 로봇 성능과 프로그래밍을 향상시키는 기능을 강조하고 있습니다.

    VAIC와 VRC의 가장 큰 차이점 중 하나는 운전자 제어 기간이 없다는 점입니다. 대신 격리 기간과 상호 작용 기간이라는 두 가지 자율 기간이 있습니다. 이 예에는 각 자율 기간에 대한 별도의 루틴이 있습니다. VEX API는 두 가지 다른 콜백을 지원하지 않기 때문에 어떤 루틴을 실행할지 결정하기 위한 플래그가 프로그램에 있어야 합니다. 이 예제 프로그램에서는 "firstAutoFlag"를 사용하여 자율이 처음 활성화될 때 격리 기능을 호출하고 두 번째로 자율이 활성화될 때 상호 작용 기능을 호출합니다. 한 가지 주의할 점은 어떤 이유로 경기를 재설정해야 하는 경우 데모 프로그램을 다시 시작하여 firstAutoFlag를 재설정해야 한다는 것입니다.

  • 기본()

    V5 카테고리 내 VEX AI의 특징과 기능을 설명하는 다이어그램으로, 향상된 로봇 프로그래밍 및 자동화를 위한 주요 구성 요소와 상호 작용을 강조합니다.

    이번 프로젝트의 주요 업무입니다. VEXcode 환경을 올바르게 설정하기 위해 vexcodeInit()를 호출하는 것으로 시작됩니다. 다음으로 Jetson으로부터 받은 데이터를 저장하기 위해 로컬 AI_RECORD 개체가 선언됩니다. 최신 데이터로 화면 업데이트를 처리하기 위해 별도의 작업도 설정됩니다. 해당 작업의 코드는 Dashboard.cpp 파일에 포함되어 있습니다. 자율 콜백은 자율 기간이 시작될 때 처리하도록 등록됩니다.

    주요 while() 루프는 jetson_comms 개체의 최신 데이터를 로컬 AI_RECORD 개체에 복사하는 것으로 시작됩니다. 그런 다음 로봇의 위치 정보를 링크 개체에 전달하여 파트너 로봇에 전송할 수 있습니다. 데이터 처리가 완료되면 Jetson에 추가 데이터를 요청하고 66밀리초 동안 대기합니다. 이 데이터의 폴링 속도는 15Hz입니다. AI 시스템 데이터가 약 15Hz로 업데이트되므로 더 빨리 폴링할 이유가 없습니다.

    참고: Jetson 지도 데이터는 단일 작업에서만 요청하면 됩니다.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: