From cd1c64ab23940f10b4143991bf64c6d3837859c0 Mon Sep 17 00:00:00 2001
From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com>
Date: Wed, 3 Jan 2024 19:45:28 +0000
Subject: [PATCH 1/3] Add rqt_JTC to docs (#950) (#952)

---
 joint_trajectory_controller/doc/userdoc.rst     |   1 +
 .../doc/rqt_joint_trajectory_controller.png     | Bin 0 -> 29746 bytes
 rqt_joint_trajectory_controller/doc/userdoc.rst |  12 ++++++++++++
 3 files changed, 13 insertions(+)
 create mode 100644 rqt_joint_trajectory_controller/doc/rqt_joint_trajectory_controller.png
 create mode 100644 rqt_joint_trajectory_controller/doc/userdoc.rst

diff --git a/joint_trajectory_controller/doc/userdoc.rst b/joint_trajectory_controller/doc/userdoc.rst
index 79919c7426..8b7fcc3041 100644
--- a/joint_trajectory_controller/doc/userdoc.rst
+++ b/joint_trajectory_controller/doc/userdoc.rst
@@ -194,6 +194,7 @@ Further information
 
    Trajectory Representation <trajectory.rst>
    joint_trajectory_controller Parameters <parameters.rst>
+   rqt_joint_trajectory_controller <../../rqt_joint_trajectory_controller/doc/userdoc.rst>
 
 
 .. rubric:: Footnote
diff --git a/rqt_joint_trajectory_controller/doc/rqt_joint_trajectory_controller.png b/rqt_joint_trajectory_controller/doc/rqt_joint_trajectory_controller.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb86f4620bcc091f87db272c7868d16966b091b6
GIT binary patch
literal 29746
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
RjEG;=P}M%1p<;FAKLC>7-W&h`

literal 0
HcmV?d00001

diff --git a/rqt_joint_trajectory_controller/doc/userdoc.rst b/rqt_joint_trajectory_controller/doc/userdoc.rst
new file mode 100644
index 0000000000..197a7afb30
--- /dev/null
+++ b/rqt_joint_trajectory_controller/doc/userdoc.rst
@@ -0,0 +1,12 @@
+:github_url: https://github.com/ros-controls/ros2_controllers/blob/{REPOS_FILE_BRANCH}/rqt_joint_trajectory_controller/doc/userdoc.rst
+
+.. _rqt_joint_trajectory_controller_userdoc:
+
+rqt_joint_trajectory_controller
+===============================
+
+rqt_joint_trajectory_controller is a GUI plugin for rqt that allows to command a joint_trajectory_controller.
+
+.. image:: rqt_joint_trajectory_controller.png
+  :width: 400
+  :alt: rqt_joint_trajectory_controller

From 5fdee99fd6e7e959953d46bdf8f0df5db0d50722 Mon Sep 17 00:00:00 2001
From: Bence Magyar <bence.magyar.robotics@gmail.com>
Date: Wed, 3 Jan 2024 19:47:54 +0000
Subject: [PATCH 2/3] Fix whitespace

---
 joint_trajectory_controller/CHANGELOG.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/joint_trajectory_controller/CHANGELOG.rst b/joint_trajectory_controller/CHANGELOG.rst
index 418324b5ac..54e3b6d5e0 100644
--- a/joint_trajectory_controller/CHANGELOG.rst
+++ b/joint_trajectory_controller/CHANGELOG.rst
@@ -26,7 +26,7 @@ Changelog for package joint_trajectory_controller
 * [JTC] Tolerance tests + Hold on time violation (backport `#613 <https://github.com/ros-controls/ros2_controllers/issues/613>`_)
 * [JTC] Explicitly set hold position (backport `#558 <https://github.com/ros-controls/ros2_controllers/issues/558>`_)
 * [Doc] Fix links (backport `#715 <https://github.com/ros-controls/ros2_controllers/issues/715>`_)
-* Contributors: Christoph Fröhlich, Dr Denis Stogl, Bence Magyar, Abishalini Sivaraman	
+* Contributors: Christoph Fröhlich, Dr Denis Stogl, Bence Magyar, Abishalini Sivaraman
 
 2.29.0 (2023-12-05)
 -------------------

