From 9d7e37cc46e9b97368430b2617d0b10455401aa2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= <mfc@leodrive.ai>
Date: Mon, 26 Feb 2024 12:40:32 +0300
Subject: [PATCH] allow param file selection and update the readme
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
---
 control/joy_controller/README.md                 | 15 +++++++++++++++
 ....param.yaml => joy_controller_ds4.param.yaml} |  2 +-
 .../config/joy_controller_g29.param.yaml         | 16 ++++++++++++++++
 .../config/joy_controller_p65.param.yaml         | 16 ++++++++++++++++
 .../config/joy_controller_xbox.param.yaml        | 16 ++++++++++++++++
 .../launch/joy_controller.launch.xml             |  2 +-
 .../joy_controller_param_selection.launch.xml    |  7 +++++++
 7 files changed, 72 insertions(+), 2 deletions(-)
 rename control/joy_controller/config/{joy_controller.param.yaml => joy_controller_ds4.param.yaml} (90%)
 create mode 100644 control/joy_controller/config/joy_controller_g29.param.yaml
 create mode 100644 control/joy_controller/config/joy_controller_p65.param.yaml
 create mode 100644 control/joy_controller/config/joy_controller_xbox.param.yaml
 create mode 100644 control/joy_controller/launch/joy_controller_param_selection.launch.xml

diff --git a/control/joy_controller/README.md b/control/joy_controller/README.md
index b8ee8ad79a33d..042d11962500f 100644
--- a/control/joy_controller/README.md
+++ b/control/joy_controller/README.md
@@ -4,6 +4,21 @@
 
 `joy_controller` is the package to convert a joy msg to autoware commands (e.g. steering wheel, shift, turn signal, engage) for a vehicle.
 
+## Usage
+
+### ROS2 launch
+
+```bash
+# With default config (ds4)
+ros2 launch joy_controller joy_controller.launch.xml
+
+# Default config but select from the existing parameter files
+ros2 launch joy_controller joy_controller_param_selection.launch.xml joy_type:=ds4 # or g29, p65, xbox
+
+# Override the param file
+ros2 launch joy_controller joy_controller.launch.xml config_file:=/path/to/your/param.yaml
+```
+
 ## Input / Output
 
 ### Input topics
diff --git a/control/joy_controller/config/joy_controller.param.yaml b/control/joy_controller/config/joy_controller_ds4.param.yaml
similarity index 90%
rename from control/joy_controller/config/joy_controller.param.yaml
rename to control/joy_controller/config/joy_controller_ds4.param.yaml
index 0a0b79f2a1c34..73a5d028985c5 100644
--- a/control/joy_controller/config/joy_controller.param.yaml
+++ b/control/joy_controller/config/joy_controller_ds4.param.yaml
@@ -1,6 +1,6 @@
 /**:
   ros__parameters:
-    joy_type: DS4 # DS4, G29, P65, XBOX
+    joy_type: DS4
     update_rate: 10.0
     accel_ratio: 3.0
     brake_ratio: 5.0
diff --git a/control/joy_controller/config/joy_controller_g29.param.yaml b/control/joy_controller/config/joy_controller_g29.param.yaml
new file mode 100644
index 0000000000000..c28a6c01d1326
--- /dev/null
+++ b/control/joy_controller/config/joy_controller_g29.param.yaml
@@ -0,0 +1,16 @@
+/**:
+  ros__parameters:
+    joy_type: G29
+    update_rate: 10.0
+    accel_ratio: 3.0
+    brake_ratio: 5.0
+    steer_ratio: 0.5
+    steering_angle_velocity: 0.1
+    accel_sensitivity: 1.0
+    brake_sensitivity: 1.0
+    control_command:
+      raw_control: false
+      velocity_gain: 3.0
+      max_forward_velocity: 20.0
+      max_backward_velocity: 3.0
+      backward_accel_ratio: 1.0
diff --git a/control/joy_controller/config/joy_controller_p65.param.yaml b/control/joy_controller/config/joy_controller_p65.param.yaml
new file mode 100644
index 0000000000000..4b13348f95fb6
--- /dev/null
+++ b/control/joy_controller/config/joy_controller_p65.param.yaml
@@ -0,0 +1,16 @@
+/**:
+  ros__parameters:
+    joy_type: P65
+    update_rate: 10.0
+    accel_ratio: 3.0
+    brake_ratio: 5.0
+    steer_ratio: 0.5
+    steering_angle_velocity: 0.1
+    accel_sensitivity: 1.0
+    brake_sensitivity: 1.0
+    control_command:
+      raw_control: false
+      velocity_gain: 3.0
+      max_forward_velocity: 20.0
+      max_backward_velocity: 3.0
+      backward_accel_ratio: 1.0
diff --git a/control/joy_controller/config/joy_controller_xbox.param.yaml b/control/joy_controller/config/joy_controller_xbox.param.yaml
new file mode 100644
index 0000000000000..7b45c2c164454
--- /dev/null
+++ b/control/joy_controller/config/joy_controller_xbox.param.yaml
@@ -0,0 +1,16 @@
+/**:
+  ros__parameters:
+    joy_type: XBOX
+    update_rate: 10.0
+    accel_ratio: 3.0
+    brake_ratio: 5.0
+    steer_ratio: 0.5
+    steering_angle_velocity: 0.1
+    accel_sensitivity: 1.0
+    brake_sensitivity: 1.0
+    control_command:
+      raw_control: false
+      velocity_gain: 3.0
+      max_forward_velocity: 20.0
+      max_backward_velocity: 3.0
+      backward_accel_ratio: 1.0
diff --git a/control/joy_controller/launch/joy_controller.launch.xml b/control/joy_controller/launch/joy_controller.launch.xml
index cd624b1fc4935..5236077680d0d 100644
--- a/control/joy_controller/launch/joy_controller.launch.xml
+++ b/control/joy_controller/launch/joy_controller.launch.xml
@@ -12,7 +12,7 @@
   <arg name="output_gate_mode" default="/control/gate_mode_cmd"/>
   <arg name="output_vehicle_engage" default="/vehicle/engage"/>
 
-  <arg name="config_file" default="$(find-pkg-share joy_controller)/config/joy_controller.param.yaml"/>
+  <arg name="config_file" default="$(find-pkg-share joy_controller)/config/joy_controller_ds4.param.yaml"/>
 
   <node pkg="joy_controller" exec="joy_controller" name="joy_controller" output="screen">
     <remap from="input/joy" to="$(var input_joy)"/>
diff --git a/control/joy_controller/launch/joy_controller_param_selection.launch.xml b/control/joy_controller/launch/joy_controller_param_selection.launch.xml
new file mode 100644
index 0000000000000..d8e3d0bfe8b25
--- /dev/null
+++ b/control/joy_controller/launch/joy_controller_param_selection.launch.xml
@@ -0,0 +1,7 @@
+<launch>
+  <arg name="joy_type" default="ds4" description="options: ds4, g29, p65, xbox"/>
+
+  <include file="$(find-pkg-share joy_controller)/launch/joy_controller.launch.xml">
+    <arg name="config_file" value="$(find-pkg-share joy_controller)/config/joy_controller_$(var joy_type).param.yaml"/>
+  </include>
+</launch>