実車テスト時に使えるかもしれない、ちょっと便利なスクリプトたち

# はじめに

自動運転AIチャレンジ2024決勝 @ 11月初旬 に向けて開発を進めています。

https://www.jsae.or.jp/jaaic/2024ver/summary/

10月上旬に事前練習がありました。弊チームはそれはまあ悲惨な走行だったわけですが…
それはさておき、**15分程度**の練習時間を最大限活用すべく、事前に用意していたスクリプトを共有します。ご参考まで。

:::note info
最初に本質情報、事前練習で得た教訓です。
もし今回ご紹介するような便利スクリプトを使う場合は、
以下のおまじないを覚えておいたほうがよいです。
```
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...など試したいパターン分用意していました。

```bash:change_max_velocity.bash
#!/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
```

```bash:change_max_velocity_20kph_20kph.bash
#!/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
```

※ 以下記事の設定が前提です。

https://qiita.com/soyaoki/items/9d74c665d180c34b704d

### `simple_pure_pursuit`

目標車速や前方注視距離などをインタラクティブに設定できるようにしていました。

```bash:change_external_target_vel.bash
#!/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

```

```bash:change_lookahead_min_distance.bash
#!/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

```

※ 以下記事の設定が前提です。

https://qiita.com/soyaoki/items/aebad31500e34019d832

## (2)launchファイル変更用

トラジェクトリを変更したい場合 / ノード構成を変更したい場合に使用するスクリプトです。
試したい構成ごとにlaunchファイルを用意しておいて、このスクリプトでreference.launch.xmlを上書きしちゃう、という脳筋パワースクリプトになります（もっとスマートな方法がある気がしてきました…お恥ずかしい…）。

こちらは走行中に実行できないので、一旦車両を止めてAutowareも停止 → スクリプト実行 → Autoware再実行 / 走行開始の流れとなります。

```bash:set_osm_default_launch.bash
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文章校正ツール「ちゅらいと」で校正されています。