From d617070a4507a659d03411d0a8bdf301b30d2cd5 Mon Sep 17 00:00:00 2001 From: ConnorN Date: Mon, 27 Apr 2026 23:20:49 +0000 Subject: [PATCH 1/7] feat: odrive gravity ff --- .../odrive_ros2_control/CMakeLists.txt | 6 + .../src/odrive_hardware_interface.cpp | 132 ++++++++++++++++-- 2 files changed, 130 insertions(+), 8 deletions(-) diff --git a/src/HW-Devices/ros_odrive/odrive_ros2_control/CMakeLists.txt b/src/HW-Devices/ros_odrive/odrive_ros2_control/CMakeLists.txt index 6fb31d62..27fe2b66 100644 --- a/src/HW-Devices/ros_odrive/odrive_ros2_control/CMakeLists.txt +++ b/src/HW-Devices/ros_odrive/odrive_ros2_control/CMakeLists.txt @@ -10,6 +10,9 @@ find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(ament_cmake_auto REQUIRED) find_package(ros_phoenix REQUIRED) +find_package(tf2 REQUIRED) +find_package(tf2_ros REQUIRED) +find_package(tf2_geometry_msgs REQUIRED) ament_auto_find_build_dependencies() ament_export_dependencies(rosidl_default_runtime) @@ -25,6 +28,9 @@ ament_auto_add_library( ) ament_target_dependencies(odrive_ros2_control_plugin + tf2 + tf2_ros + tf2_geometry_msgs ros_phoenix rclcpp ) diff --git a/src/HW-Devices/ros_odrive/odrive_ros2_control/src/odrive_hardware_interface.cpp b/src/HW-Devices/ros_odrive/odrive_ros2_control/src/odrive_hardware_interface.cpp index 323659ef..d4ed5e6f 100644 --- a/src/HW-Devices/ros_odrive/odrive_ros2_control/src/odrive_hardware_interface.cpp +++ b/src/HW-Devices/ros_odrive/odrive_ros2_control/src/odrive_hardware_interface.cpp @@ -8,10 +8,15 @@ #include "rclcpp/rclcpp.hpp" #include "ros_phoenix/msg/motor_status.hpp" #include "socket_can.hpp" +#include +#include +#include +#include namespace odrive_ros2_control { class Axis; +class GravityFFManager; class ODriveHardwareInterface final : public hardware_interface::SystemInterface { @@ -57,9 +62,11 @@ class ODriveHardwareInterface final struct Axis { Axis(SocketCanIntf *can_intf, uint32_t node_id, double multiplier, - ODriveInputMode input_mode) + ODriveInputMode input_mode, + std::shared_ptr gravity_ff_manager = nullptr) : can_intf_(can_intf), node_id_(node_id), multiplier_(multiplier), - input_mode_(input_mode) {} + input_mode_(input_mode), + gravity_ff_manager_(std::move(gravity_ff_manager)) {} void on_can_msg(const rclcpp::Time ×tamp, const can_frame &frame); @@ -105,6 +112,7 @@ struct Axis { ODriveInputMode input_mode_; rclcpp::Publisher::SharedPtr debug_pub_; + std::shared_ptr gravity_ff_manager_; template bool send(const T &msg) const { struct can_frame frame; @@ -120,6 +128,69 @@ struct Axis { } }; +class GravityFFManager { +public: + GravityFFManager(rclcpp::Node::SharedPtr node, double gravity_ff_freq, + std::string link_frame, std::string gravity_frame, + double gravity_const) + : node_(node), gravity_ff_freq_(gravity_ff_freq), + gravity_frame_(gravity_frame), link_frame_(link_frame), + gravity_const_(gravity_const) { + + tf_buffer_ = std::make_shared(node_->get_clock()); + tf_listener_ = std::make_shared(*tf_buffer_); + } + double get_ff_value() { return gravity_ff_.load(std::memory_order_relaxed); } + void start() { + if (gravity_ff_freq_ <= 0 || gravity_frame_.empty() || + link_frame_.empty()) { + return; + } + gravity_ff_timer_ = node_->create_wall_timer( + std::chrono::milliseconds(static_cast(1000.0 / gravity_ff_freq_)), + std::bind(&GravityFFManager::update_gravity_ff, this)); + } + +private: + void update_gravity_ff() { + if (!tf_buffer_) { + RCLCPP_ERROR(node_->get_logger(), + "%s: TF buffer not initialized, cannot update gravity FF", + __FUNCTION__); + return; + } + try { + auto tf = tf_buffer_->lookupTransform( + gravity_frame_.c_str(), link_frame_.c_str(), tf2::TimePointZero); + + tf2::Quaternion q; + tf2::fromMsg(tf.transform.rotation, q); + + double roll, pitch, yaw; + tf2::Matrix3x3(q).getRPY(roll, pitch, yaw); + double ff = gravity_const_ * std::sin(pitch); + gravity_ff_.store(ff, std::memory_order_relaxed); + RCLCPP_DEBUG( + node_->get_logger(), + "%s: Updated gravity FF to %.2f based on pitch %.2f degrees ", + __FUNCTION__, ff, pitch * 180.0 / M_PI); + } catch (const tf2::TransformException &err) { + RCLCPP_ERROR_THROTTLE(node_->get_logger(), *node_->get_clock(), 500, + "%s: Caught exception %s", __FUNCTION__, + err.what()); + } + } + rclcpp::Node::SharedPtr node_; + double gravity_ff_freq_; + std::string gravity_frame_; + std::string link_frame_; + double gravity_const_; + std::atomic gravity_ff_{0.0}; + rclcpp::TimerBase::SharedPtr gravity_ff_timer_; + std::shared_ptr tf_buffer_; + std::shared_ptr tf_listener_{nullptr}; +}; + } // namespace odrive_ros2_control using namespace odrive_ros2_control; @@ -133,6 +204,10 @@ ODriveHardwareInterface::on_init(const hardware_interface::HardwareInfo &info) { CallbackReturn::SUCCESS) { return CallbackReturn::ERROR; } + debug_node_ = std::make_shared("odrive_system_debug_node"); + executor_ = rclcpp::executors::SingleThreadedExecutor::make_shared(); + executor_->add_node(debug_node_); + spin_thread_ = std::thread([this]() { this->executor_->spin(); }); can_intf_name_ = info_.hardware_parameters["can"]; debug_frequency_ = 0; @@ -174,8 +249,43 @@ ODriveHardwareInterface::on_init(const hardware_interface::HardwareInfo &info) { joint.name.c_str()); } } + double gravity_ff_freq = 0.0; + if (joint.parameters.find("gravity_ff_freq") != joint.parameters.end()) { + gravity_ff_freq = std::stod(joint.parameters.at("gravity_ff_freq")); + RCLCPP_INFO(rclcpp::get_logger("ODriveHardwareInterface"), + "Setting Joint %s gravity_ff_freq to %f'", joint.name.c_str(), + gravity_ff_freq); + } + double gravity_const = 0.0; + if (joint.parameters.find("gravity_const") != joint.parameters.end()) { + gravity_const = std::stod(joint.parameters.at("gravity_const")); + RCLCPP_INFO(rclcpp::get_logger("ODriveHardwareInterface"), + "Setting Joint %s gravity_const to %f'", joint.name.c_str(), + gravity_const); + } + std::string gravity_frame = "base_link"; + if (joint.parameters.find("gravity_frame") != joint.parameters.end()) { + gravity_frame = std::string(joint.parameters.at("gravity_frame")); + RCLCPP_INFO(rclcpp::get_logger("ODriveHardwareInterface"), + "Setting Joint %s gravity_frame to %s'", joint.name.c_str(), + gravity_frame.c_str()); + } + std::string link_frame; + if (joint.parameters.find("current_frame") != joint.parameters.end()) { + link_frame = std::string(joint.parameters.at("current_frame")); + RCLCPP_INFO(rclcpp::get_logger("ODriveHardwareInterface"), + "Setting Joint %s current_frame to %s'", joint.name.c_str(), + link_frame.c_str()); + } + std::shared_ptr gravity_ff_manager = nullptr; + if (gravity_ff_freq > 0.0 && !gravity_frame.empty() && + !link_frame.empty()) { + gravity_ff_manager = std::make_shared( + debug_node_, gravity_ff_freq, link_frame, gravity_frame, + gravity_const); + } axes_.emplace_back(&can_intf_, std::stoi(joint.parameters.at("node_id")), - multiplier, input_mode); + multiplier, input_mode, gravity_ff_manager); } return CallbackReturn::SUCCESS; @@ -212,10 +322,6 @@ CallbackReturn ODriveHardwareInterface::on_activate(const State &) { set_axis_command_mode(axis); } if (debug_frequency_ > 0) { - debug_node_ = std::make_shared("odrive_system_debug_node"); - executor_ = rclcpp::executors::SingleThreadedExecutor::make_shared(); - executor_->add_node(debug_node_); - spin_thread_ = std::thread([this]() { this->executor_->spin(); }); debug_timer_ = debug_node_->create_wall_timer( std::chrono::milliseconds(1000 / debug_frequency_), std::bind(&ODriveHardwareInterface::pub_status, this)); @@ -224,6 +330,9 @@ CallbackReturn ODriveHardwareInterface::on_activate(const State &) { debug_node_->template create_publisher( info_.joints[&axis - &axes_[0]].name + "/status", rclcpp::SystemDefaultsQoS()); + if (axis.gravity_ff_manager_) { + axis.gravity_ff_manager_->start(); + } } } @@ -353,7 +462,14 @@ return_type ODriveHardwareInterface::write(const rclcpp::Time &, msg.Vel_FF = axis.vel_input_enabled_ ? (axis.vel_setpoint_ / (2 * M_PI * axis.multiplier_)) : 0.0f; - msg.Torque_FF = axis.torque_input_enabled_ ? axis.torque_setpoint_ : 0.0f; + if (axis.torque_input_enabled_) { + msg.Torque_FF = axis.torque_setpoint_; + } else if (axis.gravity_ff_manager_) { + msg.Torque_FF = axis.gravity_ff_manager_->get_ff_value(); + } else { + msg.Torque_FF = 0.0f; + } + axis.send(msg); } else if (axis.vel_input_enabled_) { Set_Input_Vel_msg_t msg; From 71ad9d89a74c400161a04e203cce51ab47331171 Mon Sep 17 00:00:00 2001 From: ConnorN Date: Mon, 27 Apr 2026 23:22:17 +0000 Subject: [PATCH 2/7] feat: updated URDF + CAN IDs --- .../arm_control/launch/end_effector.launch.py | 2 +- src/URDF/rover_urdf/meshes/Link_3.STL | Bin 1140084 -> 12692084 bytes src/URDF/rover_urdf/meshes/Link_4.STL | Bin 119034 -> 305184 bytes src/URDF/rover_urdf/meshes/Link_5.STL | Bin 544034 -> 6569184 bytes src/URDF/rover_urdf/meshes/Link_6.STL | Bin 312034 -> 1368584 bytes src/URDF/rover_urdf/meshes/Link_7.STL | Bin 0 -> 682084 bytes .../urdf/arm_urdf.ros2_control.xacro | 55 ++++++++---------- src/URDF/rover_urdf/urdf/arm_urdf.xacro | 54 ++++++----------- 8 files changed, 43 insertions(+), 68 deletions(-) create mode 100644 src/URDF/rover_urdf/meshes/Link_7.STL diff --git a/src/Arm/arm_control/launch/end_effector.launch.py b/src/Arm/arm_control/launch/end_effector.launch.py index ba23a875..9fa60f11 100644 --- a/src/Arm/arm_control/launch/end_effector.launch.py +++ b/src/Arm/arm_control/launch/end_effector.launch.py @@ -17,7 +17,7 @@ def generate_launch_description(): plugin="ros_phoenix::TalonSRX", name="end_effector", parameters=[ - {"id": 21}, + {"id": 15}, {"max_voltage": 24.0}, {"max_current": 6.0}, {"brake_mode": True}, diff --git a/src/URDF/rover_urdf/meshes/Link_3.STL b/src/URDF/rover_urdf/meshes/Link_3.STL index 3491081557f290c294dfa6fd5db28c65a20405b0..3fb269f33ed489f67c3557db16225e366e2fcf11 100644 GIT binary patch literal 12692084 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