File tree Expand file tree Collapse file tree 2 files changed +10
-6
lines changed
Expand file tree Collapse file tree 2 files changed +10
-6
lines changed Original file line number Diff line number Diff line change 5858#include " rclcpp/time.hpp"
5959#include " rclcpp/duration.hpp"
6060#include " std_msgs/msg/bool.hpp"
61+ #include " tf2/LinearMath/Quaternion.hpp"
62+ #include " tf2_geometry_msgs/tf2_geometry_msgs.hpp"
6163#include " tf2_ros/buffer.hpp"
6264#include " tf2_ros/transform_listener.hpp"
6365#include " ur_controllers/gpio_controller_parameters.hpp"
Original file line number Diff line number Diff line change @@ -590,16 +590,18 @@ bool GPIOController::setGravity(const ur_msgs::srv::SetGravity::Request::SharedP
590590 return false ;
591591 }
592592
593- // Transform the gravity vector
594- geometry_msgs::msg::Vector3 transformed_gravity;
595- tf2::doTransform (req->gravity .vector , transformed_gravity, tf_to_base_link);
593+ // Rotate the gravity vector
594+ tf2::Vector3 raw_gravity (req->gravity .vector .x , req->gravity .vector .y , req->gravity .vector .z );
595+ tf2::Quaternion quat;
596+ tf2::fromMsg (tf_to_base_link.transform .rotation , quat);
597+ tf2::Vector3 transformed_gravity = tf2::quatRotate (quat, raw_gravity);
596598
597599 // reset success flag
598600 std::ignore = command_interfaces_[CommandInterfaces::GRAVITY_ASYNC_SUCCESS].set_value (ASYNC_WAITING);
599601
600- std::ignore = command_interfaces_[CommandInterfaces::GRAVITY_X].set_value (transformed_gravity.x );
601- std::ignore = command_interfaces_[CommandInterfaces::GRAVITY_Y].set_value (transformed_gravity.y );
602- std::ignore = command_interfaces_[CommandInterfaces::GRAVITY_Z].set_value (transformed_gravity.z );
602+ std::ignore = command_interfaces_[CommandInterfaces::GRAVITY_X].set_value (transformed_gravity.x () );
603+ std::ignore = command_interfaces_[CommandInterfaces::GRAVITY_Y].set_value (transformed_gravity.y () );
604+ std::ignore = command_interfaces_[CommandInterfaces::GRAVITY_Z].set_value (transformed_gravity.z () );
603605
604606 if (!waitForAsyncCommand ([&]() {
605607 return command_interfaces_[CommandInterfaces::GRAVITY_ASYNC_SUCCESS].get_optional ().value_or (ASYNC_WAITING);
You can’t perform that action at this time.
0 commit comments