정의

‘Lightweight protocol designed for reliable communication in aerospace and robotic applications via CAN bus’

UAVCAN Logo
UAVCAN Logo

 

CAN bus란?

Controller Area Network의 약자. 호스트 컴퓨터의 도움없이 마이크로컨트롤러와 디바이스간 통신이 가능하도록 설계를 말하면 특히 차량 관련된 내부 컴포넌트를 연결 표준을 말한다.메시지 기반(message-based) 프로토콜로서 원래 자동차 내부에 멀티플렉스 전기 배선 설계에서 출발했으며 다른 영역에서도 사용된다.
1983년 Bosch에서 개발을 시작했다. 프로토콜이 정식으로 공개된 것은 1986년 SAE(Society of Automotive Engineers) 컨퍼런스였다. 최초 CAN 컨트롤러 칩은 Intel과 Philips에서 생산을 시작해서 1987년에 시장에 나왔다. CAN을 처음 탑재한 차량은 1988년식 BMW 8 시리즈였다.

핵심 기능

  • 중앙 제어 방식이 아닌 평등한 네트워크 (Democratic network)
  • Public/Subscribe 혹은 Request/Response 교환 방식
  • 사이즈가 큰 data structure를 효율적으로 교환
  • 프로토콜을 구현하기 쉽다.
  • 단위 정확도로 네트워크 규모에서 시간 동기화 지원
  • CAN bus
  • 실시간 시스템과 같이 제약이 많은 시스템에도 탑재 가능
  • 스펙과 참조 구현물을 자유롭게 사용이 가능하다.

핵심 디자인 목표

  • 평등한 네트워크
  • 노드(node)는 큰 사이즈의 데이터(payload)를 교환할 수 있다.
  • 여분의 인터페이스와 노드를 지원한다.
  • 처리량이 많고, 통신시 낮은 지연시간
  • 로직이 단순하고 계산할 요구사항이 적다.
  • 공통 상위 레벨 기능은 명확하게 정의되어 있어야 한다.
  • 스펙과 참조 구현은 오픈되어 있어야 한다.

기본 개념

  • 구조도
  • UAVCAN Concept
    UAVCAN Concept

     

  • UAVCAN은 CAN bus를 통해 고신뢰성 통신 방법을 제공하는 경량 프로토콜로 설계되었다.
  • 분산 피어 네트워크(decentralized peer network)로 각 node는 고유 ID를 가진다.
  • UAVCAN 네트워크의 node들은 통신할 때 다음과 같은 통신 방법을 사용한다.
    • Message broadcasting
      • publish/subscribe로 데이터를 교환 방법
    • Service invocation
      • peer-to-peer request/response 상호작용 통신 방식
  • 각 통신 타입별로, 미리 정의한 자료구조를 사용한다. 각 자료구조는 ID를 가지는데 이를 DTID(data type ID)라고 부른다. 일부 자료구조는 표준으로 프로토콜 스펙에 정의되어 있다. 다른 것들은 특정 어플리케이션이나 벤더가 지정할 수도 있다.
  • 모든 published message type은 고유 ID 타입을 가지고 있고 네트워크에 있는 각 node는 고유 ID를 가지고 있으므로, data type ID와 node ID 쌍은 동일한 네트워크 내부에서 동일한 기능을 가지는 기타 node들을 지원하는데 사용할 수도 있다.
  • Message와 service 자료구조는 DSDL(data structure description language)을 사용해서 정의한다. DSDL은 원하는 프로그래밍 언어에 맞게 자료구조에 대한 소스코드를 생성한다. DSDL로 정적으로 자료구조의 크기를 결정할 수 있다. 이를 통해 메모리 사용량과 성능 관점에서 프로토콜 구현을 최적화하는데 도움이 된다. 이점은 임베디드 시스템에 중요한 요소이다. 왜냐하면 메모리 사용량을 미리 예측하며 동적 메모리 할당은 되지 않기 때문이다.
  • 표준 data type의 맨 상단에는 UAVCAN에서 정의하는 표준 상위 레벨 기능들의 지합이 있다. 예를들자면 health monitoring, network discovery, time synchronization, firmware update 등의 기능을 말한다. 이런 스펙의 일부는 표준 data type과 application level 기능과 직접 연결된다.
  • 직렬화된(serialized) 메시지와 서비스 자료구조는 CAN bus transport layer에서 서로 교환한다. 여기서는 전달할 긴 내용을 여러개의 CAN frame들로 자동으로 구성하는 것을 구현한다. 따라서 임의 길이의 자료구조를 사용할 수 있게 된다.

메시지 브로드캐스팅(Message broadcasting)

  • 직렬화시킨 자료구조를 CAN bus를 통해 다른 node로 전송하는 것을 말한다. 이것이 UAVCAN의 핵심 data 교환 방식이다. 전형적인 유스케이스는 다음과 같은 data를 전송하는 경우이다. 센서 측정, actuator 명령, equipment 상태 정보 등.
  • 구조 :
  • uavcan_concept_table01

익명 메시지 브로드캐스팅(Anonymous message broadcasting)

  • 고유 node ID를 가지고 있지 않은 node는 anonymous message로 publish할 수 있다.
    anonymous message는 source node ID를 포함하고 있지 않다는 점이 레귤러 메시지와 차이점이다. 이런 data 교환 방식은 node가 처음 설정 초기화하는 동안에 유용하며 특히 동적 node ID 할당 단계에서 유용하다.

서비스 호출(Service invocation)

  • 정확히 2개 node(client와 server) 사이에서 일어나는 2단계 data 교환을 말한다. 서비스 호출은 다음과 같이 3단계로 수행된다.
    1. client -> server (service request)
    2. server 어플리케이션은 적절한 동작을 수행하고 response data를 반환한다.
    3. server -> client (service response)
  • 이런 type의 통신에 대한 전형적인 유스케이스는 다음과 같다.
    node 설정 파라미터 업데이터, firmware update, action request, file transfer, 그밖에 service task들.
  • service request와 service response 모두 다음과 같은 data를 포함한다.
  • uavcan_concept_table02
  • request/response 모두 payload 부분을 제외하고 동일한 값이 들어간다.
  • client는 다음과 같은 필드를 사용해서 요청에 따른 응답을 매치시킬 수 있다. (data type ID, client node ID, server node ID, transfer ID)

UAVCAN 구현 제품

Pixhawk UAVCAN ESC
Pixhawk UAVCAN ESC

 

계속 작업 중….

 

[기술정보] UAVCAN 이란?

답글 남기기