Eclipse SDV Project調査です。今回はEclipse KUKSA。
https://eclipse-kuksa.github.io/kuksa-website/
語源ですが、
ククサ:北欧の遊牧民族の使っているマグカップ
とのことです。
この語源と実際の機能にどのように結びついているかは不明。
以下調べた内容です。
- Eclipse Kuksaについて
- 簡易動作確認
ちなみにメインのメンテナはBoschの方です。
Eclipse Kuksaについて
KUKSAの主な機能
- 車両データとインターフェースをVehicleSignalsSpecification(VSS)にもとづいて共通フォーマットに抽象化
- さまざまな車両インタフェースを基本的なインタフェースに適合することを重点としている
- オンボード、オフボードの新しい技術を車両アーキテクチャに追加可能
- アプリケーションやToolChainは対象外で、それについてはEclipse Velocitasを参照
KUKSA.valは以下のコンポーネントがある
VSSを使ったブローカ、サーバとClientのサンプルが提供されている。
Component | escription |
---|---|
KUKSA Databroker | gRPC + Rustで実装されたVSSのブローカー。認証アクセスも提供 |
KUKSA Server | wesocket + C++ で実装されたVSSのデータサーバ。認証アクセスも提供で、機能がリッチ。 |
KUKSA Python | ClientとSDKコマンドラインツール。VSSBroker,サーバにアクセスできデータ取得、更新が可能 |
KUKSA GO Client Example | Goで書かれたBroker, ServerにアクセスできるClient |
Example Applications | 上記を使ったサンプル |
Feeders and Providers | Broker, Serverを使ったデータ交換の複数Feeder、Provider |
COVESA_VSSについて
VSS(VehiclesSignalSpecification)はCOVESAで定義されている車両信号のカタログ定義
- 車両信号に対してdomain taxonomyを導入
- VSS標準カタログを定義し、ベンダー依存しないように定義する。ベンダー固有部はオーバーレイの拡張が可能
VSSの詳細については割愛
簡易動作確認
KUKSA.valのBrokreを使って動作確認をする。
- 対話ツールを使った動作確認
- node-redを使ったサンプル確認
対話ツールを使った動作確認
- Brokerを立ち上げる
- clientを使って
- データの取得
- データの設定
- 対象データのSubscribe
今回はBrokerを使ったサンプル
https://github.com/eclipse/kuksa.val
podman run -it --rm --net=host ghcr.io/eclipse/kuksa.val/databroker:master --insecure
データ取得、設定
> podman run -it --rm --net=host ghcr.io/eclipse/kuksa.val/kuksa-client:master
Test Client> getMetaData Vehicle.Speed
{
"path": "Vehicle.Speed",
"metadata": {
"data_type": "FLOAT",
"entry_type": "SENSOR",
"description": "Vehicle speed"
}
}
Test Client> getValue Vehicle.Speed
{
"path": "Vehicle.Speed"
}
Test Client> setValue Vehicle.Speed 5.1
OK
Test Client> getValue Vehicle.Speed
{
"path": "Vehicle.Speed",
"value": {
"value": 5.099999904632568,
"timestamp": "2023-10-01T15:02:36.725825+00:00"
}
}
浮動小数点の誤差があるのはなぜかは不明。
subscribe
Test Client> subscribe Vehicle.Speed
{
"subscriptionId": "a126e311-02a0-44f9-a49e-0687e5cf2afe"
}
[
{
"entry": {
"path": "Vehicle.Speed",
"value": {
"value": 5.199999809265137,
"timestamp": "2023-10-01T15:06:55.475883+00:00"
}
},
"fields": [
"VALUE"
]
}
]
別ターミナルで
Test Client> setValue Vehicle.Speed 5.2
OK
node-redを使ったサンプル確認
https://github.com/eclipse/kuksa.val/tree/master/kuksa_apps/node-red
> git clone https://github.com/eclipse/kuksa.val
> cd kuksa.val/kuksa_apps/node-red
> docker-compose up -d
>
- http://<IPアドレス>:1880/ ブラウザを開く
- 以下の拡張をインストール
- node-red-dashboard
- node-red-contrib-web-worldmap
- http://<IPアドレス>:1880/ui ブラウザを開く
> cd ../../
> docker build -f kuksa-client/Dockerfile -t kuksa-client:latest .
> docker run --rm -it --net=host kuksa-client:latest
> connect ws://127.0.0.1:8090
> authorize -f kuksa_certificates/jwt/super-admin.json.token
> setValue Vehicle.Speed 10
以下のリンクの画像のように更新時にメータが反映される。
https://github.com/eclipse/kuksa.val/blob/master/kuksa_apps/node-red/node-red-screenshot.png
reference
- https://eclipse-kuksa.github.io/kuksa-website/
- Webサイト
- https://github.com/eclipse/kuksa.val
- Git Repository
所感
明確な用途は書いていないが、KUKSA.valでデータリポジトリを構築して、クラウドからデータ収集していくのかなと思う。
サーバー側は「gRPC + Rust」 、 「WebSocket+C++」と選択肢があることはよい。gRPC+Rustは今の流行りか。
VSSのデータ構造をみると、実際のECUから直接KUKSA Broker/Serverに登録はできなそう。
なのでCANデータをgRPC/Websocket通信ができるECUに転送し、登録するのかなと思う。
用語集
用語 | 説明 |
---|---|
GENIVI | IVIシステム向けにオープンなインフォテインメントプラットフォームの幅広い採用を目指し発足された非営利団体 |
COVESA(The Connected Vehicle Systems Alliance) | GENIVIの名称変更し、狙いをオンエッジ・インクラウドサービス、インターフェース、データ交換を含むコネクテッド車両システムへと進化したもの |