diff --git a/docs/course/images/2-3/node_diagram.png b/docs/course/images/2-3/node_diagram.png index aba7527..2905e36 100644 Binary files a/docs/course/images/2-3/node_diagram.png and b/docs/course/images/2-3/node_diagram.png differ diff --git a/docs/course/images/2-4/PlotJuggler1.png b/docs/course/images/2-4/PlotJuggler1.png new file mode 100644 index 0000000..b881dff Binary files /dev/null and b/docs/course/images/2-4/PlotJuggler1.png differ diff --git a/docs/course/images/2-4/PlotJuggler2.png b/docs/course/images/2-4/PlotJuggler2.png new file mode 100644 index 0000000..e8a9e90 Binary files /dev/null and b/docs/course/images/2-4/PlotJuggler2.png differ diff --git a/docs/course/images/2-4/PlotJuggler3.png b/docs/course/images/2-4/PlotJuggler3.png new file mode 100644 index 0000000..e6b2dd2 Binary files /dev/null and b/docs/course/images/2-4/PlotJuggler3.png differ diff --git a/docs/course/images/2-4/node_diagram.png b/docs/course/images/2-4/node_diagram.png new file mode 100644 index 0000000..1d875a1 Binary files /dev/null and b/docs/course/images/2-4/node_diagram.png differ diff --git a/docs/course/images/2-4/pure_pursuit.png b/docs/course/images/2-4/pure_pursuit.png new file mode 100644 index 0000000..4aadcb8 Binary files /dev/null and b/docs/course/images/2-4/pure_pursuit.png differ diff --git a/docs/course/images/2-4/trajectory_zigzag.png b/docs/course/images/2-4/trajectory_zigzag.png new file mode 100644 index 0000000..143084e Binary files /dev/null and b/docs/course/images/2-4/trajectory_zigzag.png differ diff --git a/docs/course/images/vehicle-backward-judging.png b/docs/course/images/vehicle-backward-judging.png new file mode 100644 index 0000000..89f0860 Binary files /dev/null and b/docs/course/images/vehicle-backward-judging.png differ diff --git a/docs/course/images/vehicle-backward-success.png b/docs/course/images/vehicle-backward-success.png new file mode 100644 index 0000000..e1013fc Binary files /dev/null and b/docs/course/images/vehicle-backward-success.png differ diff --git a/docs/course/images/vehicle-turning-judging.png b/docs/course/images/vehicle-turning-judging.png new file mode 100644 index 0000000..8c3dd82 Binary files /dev/null and b/docs/course/images/vehicle-turning-judging.png differ diff --git a/docs/course/images/vehicle-turning-success.png b/docs/course/images/vehicle-turning-success.png new file mode 100644 index 0000000..b5237d6 Binary files /dev/null and b/docs/course/images/vehicle-turning-success.png differ diff --git a/docs/course/index.ja.md b/docs/course/index.ja.md index 267e660..ab51384 100644 --- a/docs/course/index.ja.md +++ b/docs/course/index.ja.md @@ -14,6 +14,7 @@ git clone https://github.com/AutomotiveAIChallenge/autoware-practice.git cd autoware-practice vcs import src < autoware.repos +rosdep install -y --from-paths src --ignore-src --rosdistro humble colcon build --symlink-install ``` diff --git a/docs/course/vehicle.md b/docs/course/vehicle.md index e76df9e..ff847fd 100644 --- a/docs/course/vehicle.md +++ b/docs/course/vehicle.md @@ -47,30 +47,62 @@ ros2 run autoware_practice_course vehicle_forward ## 01-02. 車両の旋回 -!!! warning - - 作成中 - - steering_tire_angle を変更して車両を左右のどちらかに動かす +先程と同様に下記のコマンドを実行し、シミュレーターを起動してください。緑色のエリアに車両が入れば課題達成となるため、車両を旋回させるノードを作成していきます。 ```bash ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_turning ``` +![vehicle-turning-judging](./images/vehicle-turning-judging.png) + +先程利用したサンプルのデータを変更して、車両が旋回するようにします。 + - [vehicle/forward.hpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/vehicle/forward.hpp) - [vehicle/forward.cpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/vehicle/forward.cpp) -## 01-03. 車両の後退 +```diff +- command.lateral.steering_tire_angle = 0.0; ++ command.lateral.steering_tire_angle = 2.0; +``` -!!! warning +コードを書き換えたらビルドして実行します。新しい端末を起動して以下のコマンドを実行してください。 上手く出来ていればシミュレーターの車両が動き、条件を満たして結果が SUCCESS になります。 - 作成中 - - ギアを変更して REVERSE にする - - speed と acceleration を変更して車両を後退させる - - 後退の場合は speed が負で acceleration は正になる +```bash +colcon build --symlink-install --packages-select autoware_practice_course +ros2 run autoware_practice_course vehicle_forward +``` + +![vehicle-turning-success](./images/vehicle-turning-success.png) + +## 01-03. 車両の後退 + +下記のコマンドを実行し、シミュレーターを起動してください。この緑色のエリアに車両が入れば課題達成となるため、まずは車両を後退させるノードを作成していきます。 ```bash ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_backward ``` +![vehicle-backward-judging](./images/vehicle-backward-judging.png) + + +以下に後退するためのコマンドを送信するノードのサンプルを用意しました。直進するためのコードと異なり、ギアを制御するコードが含まれています。サンプルでは停止保持するコマンドを送信し続けるようになっているので、データを変更して車両が後退するようにします。 +ギアがREVERSEのときは、目標加速度を正、目標速度を負にします。 - [vehicle/backward.hpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/vehicle/backward.hpp) - [vehicle/backward.cpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/vehicle/backward.cpp) + +```diff +- command.longitudinal.speed = 0.0; +- command.longitudinal.acceleration = -2.5; ++ command.longitudinal.speed = -3.0; ++ command.longitudinal.acceleration = 1.0; +``` + +コードを書き換えたらビルドして実行します。新しい端末を起動して以下のコマンドを実行してください。 上手く出来ていればシミュレーターの車両が動き、条件を満たして結果が SUCCESS になります。 + +```bash +colcon build --symlink-install --packages-select autoware_practice_course +ros2 run autoware_practice_course vehicle_backward +``` + +![vehicle-backward-success](./images/vehicle-backward-success.png) + diff --git a/docs/course/velocity_planning.md b/docs/course/velocity_planning.md index f2ddd7c..6287e9a 100644 --- a/docs/course/velocity_planning.md +++ b/docs/course/velocity_planning.md @@ -7,10 +7,10 @@ まず、車両の速度を取得してみましょう。 -車両の速度は/localization/kinematic_stateというトピックでパブリッシュされます。 -/localization/kinematic_stateには自車両の位置、姿勢、速度、角速度とそれらの共分散行列の情報が含まれています。 +車両の速度は`/localization/kinematic_state`というトピックでパブリッシュされます。 +`/localization/kinematic_state`には自車両の位置、姿勢、速度、角速度とそれらの共分散行列の情報が含まれています。 -本来Autowareでは以下のノードダイアグラムのように、GNSS、Lidar、IMUなどの情報をもとにekf_localizerが/localization/kinematic_stateを計算します。 +本来Autowareでは以下のノードダイアグラムのように、GNSS、Lidar、IMUなどの情報をもとにekf_localizerが`/localization/kinematic_state`を計算します。
Alt Text @@ -20,15 +20,14 @@
-しかし初心者にAutowareの説明をするのにこの構成はかなり複雑なので、今回は以下のようにシンプルな -localizerを用意しました。 +しかし初心者にAutowareの説明をするのにこの構成はかなり複雑なので、今回は以下のようにシンプルなdummy_localizerを用意しました。
Alt Text
- autoware-practiceのlocalizer周りのノードダイアグラム + autoware-practiceのdummy_localizer周りのノードダイアグラム

