区載匇けossで遊んでみた - scsk · raspberry pi 1 can module wifimodule socketcand tcp/ip...

12
載けOSSで遊んでみた 2018/3/12 OSSユーザーのための勉会 #23 OSSがリードする分野の術 AI/Deep Learning , 自動, ロボット開発 SCSK会社 QINeS開発部 R&D課 綾野 鉄朗

Upload: others

Post on 17-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

⾞載向けOSSで遊んでみた

2018/3/12 OSSユーザーのための勉強会 #23 OSSがリードする先進分野の技術〜 AI/Deep Learning , 自動運転, ロボット開発 〜SCSK株式会社 QINeS先進開発部 R&D課綾野 鉄朗

Page 2: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 2 -

自己紹介

• 綾野 鉄朗(AYANO Tetsuro)

• 所属:SCSK株式会社 QINeS先進開発部 R&D課

• 仕事:⾞載研究開発– AUTOSAR Adaptive WG活動を主にしています

• 特技:うどんエンジニア

SCSK OSS うどん

Page 3: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 3 -

色々と・・・

2015年10⽉、⾞載事業部門に異動に

⾞の世界・・・CAN通信って何・・?

何かしたいけど、やっぱり手を動かしながらやらないとわかんない!

遊べそうなOSSを探そう!安いハードウェアないかな?

Page 4: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 4 -

みつけたお勉強の仕組み

• Linuxベースで扱える簡単な組み込みボードがほしい– Raspberry Pi 2 大体5000円くらい

•https://www.raspberrypi.org/products/raspberry-pi-2-model-b/

• CAN通信ができる拡張ボードがほしい– SPI経由でラズパイから操作ができるPican2 duoを発⾒

•イギリスから輸入 大体5000円くらい

• CAN通信用コマンドがほしい– can-utils

•https://github.com/linux-can/can-utils

http://skpang.co.uk/catalog/pican2-canbus-board-for-raspberry-pi-2-p-1475.html

£32.28

Page 5: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 5 -

おお・・・ ⾒れるじゃん!

RaspberryPi

CAN Module

CAN Bus Network

抵抗抵抗

$candump can0 $candump cangen can1

CANのdumpコマンド CANのジェネレートコマンド

can0 can1

Page 6: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 6 -

こんなもの作れるんじゃない?

• CAN通信の可視化ツール– WEBブラウザからCAN通信のパケットを可視化してリアルタイムに表示

CAN + kamohara+⾒る =

Page 7: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 7 -

つかったOSS

• Socketcand– CANのデータをTCP/IPのSocket通信で飛ばしてくれるデーモン

•https://github.com/dschanoeh/socketcand

• Kayak– CANデータを可視化してくれるGUI

•特定のCANバインディングをKCDという形式で記載すると値に変換してくれる•http://kayak.2codeornot2code.org/

• Kayak-core– Socketcandと接続してCANデータを扱うためのJavaライブラリ

•http://kayak.2codeornot2code.org/library.html

Page 8: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 8 -

Kayak-coreサンプル

/* * This FrameReceiver gets notified about incoming

frames and sends* a response.*/private static FrameListener receiver = new

FrameListener() {private final Frame response = new

Frame(RESPONSE_ID, false, new byte[] {0x11});

public void newFrame(Frame frame) {if(frame.getIdentifier() == REQUEST_ID) {

response.setData(frame.getData());bus.sendFrame(response);

}}

};

public static void main( String[] args ) throws InterruptedException {

/* Create a bus and connect all components */BusURL url = new BusURL(HOST, PORT, BUS);TimeSource ts = new TimeSource();bus.setConnection(url);bus.setTimeSource(ts);

/* Only receive frames with the REQUEST_ID */Subscription s = new Subscription(receiver, bus);s.subscribe(REQUEST_ID, false);

ts.play(); /* Start simulation time and open connections */

while(true) /* Infinite loop */Thread.sleep(1000000);

}お手軽にCANデータをJAVAで扱える!

Page 9: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 9 -

Chamomile構成

Raspberry Pi 1

CAN Module

Wifi Module

socketcand

TCP/IP Network(Wifi)

Raspberry Pi 2

Wifi Module

ChamomileChamomileWeb BrowserWeb Browser

ECU1 ECU2

①CAN-BUSに流れるデータをsocketcandで取得

②TCPSocket経由でChamomileがデータ受信

Client PC

③Websocket経由でブラウザ送信して可視化

Page 10: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 10 -

Chamomileイメージ

Page 11: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 11 -

これから・・・

• 機能追加?– 他のプロトコルにも対応とか(DDS?SOME/IP?)

• 製品化?– OSSのライセンス上色々構成を⾒直す必要性がある

• OSS化?– 公開できるようにカスタマイズせねば・・・

Page 12: 区載匇けOSSで遊んでみた - SCSK · Raspberry Pi 1 CAN Module WifiModule socketcand TCP/IP Network (Wifi) Raspberry Pi2 WifiModule Web Browser Chamomile ECU1 ECU2 ①CAN-BUSに及れるデータを

Copyright(c) SCSK Corporation - 12 -

まとめ

• 「何かを動かしてみよう」と思ったときはOSSをとりあえず探してみる– OSSの組み合わせで学べることはたくさんある

• Autoware、ROSなどなど・・・やってみたいことはまだまだたくさん– どんな世界にもあなたを助けてくれるOSSが待っている