はじめに
自動運転AIチャレンジ2024決勝 @ 11月初旬 に向けて開発を進めています。
10月上旬に事前練習がありました。弊チームはそれはまあ悲惨な走行だったわけですが…
それはさておき、15分程度の練習時間を最大限活用すべく、事前に用意していたスクリプトを共有します。ご参考まで。
最初に本質情報、事前練習で得た教訓です。
もし今回ご紹介するような便利スクリプトを使う場合は、
以下のおまじないを覚えておいたほうがよいです。
find /path/to/directory -type f -name "*.bash" -exec chmod +x {} \;
or
chmod -R +x /path/to/directory
スクリプトをコピーしたはよいが、車両PC内で実行できねえええとなって、本番めちゃめちゃ焦ります。とっさに対応できてよかった…チームメイトよ、ありがとう…
スクリプトたち
(1)ノードパラメータ変更用、(2)launchファイル変更用のスクリプトを用意していました。
(1)ノードパラメータ変更用
特定ノードの特定パラメータを変更できるスクリプトです。
走行しながら目標車速を上げたりできます。
motion_velocity_smoother
直線・カーブでの目標車速を変更するために以下を用意していました。
インタラクティブに数値設定するパターンと、固定値で設定するパターンがあります。
固定値は、20kph-20kph / 25kph-20kph...など試したいパターン分用意していました。
#!/bin/bash
ros2 param get /planning/scenario_planning/motion_velocity_smoother max_velocity
echo "max_velocity? :"
read input_value_1
ros2 topic pub /planning/scenario_planning/max_velocity tier4_planning_msgs/msg/VelocityLimit "{stamp: {sec: '"$(date +%s)"', nanosec: 0}, max_velocity: $input_value_1}" --once
ros2 param set /planning/scenario_planning/motion_velocity_smoother max_velocity $input_value_1
ros2 param get /planning/scenario_planning/motion_velocity_smoother max_velocity
ros2 param get /planning/scenario_planning/motion_velocity_smoother min_curve_velocity
echo "min_curve_velocity? :"
read input_value_2
ros2 param set /planning/scenario_planning/motion_velocity_smoother min_curve_velocity $input_value_2
ros2 param get /planning/scenario_planning/motion_velocity_smoother min_curve_velocity
#!/bin/bash
# motion_velocity_smoother
echo "/planning/scenario_planning/motion_velocity_smoother max_velocity changing.."
ros2 topic pub /planning/scenario_planning/max_velocity tier4_planning_msgs/msg/VelocityLimit "{stamp: {sec: '"$(date +%s)"', nanosec: 0}, max_velocity: 5.55}" --once
ros2 param set /planning/scenario_planning/motion_velocity_smoother max_velocity 5.55
ros2 param get /planning/scenario_planning/motion_velocity_smoother max_velocity
echo "/planning/scenario_planning/motion_velocity_smoother min_curve_velocity changing.."
ros2 param set /planning/scenario_planning/motion_velocity_smoother min_curve_velocity 5.55
ros2 param get /planning/scenario_planning/motion_velocity_smoother min_curve_velocity
※ 以下記事の設定が前提です。
simple_pure_pursuit
目標車速や前方注視距離などをインタラクティブに設定できるようにしていました。
#!/bin/bash
ros2 param get /simple_pure_pursuit_node external_target_vel
echo "external_target_vel? :"
read input_value
ros2 param set /simple_pure_pursuit_node external_target_vel $input_value
ros2 param get /simple_pure_pursuit_node external_target_vel
#!/bin/bash
ros2 param get /simple_pure_pursuit_node lookahead_min_distance
echo "lookahead_min_distance? :"
read input_value
ros2 param set /simple_pure_pursuit_node lookahead_min_distance $input_value
ros2 param get /simple_pure_pursuit_node lookahead_min_distance
※ 以下記事の設定が前提です。
(2)launchファイル変更用
トラジェクトリを変更したい場合 / ノード構成を変更したい場合に使用するスクリプトです。
試したい構成ごとにlaunchファイルを用意しておいて、このスクリプトでreference.launch.xmlを上書きしちゃう、という脳筋パワースクリプトになります(もっとスマートな方法がある気がしてきました…お恥ずかしい…)。
こちらは走行中に実行できないので、一旦車両を止めてAutowareも停止 → スクリプト実行 → Autoware再実行 / 走行開始の流れとなります。
echo "Setting OSM trajectory launch..."
cp /aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference-osm-trajectory-default.launch.xml /aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference.launch.xml
echo "Done"
おわりに
このあたりは参加者の皆さんも用意されていたと思いますし、大したことないんですが、
来年度以降の後進のために記事として残します。
11/1~3の本番も、効率的にやっていきたいところですね…!
この記事は、AI文章校正ツール「ちゅらいと」で校正されています。