rm_controllers
Loading...
Searching...
No Matches
active_suspension.h
Go to the documentation of this file.
1//
2// Created by xuncheng on 2025/11/29.
3//
4
7#include <effort_controllers/joint_position_controller.h>
8#include <rm_msgs/ChassisActiveSusCmd.h>
9#include <std_msgs/Bool.h>
10#include <rm_common/ros_utilities.h>
11#include <string>
12#include <Eigen/QR>
13#include <pluginlib/class_list_macros.hpp>
14
16{
17enum class State
18{
19 DOWN = 0,
20 MID = 1,
21 UP = 2
22};
23
25{
26public:
28 bool init(hardware_interface::RobotHW* robot_hw, ros::NodeHandle& root_nh, ros::NodeHandle& controller_nh) override;
29 void ActiveSuspensionCallBack(const rm_msgs::ChassisActiveSusCmd& msg);
30
31private:
32 void moveJoint(const ros::Time& time, const ros::Duration& period) override;
33
34 std::vector<std::shared_ptr<effort_controllers::JointPositionController>> active_suspension_joints_;
35 std::vector<hardware_interface::JointHandle> active_suspension_joint_handles_{};
36
37 ros::Subscriber active_suspension_sub_;
38 double current_pos_{ 0. };
39 double target_pos_{ 0. };
40 double feedforward_offset{ 0. };
41 double feedforward_effort{ 0. };
42 double stretch_coff_A_{ 0. };
43 double stretch_coff_k_{ 0. };
44 double shrink_coff_A_{ 0. };
45 double shrink_coff_k_{ 0. };
46 double feedforward_effect_time_{ 0. };
47 double static_effort{ 0. };
48
49 ros::Time feedforward_timer;
50 State current_state_{ State::DOWN };
51 State last_state_{ State::DOWN };
52};
53} // namespace rm_chassis_controllers
void ActiveSuspensionCallBack(const rm_msgs::ChassisActiveSusCmd &msg)
Definition active_suspension.cpp:83
bool init(hardware_interface::RobotHW *robot_hw, ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh) override
Definition active_suspension.cpp:9
Definition active_suspension.h:16
State
Definition active_suspension.h:18