Skip to content

Getting started: TinyLiDARNet

このドキュメントでは、TinyLiDARNetのsetup方法・実行方法について説明します。

Setup

AI Challenge 2025のドキュメントに従って、

までを実施してください。

cd ~/aichallenge-2025
./docker_run.sh dev gpu
cd /aichallenge
./build_autoware.bash
./run_evaluation.bash rosbag

TinyLiDARNetの学習手順

TinyLiDARNetの学習には、Autowareから取得したrosbagが必要です。このセクションでは、rosbagの取得方法から、TinyLiDARNetの学習・デプロイまでの手順を説明します。

Step1. rosbagの取得

このStepでは、複数のTerminalを用います。

cd ~/aichallenge-2025;bash docker_exec.sh

をdocker環境の外で実行すれば、コンテナ内で複数のTerminalを開くことができます。3回繰り返して、合計4つのTerminalを開いてください。

Terminal 1: scan generation nodeの起動

ros2 launch laserscan_generator laserscan_generator.launch.xml   use_sim_time:=true   csv_path:=$(ros2 pkg prefix laserscan_generator)/share/laserscan_generator/map/lane.csv

Terminal 2: AWSIMの起動

cd /aichallenge/;./run_simulator.bash

Terminal 3: autowareの起動

cd /aichallenge/;./run_autoware.bash awsim

こちらのlinkを参考にし、initial poseを設定してください。

設定できたら、AWSIMの画面右上にあるControlボタンを押し、ManualからAutonomousに切り替えます。

awsim

Terminal 4: rosbagの記録開始

cd /aichallenge/;./record_rosbag.bash

走行が終わったら、Ctrl+Cでrosbagの記録を停止します。記録されたrosbagは、/aichallenge/rosbag2_autowareに保存されます。名称をrosbag2_autoware_train_01rosbag2_autoware_val_01のように変更しておきましょう。

Step2. Dataset conversion

rosbagを学習用datasetに変換します。

cd /aichallenge/python_workspace/tiny_lidar_net/
python3 /aichallenge/python_workspace/tiny_lidar_net/extract_data_from_bag.py --bags-dir /aichallenge/rosbag2_autoware_train_01/ --outdir /aichallenge/python_workspace/tiny_lidar_net/dataset/train/

以下のような出力が得られたら成功です。

[INFO] [PID:99328] Found 1 bags. Starting processing with 1 workers.
[INFO] [PID:99356] Saved rosbag2_autoware: 413 samples (Total: 0.13s)
[INFO] [PID:99328] All processing finished in 0.34 seconds.

trainだけでなく、validation setも変換しておきましょう。

python3 /aichallenge/python_workspace/tiny_lidar_net/extract_data_from_bag.py --bags-dir /output/20251211-163407/rosbag2_autoware_val_01/ --outdir /aichallenge/python_workspace/tiny_lidar_net/dataset/val/

Step3. Model training

python3 /aichallenge/python_workspace/tiny_lidar_net/train.py

CPUで学習を回したい場合や、RTX 50 seriesなどを用いていて、CUDAがこの環境に対応していない場合は、以下を実行してください。

CUDA_VISIBLE_DEVICES="" python3 /aichallenge/python_workspace/tiny_lidar_net/train.py

Step4. Model deployment

  • .pthから.npyに変換します
python3 /aichallenge/python_workspace/tiny_lidar_net/convert_weight.py --ckpt /aichallenge/python_workspace/tiny_lidar_net/checkpoints/best_model.pth --output /aichallenge/python_workspace/tiny_lidar_net/weights/converted_weights.npy

以下のような出力が得られれば成功です。

 Loaded checkpoint: /aichallenge/python_workspace/tiny_lidar_net/checkpoints/best_model.pth
✅ Saved NumPy weights to: weights/converted_weights.npy

作成したconverted_weights.npyを、ROS 2 package内のckptディレクトリに移動します。

mv /aichallenge/python_workspace/tiny_lidar_net/weights/converted_weights.npy /aichallenge/workspace/src/aichallenge_submit/tiny_lidar_net_controller/ckpt/tinylidarnet_weights.npy

Step5. Run TinyLiDARNet Sample ROS Node

reference.launch.xmlにおけるcontrol modeを、rule_basedからe2eに変更しましょう。

Terminal 1: AWSIMの起動

cd /aichallenge/;./run_simulator.bash

Terminal 2: autowareの起動

cd /aichallenge/;./run_autoware.bash awsim

こちらのlinkを参考にし、initial poseを設定してください。

設定できたら、AWSIMの画面右上にあるControlボタンを押し、ManualからAutonomousに切り替えます。

awsim

発展的課題

上記の手順で、TinyLiDARNetを用いた、サーキットでの単独走行が可能です。

Pitlane走行

TinyLiDARNetは、コース上での走行は可能ですが、Pitlaneのような狭いエリアでの走行は苦手です。発展的課題として、PitlaneからスタートするAWSIM環境を用いてPitlaneを含むrosbagを収集し、Pitlane走行が可能なTinyLiDARNetの学習に挑戦してみてください。

awsim

アクセル制御の追加

現在のdefault設定では、TinyLiDARNetはステアリング制御のみを行い、アクセルは固定値で制御しています。control_mode: "ai"に変更し、アクセル制御もTinyLiDARNetに実施させてみましょう。

TinyLiDARNetでのOvertake

単独走行であれば、ML Plannerを用いる必要性は低いですが、複数台走行の場合は、overtakeといった高度な意思決定が必要となり、機械学習の活躍場面が増えます。複数台走行用のAWSIMを使用すれば、複数台走行データを収集・学習することができます。

awsim

画像入力の追加

use imageオプションをTrueにすることで、画像入力を追加することができます。TinyLiDARNetはLiDAR情報のみを用いていますが、この画像入力も使用したmodel,つまりTinyLiDARImageNetを実装すれば、LiDARだけでなく画像も考慮して走行することが期待されます。今後、信号や黄旗などが登場した際には、画像入力を検討してみてください。

awsim