実車両の起動
構築済みの ECU で、シミュレータ用に開発したコードを実車両で走らせるための手順です。
ECU(MiniPC)自体の初期構築はECU の初期構築を参照してください。遠隔 PC 側の構築と操作は遠隔操作にまとまっています。
第1部 走行前の設定と起動
シミュレータと違い、実車両では以下を走行前に必ず確認します。
1-1. .env の設定
.env は git 管理外なので、./setup.bash bootstrap(または ./setup.bash env)で .env.example から生成されます。
生成後、人が手で書き換えないといけない項目は、まず次の4つです。V2X 位置情報共有を使う場合はさらに後述の項目が必要です。
| 変数 | .env.example の初期値 |
実車両で必要な設定 |
|---|---|---|
VEHICLE_ID |
A0 |
走らせる号機(A1,A2,A3,A5,A6,A7,A8)。zenoh の接続先ポートがこの値で決まります(vehicle/run_zenoh.bash) |
NTRIP_USERNAME |
your_username |
RTK 補正情報配信(NTRIP)のアカウント。未設定だと RTK Fix にならず自己位置の精度が出ません |
NTRIP_PASSWORD |
your_password |
同上 |
RACING_KART_INTERFACE_DIR |
/home/tier4/racing_kart_interface |
racing_kart_interface の実際の配置先。絶対パス必須です(colcon --symlink-install が絶対 symlink を含むため)。ここが違うと rosbag 記録も失敗します |
ROS_DOMAIN_ID は既定の 1 のままで構いません。TEAM_NAME は .env.example に含まれていますが実車両の起動では参照されないので、こちらも初期値のままで構いません。
HOST_UID / HOST_GID / HOST_GID_DIALOUT / HOST_GID_INPUT と COMPOSE_FILE(GPU 判定)は ./setup.bash env が実測値で自動設定するので、通常は触りません。
V2X 位置情報共有を使う場合は、次の項目も .env で設定します。証明書の配置はECU の初期構築の 4-4 を参照してください。
| 変数 | .env.example の初期値 |
実車両で必要な設定 |
|---|---|---|
V2X_VEHICLE_ID |
d1 |
この車両の V2X ID。/etc/v2x/tls/kart.crt の CN と一致していないと broker に拒否されます |
V2X_VEHICLE_IDS |
d1,d2,d3,d4 |
走行に参加しうる全車両の ID をカンマ区切りで指定します。全カートで同じ値にしてください。ここに無い ID から届いた位置情報は捨てられます |
V2X_BROKER_HOST |
v2x-mqtt-cctb.dev.aichallenge-board.jsae.or.jp |
接続先の MQTT broker。証明書と一緒に配布される値に合わせます |
V2X_BROKER_PORT |
8883 |
TLS 接続のポート。1883 ではありません |
V2X_TLS_DIR |
/etc/v2x/tls |
ホスト側の証明書ディレクトリ。コンテナ側は /etc/v2x/tls 固定で読み取り専用マウントされるので、この値を変えてもコンテナ内のパスは変わりません |
V2X_MQTT_TLS_CA_FILE / _CERT_FILE / _KEY_FILE |
/etc/v2x/tls/ca.crt ほか |
コンテナ内から見たパス。V2X_TLS_DIR を変えた場合も初期値のままにします。3つ揃っていないと TLS 設定ごと無効になります |
VEHICLE_ID(号機。zenoh の接続先ポートが決まる)と V2X_VEHICLE_ID(V2X の自号 ID。証明書の CN)は別物です。走行前に、参加する全カートについて号機・V2X_VEHICLE_ID・証明書 CN の対応表を作って共有しておくと取り違えを防げます。
1-2. IMU バイアスの修正
車両ごとに IMU のジャイロバイアスを実測して imu_corrector のパラメータを更新します。/sensing/imu/imu_raw は driver / autoware が動いていないと流れないため、実測は「1-3. 車両起動」で一度起動してから行います。
対象ファイルは aichallenge/workspace/src/aichallenge_submit/imu_corrector/config/imu_corrector.param.yaml です。
車両を静止させた状態で /sensing/imu/imu_raw の angular_velocity を観測し、各軸の平均値を angular_velocity_offset_x / _y / _z にそのまま書きます(符号の反転は不要です)。--symlink-install でビルドしているため再ビルドは不要で、autoware を再起動すれば反映されます。
1-3. 車両起動
走行枠中の操作は、make vehicle-tui で起動する車両コンソールに集約されています。tmux 上で動く TUI で、事前チェック・提出物のダウンロード・ビルド・ドライバ起動・終了処理を1画面から順に実行できます。内部で呼んでいるのは以下の make ターゲットと setup_check.sh なので、個別に実行しても構いません。
# 提出物データを aichallenge/workspace/src/ に取得(認証情報は対話入力)
make download # 提出物の一覧を表示して選択
make download SUBMISSION_ID=<id> # 特定の提出物を指定(一覧をスキップ)
# 取得/持ち込んだコードをビルド
make autoware-build
# rosbag を記録する場合(セットアップ確認込み。実車両では基本こちら)
make autoware-driver-zenoh-rosbag
# rosbag を記録しない場合(セットアップ確認は実行されない)
make autoware-driver-zenoh
make autoware-driver-zenoh-rosbag は以下を順に実行します。
./setup_check.sh --phase preflight(起動前チェック)driver+autoware+rosbagを起動- 15 秒待って
zenohを起動 ./setup_check.sh --phase runtime(起動後チェック)
make autoware-driver-zenoh は driver + autoware を起動して 15 秒待ち zenoh を起動するだけで、セットアップ確認は実行されません。こちらで起動した場合は別途 make setup-vehicle で確認してください。
rosbag は全トピック(-a --include-hidden-topics)を mcap・60 秒分割で output/<timestamp>/d<ROS_DOMAIN_ID>/rosbag2_all/ に記録されます。記録ログは同じディレクトリの rosbag.log です。
1-4. 終了手順
make ps # 稼働中のコンテナ確認
make down # 全コンテナ停止(rosbag もここで finalize される)
第2部 セットアップ確認スクリプト
make autoware-driver-zenoh-rosbag が preflight / runtime の2フェーズを自動で実行するので、通常は個別に叩く必要はありません。make autoware-driver-zenoh で起動した場合や単独で確認したい場合は make setup-vehicle を使います(こちらは両フェーズを実行するので、autoware が起動している状態で叩いてください)。
preflight(起動前)で確認される項目は次のとおりです。
- ハードウェアデバイス確認 - CAN、VCU、GNSS/RTK
- ネットワーク・通信確認 - インターネット接続、DNS 解決、Zenoh サーバー疎通
- Docker・環境確認 - Docker 動作、イメージ存在、権限設定
- 既知問題予防チェック - 過去の実験から抽出した予防項目
- 実行準備確認 - リポジトリルート、git ブランチ確認
runtime(起動後)で確認される項目は次のとおりです。
- ハードウェア疎通確認 - CAN インターフェースの UP 状態とフレーム流量
- Docker サービス確認 - 必要な compose サービスが稼働しているか
- GNSS/RTK 状態確認 -
/sensing/gnss/navpvtの RTK Fix 状態 - ROS トピック出力確認 - VCU status / command、Autoware vehicle status
各項目の期待される結果・手動確認コマンド・トラブルシューティング・走行前最終チェックリストは、リポジトリの vehicle/setup_check.md にまとまっています。
第3部 トラブルシューティング
3-1. ECU がモーターや VCU と通信できない場合
以下の順で対処してから、make autoware-driver-zenoh-rosbag を再実行します。
make down_allで全コンテナを停止する- USB ケーブルを挿し直す
- 車両バッテリーの電源を入れ直す
make autoware-driver-zenoh-rosbagを実行する