UAVCAN Application-level 기능
UAVCAN의 상위레벨 컨셉에 대해서 알아보자.
UAVCAN_Architecture

Node initialization

  • UAVCAN은 node가 bus에 연결되어 특정 초기화를 수행해야한다는 요구사항은 없다.
  • node는 전원이 들어오면 바로 기능을 자유롭게 수행한다.
  • 모든 UAVCAN node가 반드시 지원해야하는 Application-level 기능은 주기적으로 node status 메시지를 broadcasting하는 것이다.

Node status reporting

  • 모든 UAVCAN node는 반드시 status를 리포팅해야만 한다. uavcan.protocol.NodeStatus 타입의 메시지를 broadcasting함으로써 살아있다는 것을 알린다. UAVCAN node가 지원해야하는 유일한 자료구조기도 하다. 다른 Application-level 기능들은 옵션이다.
  • 이 메시지의 ID에 주목해야하는데, binary에 사용할때는 0, 1을 포함하는 긴 조합을 포함하고 있다. 이를 통해 automatic CAN bus bit rate detection을 사용할 수 있다.

Node Discovery

  • UAVCAN은 현재 네트워크에 있는 존재한느 모든 node들의 리스트와 각 node의 상세정보를 얻을 수 있는 방법을 제공한다.
  • bus에 연결된 모든 node의 목록을 생성하고 유지한다. uavcan.protocol.NodeStatus 메시지를 listen하는 방식으로 가능하다.
  • 각 node에 대한 확장 정보는 service를 사용해서 요청할 수 있다. 따라서 모든 node에서 uavcan.protocol.GetNodeInfo 서비스를 지원하는 것을 강력히 추천한다. 이 서비스를 지원해야 discovery 및 식별이 가능하기 때문이다.

Time synchronization

  • UAVCAN에서 제공하는 time synchronization의 정확도는 1 CAN bus bit period이다. ex) 1 Mbps CAN bit rate에 대해서 1 microsecond 단 CAN frame timestamping이 HW에서 지원한다는 가정하에 그렇다.
  • 알고리즘은 timestamping을 지원하는 HW가 없다는 경우에도 동작한다. 단 이때는 성능저하가 발생한다.
  • “Implementing a Distributed High-Resolution Real-Time Clock using the CAN-Bus”를 기반으로 하고 있다.
  • 이 알고리즘의 기본 아이디어는 uavcan.protocol.GlobalTimeSync 타입의 메시지를 주기적으로 broadcast하는 node가 1개 이상 있다고 가정한다. 이 메시지는 메시지를 전송하기 전에 정확한 timestamp를 포함하고 있다고 한다.
  • 이 메시지를 주기적으로 broadcast를 수행하는 node는 time synchronization master라고 부른다. master가 보내는 메시지로 동기화하는 node를 time synchronization slave라고 부른다.
  • 이 알고리즘은 slave와 master가 동기화하는 동안, 정확하게 각 pahse별 차이를 계산할 수 있다.
  • UAVCAN은 clock speed/phase adjustment에 대한 알고리즘을 정의하지 않고 있으며 전체 구현을 정의하고 있다.
  • 다음과 같은 상수는 time synchronization 알고리즘에서 정의하고 있다.
    • Tmax : master의 최대 broadcast interval
    • Tmin : master의 최소 broadcast interval
    • Ttimeout : master가 해당 시간내에 time synchronization 메시지를 broadcast하지 않는다면, 모든 slave는 가장 높은 우선순위를 가진 다음 active master로 switch한다.
  • network은 동시에 하나 이상의 time synchronization master를 가질 수 있다. 이 경우, 가장 낮은 node ID를 가진 master만 active된다. 다른 master들은 passive 상태로 되어 있어서 time synchronization 메시지를 broadcast하지 않는다.
  • 현재 active master는 Ttimeout 동안 time synchronization 메시지를 broadcast하지 않는다. 다음으로 높은 우선순위를 가지는 master가 대신 active되고 모든 slave들은 이 master와 동기화 된다.
  • 가장 높은 우선순위 master가 network에 있는 경우, 다른 낮은 우선순위를 가지는 master는 passive상태가 되고 모든 slave는 이 새로운 master와 즉시 동기화 된다.
  • uavcan.protocol.GlobalTimeSync 메시지는 이전 trasmission의 정확한 timestamp를 포함하고 있다. 만약 이전 message가 아직 전송되지 않은 상태라던가 Tmax 시간을 넘은 시간에 보냈다면 이 field는 반드시 0으로 설정해야만 한다.
  • 기존 UAVCAN 구현을 참고할 것

