Getting started: TinyLiDARNet
このドキュメントでは、TinyLiDARNetのsetup方法・実行方法について説明します。
Setup
AI Challenge 2025のドキュメントに従って、
- 仮想環境のインストール
- 描画ありAWSIMの起動
- ただし、こちらのAWSIMを使用してください。
- 大会用リポジトリのビルド・実行
までを実施してください。
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に切り替えます。

Terminal 4: rosbagの記録開始
cd /aichallenge/;./record_rosbag.bash
走行が終わったら、Ctrl+Cでrosbagの記録を停止します。記録されたrosbagは、/aichallenge/rosbag2_autowareに保存されます。名称をrosbag2_autoware_train_01やrosbag2_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に切り替えます。

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

アクセル制御の追加
現在のdefault設定では、TinyLiDARNetはステアリング制御のみを行い、アクセルは固定値で制御しています。control_mode: "ai"に変更し、アクセル制御もTinyLiDARNetに実施させてみましょう。
TinyLiDARNetでのOvertake
単独走行であれば、ML Plannerを用いる必要性は低いですが、複数台走行の場合は、overtakeといった高度な意思決定が必要となり、機械学習の活躍場面が増えます。複数台走行用のAWSIMを使用すれば、複数台走行データを収集・学習することができます。

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