Skip to content

Commit 42a8ea7

Browse files
committed
Bug Fix
Signed-off-by: nitin <[email protected]>
1 parent 5405115 commit 42a8ea7

File tree

7 files changed

+581
-371
lines changed

7 files changed

+581
-371
lines changed

swerve_drive_controller/include/swerve_drive_controller/swerve_drive_controller.hpp

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -35,72 +35,78 @@
3535
#include "swerve_drive_controller/swerve_drive_kinematics.hpp"
3636
#include "tf2_msgs/msg/tf_message.hpp"
3737

38-
namespace swerve_drive_controller {
38+
namespace swerve_drive_controller
39+
{
3940

4041
using CallbackReturn = controller_interface::CallbackReturn;
4142
// using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn;
4243

43-
class Wheel {
44-
public:
45-
Wheel(std::reference_wrapper<hardware_interface::LoanedCommandInterface> velocity,
46-
std::reference_wrapper<const hardware_interface::LoanedStateInterface> feedback,
47-
std::string name);
44+
class Wheel
45+
{
46+
public:
47+
Wheel(
48+
std::reference_wrapper<hardware_interface::LoanedCommandInterface> velocity,
49+
std::reference_wrapper<const hardware_interface::LoanedStateInterface> feedback,
50+
std::string name);
4851

4952
void set_velocity(double velocity);
5053
double get_feedback();
5154

52-
private:
55+
private:
5356
std::reference_wrapper<hardware_interface::LoanedCommandInterface> velocity_;
5457
std::reference_wrapper<const hardware_interface::LoanedStateInterface> feedback_;
5558
std::string name;
5659
};
5760

58-
class Axle {
59-
public:
60-
Axle(std::reference_wrapper<hardware_interface::LoanedCommandInterface> position,
61-
std::reference_wrapper<const hardware_interface::LoanedStateInterface> feedback,
62-
std::string name);
61+
class Axle
62+
{
63+
public:
64+
Axle(
65+
std::reference_wrapper<hardware_interface::LoanedCommandInterface> position,
66+
std::reference_wrapper<const hardware_interface::LoanedStateInterface> feedback,
67+
std::string name);
6368

6469
void set_position(double position);
6570
double get_feedback();
6671

67-
private:
72+
private:
6873
std::reference_wrapper<hardware_interface::LoanedCommandInterface> position_;
6974
std::reference_wrapper<const hardware_interface::LoanedStateInterface> feedback_;
7075
std::string name;
7176
};
7277

73-
class SwerveController : public controller_interface::ControllerInterface {
78+
class SwerveController : public controller_interface::ControllerInterface
79+
{
7480
using TwistStamped = geometry_msgs::msg::TwistStamped;
7581
using Twist = geometry_msgs::msg::Twist;
7682

77-
public:
83+
public:
7884
SwerveController();
7985

8086
controller_interface::InterfaceConfiguration command_interface_configuration() const override;
8187

8288
controller_interface::InterfaceConfiguration state_interface_configuration() const override;
8389

84-
controller_interface::return_type update(const rclcpp::Time& time,
85-
const rclcpp::Duration& period) override;
90+
controller_interface::return_type update(
91+
const rclcpp::Time & time, const rclcpp::Duration & period) override;
8692

8793
CallbackReturn on_init() override;
8894

89-
CallbackReturn on_configure(const rclcpp_lifecycle::State& previous_state) override;
95+
CallbackReturn on_configure(const rclcpp_lifecycle::State & previous_state) override;
9096

91-
CallbackReturn on_activate(const rclcpp_lifecycle::State& previous_state) override;
97+
CallbackReturn on_activate(const rclcpp_lifecycle::State & previous_state) override;
9298

93-
CallbackReturn on_deactivate(const rclcpp_lifecycle::State& previous_state) override;
99+
CallbackReturn on_deactivate(const rclcpp_lifecycle::State & previous_state) override;
94100

95-
CallbackReturn on_cleanup(const rclcpp_lifecycle::State& previous_state) override;
101+
CallbackReturn on_cleanup(const rclcpp_lifecycle::State & previous_state) override;
96102

97-
CallbackReturn on_error(const rclcpp_lifecycle::State& previous_state) override;
103+
CallbackReturn on_error(const rclcpp_lifecycle::State & previous_state) override;
98104

99-
CallbackReturn on_shutdown(const rclcpp_lifecycle::State& previous_state) override;
105+
CallbackReturn on_shutdown(const rclcpp_lifecycle::State & previous_state) override;
100106

101-
protected:
102-
std::shared_ptr<Wheel> get_wheel(const std::string& wheel_name);
103-
std::shared_ptr<Axle> get_axle(const std::string& axle_name);
107+
protected:
108+
std::shared_ptr<Wheel> get_wheel(const std::string & wheel_name);
109+
std::shared_ptr<Axle> get_axle(const std::string & axle_name);
104110

105111
// Handles for three wheels and their axles
106112
std::shared_ptr<Wheel> front_left_wheel_handle_;
@@ -148,7 +154,8 @@ class SwerveController : public controller_interface::ControllerInterface {
148154
rclcpp::Duration publish_period_ = rclcpp::Duration::from_nanoseconds(0);
149155
rclcpp::Time previous_publish_timestamp_{0, 0, RCL_CLOCK_UNINITIALIZED};
150156

151-
struct WheelParams {
157+
struct WheelParams
158+
{
152159
double x_offset = 0.0; // Chassis Center to Axle Center
153160
double y_offset = 0.0; // Axle Center to Wheel Center
154161
double radius = 0.0; // Assumed to be the same for all wheels
@@ -168,11 +175,11 @@ class SwerveController : public controller_interface::ControllerInterface {
168175

169176
std::shared_ptr<rclcpp::Publisher<nav_msgs::msg::Odometry>> odometry_publisher_ = nullptr;
170177
std::shared_ptr<realtime_tools::RealtimePublisher<nav_msgs::msg::Odometry>>
171-
realtime_odometry_publisher_ = nullptr;
178+
realtime_odometry_publisher_ = nullptr;
172179
std::shared_ptr<rclcpp::Publisher<tf2_msgs::msg::TFMessage>> odometry_transform_publisher_ =
173-
nullptr;
180+
nullptr;
174181
std::shared_ptr<realtime_tools::RealtimePublisher<tf2_msgs::msg::TFMessage>>
175-
realtime_odometry_transform_publisher_ = nullptr;
182+
realtime_odometry_transform_publisher_ = nullptr;
176183

177184
bool is_halted_ = false;
178185

swerve_drive_controller/include/swerve_drive_controller/swerve_drive_kinematics.hpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424
#include <utility>
2525
#include <vector>
2626

27-
namespace swerve_drive_controller {
27+
namespace swerve_drive_controller
28+
{
2829

2930
/**
3031
* @brief Struct to represent the kinematics command for a single wheel .
3132
*/
3233

33-
struct WheelCommand {
34+
struct WheelCommand
35+
{
3436
double steering_angle; // Steering angle in radians
3537
double drive_velocity; // Drive velocity in meters per second
3638
};
@@ -39,20 +41,22 @@ struct WheelCommand {
3941
* @brief Struct to represent the odometry state of the robot.
4042
*/
4143

42-
struct OdometryState {
44+
struct OdometryState
45+
{
4346
double x; // X position in meters
4447
double y; // Y position in meters
4548
double theta; // Orientation (yaw) in radians
4649
};
4750

48-
class SwerveDriveKinematics {
49-
public:
51+
class SwerveDriveKinematics
52+
{
53+
public:
5054
/**
5155
* @brief Constructor for the kinematics solver.
5256
* @param wheel_positions Array of (x, y) positions of the wheels relative to the robot's center.
5357
*/
5458

55-
explicit SwerveDriveKinematics(const std::array<std::pair<double, double>, 4>& wheel_positions);
59+
explicit SwerveDriveKinematics(const std::array<std::pair<double, double>, 4> & wheel_positions);
5660
/**
5761
* @brief Compute the wheel commands based on robot velocity commands.
5862
* @param linear_velocity_x Linear velocity in the x direction (m/s).
@@ -61,9 +65,8 @@ class SwerveDriveKinematics {
6165
* @return Array of wheel commands (steering angles and drive velocities).
6266
*/
6367

64-
std::array<WheelCommand, 4> compute_wheel_commands(double linear_velocity_x,
65-
double linear_velocity_y,
66-
double angular_velocity_z);
68+
std::array<WheelCommand, 4> compute_wheel_commands(
69+
double linear_velocity_x, double linear_velocity_y, double angular_velocity_z);
6770

6871
/**
6972
* @brief Update the odometry based on wheel velocities and elapsed time.
@@ -73,10 +76,11 @@ class SwerveDriveKinematics {
7376
* @return Updated odometry state.
7477
*/
7578

76-
OdometryState update_odometry(const std::array<double, 4>& wheel_velocities_,
77-
const std::array<double, 4>& steering_angles_, double dt);
79+
OdometryState update_odometry(
80+
const std::array<double, 4> & wheel_velocities_, const std::array<double, 4> & steering_angles_,
81+
double dt);
7882

79-
private:
83+
private:
8084
std::array<std::pair<double, double>, 4> wheel_positions_; // Wheel Positions
8185
OdometryState odometry_; // Current Odometry of the robot
8286

0 commit comments

Comments
 (0)