Node Configuration

  • UAVCAN은 remote node Configuration parameter의 관리를 위해서 standard service를 정의하고 있다.
  • 이 service 지원은 강제사항은 아니지만 강력히 추천한다.
  • 다음과 같은 service들이 있다.
    • uavcan.protocol.param.GetSet
    • uavcan.protocol.param.ExecuteOpcode
    • uavcan.protocol.RestartNode
  • 일부 경우에, node는 이런 service로 편리하게 관리하는 것보다 더 복잡한 설정을 필요로 할 수도 있다. 만약 이런 경우라면 standard file management service로 접근가능한 설정파일을 통해서 node configuration을 관리하는 것을 추천한다.

Standard configuration parameters

  • 대부분 UAVCAN node에서 사용하는 일반적인 configuration parameter가 있다.
  • 이런 공통 parameter의 예제로는 message publication frequencies, non-default data type ID setting, local node ID, 등등이 있다.
  • UAVCAN 스펙은 UAVCAN과 관련된 configuration parameter에 대한 naming convention을 제공하는 방법을 통해서 호환성을 높인다.
  • 다음과 같은 convention은 강제사항은 아니지만 추천하는 사항이다.
    • 지금까지 본바와 같이 UAVCAN 관련된 parameter는 동일한 prefix로 uavcan 을 사용한다.

File transfer

  • UAVCAN에서 일반 기능으로 remote node에 있는 file system에 접근을 가능하게 한다.
  • 전체 기능은 아래 열거된 UAVCAN service의 집합에 기반한다.

Firmware update

  • UAVCAN 관점에서 사실 Firmware update는 file transfer의 하나의 케이스이다.
  • firmware update 처리 과정에는 2 ~ 3개의 node가 필요하다 :
    • firmware update 처리를 초기화하는 node
    • firmware file이나 file server에 접근을 제공하는 node. 대부분의 경우 updater가 file server처럼 동작한다. 따라서 2개의 node가 필요하다.
    • update되는 node
  • 처리 과정
    • 1. updater는 어떤 node가 update되어야 하는지를 결정한다.
    • 2. updater는 updateee에서 uavcan.protocol.file.BeginFirmwareUpdate service을 호출한다. firmware file의 위치에 대한 정보는 service request를 통해 updatee에 전달된다.
    • 3. 만약 updatee가 update request를 받아들이는 것을 선택한다면, implementation에서 필요로 하는 초기화 procedure를 수행한다.
    • 4. updatee는 file server에서 새로운 firmware file을 수신한다. 이때 service request를 통해서 수신한 정보를 이용한다.
    • 5. updatee는 update를 완료하고 재시작한다.

Debug features

  • 다음과 같은 message는 디버깅을 가능하게하고 사람이 읽을 수 있는 형태로 event를 리포팅한다.

Command shell access

  • 이 서비스는 내부 command shell에 직접 접근하여 임의의 command을 remote node에서 실행할 수 있다.

Panic mode

  • 응급 상황에서 Panic 메시지를 이용해서 즉각 system을 shut down 시킬 수 있다.

Dynamic node ID allocation
*

[기술정보] UAVCAN Application-level functions

답글 남기기