@@ -149,7 +148,7 @@ twist: --- ``` -[/localization/kinematic_state]()というトピックは [nav_msgs/msgs/Odometry](https://docs.ros2.org/foxy/api/geometry_msgs/msg/Pose.html) というROS2のメッセージ型を利用しています。 +`/localization/kinematic_state`というトピックは [nav_msgs/msgs/Odometry](https://docs.ros2.org/foxy/api/geometry_msgs/msg/Pose.html) というROS2のメッセージ型を利用しています。 ## 02-02. 車両速度を目標速度に収束させる @@ -194,7 +193,7 @@ ros2 run plotjuggler plotjuggler ![plotjuggler_1](./images/plotjuggler_1.png) -/localization/kinematic_stateをクリックし右下のOKをクリックします。 +`/localization/kinematic_stat`をクリックし右下のOKをクリックします。 左下のTimeseries.Listからlocalization > kinematic_state > twist > twist > linear > x を選択し、右側にドラッグ&ドロップをすると速度の時間推移を表すグラフを表示することができます。 @@ -220,11 +219,27 @@ ros2 run autoware_practice_course p_controller --ros-args -p kp:=5.0 -p target_v 速度計画を行うために車両から目標地点までの間に1mおきに中継地点となるウェイポイントを設定します。各ウェイポイントに目標速度を設定することで速度計画を行います。 -各ウェイポイントの目標速度を決定するためのtrajectory_plannerノードと、各ウェイポイントを基に制御入力を決定するlongitudinal_controllerノードを作成しました。 +各ウェイポイントの目標速度をcsvファイルから読み取るtrajectory_loaderノードと、各ウェイポイントを基に制御入力を決定するlongitudinal_controllerノードを作成しました。 +今回は以下のtrajectory.csvを読み取ります。csvファイルには各ウェイポイントでの目標速度が記載されています。 -![alt text](./images/2-3/node_diagram.png) +- [velocity_planning/trajectory_loader.hpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/velocity_planning/trajectory_loader.hpp) +- [velocity_planning/trajectory_loader.cpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/velocity_planning/trajectory_loader.cpp) +- [config/trajectory.csv](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/config/trajectory.csv) +- [velocity_planning/longitudinal_controller.hpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/velocity_planning/longitudinal_controller.hpp) +- [velocity_planning/longitudinal_controller.cpp](https://github.com/AutomotiveAIChallenge/autoware-practice/blob/main/src/autoware_practice_course/src/velocity_planning/longitudinal_controller.cpp) -trajectory_plannerノードがスタートからゴールまでの各ウェイポイントの目標速度を決定します。 +
+ +
+ Alt Text +
+ autoware-practiceのtrajectory_loader周りのノードダイアグラム +
+ +
+ + +trajectory_loaderノードがスタートからゴールまでの各ウェイポイントの目標速度をcsvファイルから読み取ります。 longitudinal_controllerノードが車両に最も近いウェイポイントを探索し、ウェイポイントでの目標速度と現在の車両の速度を基に制御入力を決定します。 各ノードは以下のコマンドを別々のターミナルで実行することで起動することができます。 @@ -234,7 +249,7 @@ ros2 launch autoware_practice_launch practice.launch.xml ``` ```bash -ros2 run autoware_practice_course trajectory_planner +ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv ``` ```bash @@ -262,7 +277,7 @@ PlotJugglerが起動したらStartボタンを押します。 ![alt text](./images/2-3/PlotJuggler2.png) -/localization/kinematic_state/pose/pose/position/xと/localization/kinematic_state/twist/twist/linear/xを複数選択して**右クリック**でドラッグ&ドロップすることで、位置と速度の関係のグラフを見ることができます。 +`/localization/kinematic_state/pose/pose/position/x`と`/localization/kinematic_state/twist/twist/linear/x`を複数選択して**右クリック**でドラッグ&ドロップすることで、位置と速度の関係のグラフを見ることができます。 ![alt text](./images/2-3/PlotJuggler3.png) @@ -274,10 +289,10 @@ PlotJugglerが起動したらStartボタンを押します。 ![alt text](./images/2-3/PlotJuggler6.png) -次にtrajectory_plannerノードとlongitudinal_controllerノードをそれぞれ別のターミナルで起動します。 +次にtrajectory_loaderノードとlongitudinal_controllerノードをそれぞれ別のターミナルで起動します。 ```bash -ros2 run autoware_practice_course trajectory_planner +ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv ``` ```bash @@ -288,6 +303,93 @@ ros2 run autoware_practice_course longitudinal_controller --ros-args -p kp:=5.0 グラフより、大体50m付近で10m/sに達し100m付近で停止できていることがわかります。 - \ No newline at end of file