From cb10e3e23af6c5088cde334bc001c7c266e717f2 Mon Sep 17 00:00:00 2001
From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com>
Date: Wed, 3 Jan 2024 19:48:49 +0000
Subject: [PATCH 3/3] Fix ackermann steering odometry (#921) (#955)

---
 steering_controllers_library/CMakeLists.txt   |   3 +
 .../src/steering_odometry.cpp                 |   4 +-
 .../test/test_steering_odometry.cpp           | 110 ++++++++++++++++++
 3 files changed, 115 insertions(+), 2 deletions(-)
 create mode 100644 steering_controllers_library/test/test_steering_odometry.cpp

diff --git a/steering_controllers_library/CMakeLists.txt b/steering_controllers_library/CMakeLists.txt
index 4a98dbf320..6b99416d9f 100644
--- a/steering_controllers_library/CMakeLists.txt
+++ b/steering_controllers_library/CMakeLists.txt
@@ -67,6 +67,9 @@ if(BUILD_TESTING)
     controller_interface
     hardware_interface
   )
+  ament_add_gmock(test_steering_odometry test/test_steering_odometry.cpp)
+  target_link_libraries(test_steering_odometry steering_controllers_library)
+
 endif()
 
 install(
diff --git a/steering_controllers_library/src/steering_odometry.cpp b/steering_controllers_library/src/steering_odometry.cpp
index e8c3965b3f..26322684d2 100644
--- a/steering_controllers_library/src/steering_odometry.cpp
+++ b/steering_controllers_library/src/steering_odometry.cpp
@@ -272,8 +272,8 @@ std::tuple<std::vector<double>, std::vector<double>> SteeringOdometry::get_comma
       double denominator_first_member = 2 * wheelbase_ * std::cos(alpha);
       double denominator_second_member = wheel_track_ * std::sin(alpha);
 
-      double alpha_r = std::atan2(numerator, denominator_first_member - denominator_second_member);
-      double alpha_l = std::atan2(numerator, denominator_first_member + denominator_second_member);
+      double alpha_r = std::atan2(numerator, denominator_first_member + denominator_second_member);
+      double alpha_l = std::atan2(numerator, denominator_first_member - denominator_second_member);
       steering_commands = {alpha_r, alpha_l};
     }
     return std::make_tuple(traction_commands, steering_commands);
