動作環境
| OS | Ubuntu22, Ubuntu24 |
|---|---|
| ROS 2 | Humble, Jazzy |
| CANアダプタ | CANable 2.0 Nano, Pro |
インストール
sudo apt install update
sudo apt install can-utils
公式サイトでファームウェアを更新します
CANableのボタンを押しながら接続して、上記サイトでcandlelightを書き込んでください
Candlelightファームウェアにアップデートすると、CANableはsocketcanでネイティブCANデバイスとして表示されます。slcandは不要です! slcandが完全にバイパスされるため、シリアルラインファームウェアよりもパフォーマンスが向上します。Linuxとsocketcanを使用すれば、標準のcan-utilsコマンドラインユーティリティやWiresharkを使ってバスと通信できます。注:CANable 2.0用のCandlelightファームウェアは現在、FDフレームをサポートしていません。
権限設定
書き込みが終了したらUSBを再接続してください。
sudo dmesg
でVendor, Product, Serialを取得しメモしてください。
例:
[43777.014514] usb 9-1: new full-speed USB device number 9 using xhci_hcd
[43777.168286] usb 9-1: New USB device found, idVendor= {Vendor} , idProduct= {Product} , bcdDevice= 0.00
[43777.168296] usb 9-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[43777.168300] usb 9-1: Product: canable2 gs_usb
[43777.168304] usb 9-1: Manufacturer: canable.io
[43777.168308] usb 9-1: SerialNumber: {Serial}
sudo権限で /etc/udev/rules.d/99-canable.rules を作成して以下を記入してください
SUBSYSTEM=="usb", ATTR{idVendor}=="Vendor", ATTR{idProduct}=="Product", ATTR{serial}=="Serial", SYMLINK+="can", \
RUN+="/sbin/ip link set can0 type can bitrate 1000000", \
RUN+="/sbin/ip link set can0 up"
bitrateのあとの1000000は通信速度bpsです。
複数台使う場合はここを変更する必要があります。
以下コマンドで設定を適用したら完成です!
sudo udevadm control --reload-rules
sudo udevadm trigger
candump can0
で受信したメッセージを表示することができます
ROS2で使う
このリポジトリをcloneしてcolcon buildしてください
ros2 run canable canable_node
送受信をROS 2でやることができます。
HumbleとJazzyで動作確認しています
/can/receive トピックに受信したデータが流れます
/can/transmit トピックに送られたデータをCANに転送します
サンプル
さいごに
即席で書いた記事なのでうまくいかない等あるとおもいます
問題等あればコメントやTwitter等で連絡いただければ全力でサポートします!