diff --git a/steering_controllers_library/test/test_steering_odometry.cpp b/steering_controllers_library/test/test_steering_odometry.cpp
new file mode 100644
index 0000000000..173c76baef
--- /dev/null
+++ b/steering_controllers_library/test/test_steering_odometry.cpp
@@ -0,0 +1,110 @@
+// Copyright (c) 2023, Virtual Vehicle Research GmbH
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "gmock/gmock.h"
+
+#include "steering_controllers_library/steering_odometry.hpp"
+
+TEST(TestSteeringOdometry, initialize)
+{
+  EXPECT_NO_THROW(steering_odometry::SteeringOdometry());
+
+  steering_odometry::SteeringOdometry odom(1);
+  odom.set_wheel_params(1., 2., 3.);
+  odom.set_odometry_type(steering_odometry::ACKERMANN_CONFIG);
+  EXPECT_DOUBLE_EQ(odom.get_heading(), 0.);
+  EXPECT_DOUBLE_EQ(odom.get_x(), 0.);
+  EXPECT_DOUBLE_EQ(odom.get_y(), 0.);
+}
+
+TEST(TestSteeringOdometry, ackermann_fwd_kin_linear)
+{
+  steering_odometry::SteeringOdometry odom(1);
+  odom.set_wheel_params(1., 2., 1.);
+  odom.set_odometry_type(steering_odometry::ACKERMANN_CONFIG);
+  odom.update_open_loop(2., 0., 0.5);
+  EXPECT_DOUBLE_EQ(odom.get_linear(), 2.);
+  EXPECT_DOUBLE_EQ(odom.get_x(), 1.);
+  EXPECT_DOUBLE_EQ(odom.get_y(), 0.);
+}
+
+TEST(TestSteeringOdometry, ackermann_fwd_kin_angular_left)
+{
+  steering_odometry::SteeringOdometry odom(1);
+  odom.set_wheel_params(1., 2., 1.);
+  odom.set_odometry_type(steering_odometry::ACKERMANN_CONFIG);
+  odom.update_open_loop(1., 1., 1.);
+  EXPECT_DOUBLE_EQ(odom.get_linear(), 1.);
+  EXPECT_DOUBLE_EQ(odom.get_angular(), 1.);
+
+  EXPECT_GT(odom.get_x(), 0);  // pos x
+  EXPECT_GT(odom.get_y(), 0);  // pos y, ie. left
+}
+
+TEST(TestSteeringOdometry, ackermann_fwd_kin_angular_right)
+{
+  steering_odometry::SteeringOdometry odom(1);
+  odom.set_wheel_params(1., 2., 1.);
+  odom.set_odometry_type(steering_odometry::ACKERMANN_CONFIG);
+  odom.update_open_loop(1., -1., 1.);
+  EXPECT_DOUBLE_EQ(odom.get_linear(), 1.);
+  EXPECT_DOUBLE_EQ(odom.get_angular(), -1.);
+  EXPECT_GT(odom.get_x(), 0);  // pos x
+  EXPECT_LT(odom.get_y(), 0);  // neg y ie. right
+}
+
+TEST(TestSteeringOdometry, ackermann_back_kin_linear)
+{
+  steering_odometry::SteeringOdometry odom(1);
+  odom.set_wheel_params(1., 2., 1.);
+  odom.set_odometry_type(steering_odometry::ACKERMANN_CONFIG);
+  odom.update_open_loop(1., 0., 1.);
+  auto cmd = odom.get_commands(1., 0.);
+  auto cmd0 = std::get<0>(cmd);  // vel
+  EXPECT_EQ(cmd0[0], cmd0[1]);   // linear
+  EXPECT_GT(cmd0[0], 0);
+  auto cmd1 = std::get<1>(cmd);  // steer
+  EXPECT_EQ(cmd1[0], cmd1[1]);   // no steering
+  EXPECT_EQ(cmd1[0], 0);
+}
+
+TEST(TestSteeringOdometry, ackermann_back_kin_left)
+{
+  steering_odometry::SteeringOdometry odom(1);
+  odom.set_wheel_params(1., 2., 1.);
+  odom.set_odometry_type(steering_odometry::ACKERMANN_CONFIG);
+  odom.update_from_position(0., 0.2, 1.);  // assume already turn
+  auto cmd = odom.get_commands(1., 0.1);
+  auto cmd0 = std::get<0>(cmd);  // vel
+  EXPECT_GT(cmd0[0], cmd0[1]);   // right (outer) > left (inner)
+  EXPECT_GT(cmd0[0], 0);
+  auto cmd1 = std::get<1>(cmd);  // steer
+  EXPECT_LT(cmd1[0], cmd1[1]);   // right (outer) < left (inner)
+  EXPECT_GT(cmd1[0], 0);
+}
+
+TEST(TestSteeringOdometry, ackermann_back_kin_right)
+{
+  steering_odometry::SteeringOdometry odom(1);
+  odom.set_wheel_params(1., 2., 1.);
+  odom.set_odometry_type(steering_odometry::ACKERMANN_CONFIG);
+  odom.update_from_position(0., -0.2, 1.);  // assume already turn
+  auto cmd = odom.get_commands(1., -0.1);
+  auto cmd0 = std::get<0>(cmd);  // vel
+  EXPECT_LT(cmd0[0], cmd0[1]);   // right (inner) < left outer)
+  EXPECT_GT(cmd0[0], 0);
+  auto cmd1 = std::get<1>(cmd);                     // steer
+  EXPECT_GT(std::abs(cmd1[0]), std::abs(cmd1[1]));  // abs right (inner) > abs left (outer)
+  EXPECT_LT(cmd1[0], 0);
+}