runtime/rbs_bt_executor/src/MoveToPose.cpp

75 lines
2.8 KiB
C++
Raw Normal View History

2023-02-03 07:04:12 +00:00
#include "rbs_skill_interfaces/action/moveit_send_pose.hpp"
2022-01-31 21:28:39 +04:00
#include "behaviortree_cpp_v3/bt_factory.h"
#include "behavior_tree/BtAction.hpp"
2022-02-07 18:34:33 +04:00
#include "geometry_msgs/msg/pose_stamped.hpp"
#include "moveit_msgs/action/move_group.h"
// #include "Eigen/Geometry"
2022-03-12 13:29:26 +04:00
#include "rclcpp/parameter.hpp"
2022-01-31 21:28:39 +04:00
using namespace BT;
2023-02-03 07:04:12 +00:00
using MoveToPoseAction = rbs_skill_interfaces::action::MoveitSendPose;
2022-03-16 00:50:12 +04:00
static const rclcpp::Logger LOGGER = rclcpp::get_logger("MoveToPoseActionClient");
2022-01-31 21:28:39 +04:00
class MoveToPose : public BtAction<MoveToPoseAction>
{
public:
MoveToPose(const std::string & name, const BT::NodeConfiguration & config)
2022-04-01 01:36:48 +08:00
: BtAction<MoveToPoseAction>(name, config)
{
2023-02-03 07:04:12 +00:00
//auto params = _node->declare_parameters("Poses")
RCLCPP_INFO(_node->get_logger(), "Start the node");
pose_des.position.x = 0.11724797630931184;
pose_des.position.y = 0.46766635768602544;
pose_des.position.z = 0.5793862343094913;
pose_des.orientation.x = 0.9987999001314066;
pose_des.orientation.y = 0.041553846820940925;
pose_des.orientation.z = -0.004693314677006583;
pose_des.orientation.w = -0.025495295825239704;
2022-01-31 21:28:39 +04:00
}
MoveToPoseAction::Goal populate_goal() override
{
2022-04-01 01:36:48 +08:00
getInput<std::string>("robot_name", robot_name_);
2023-02-03 07:04:12 +00:00
getInput<std::string>("pose", pose_);
//auto pose = _node->get_parameter(pose_).get_parameter_value().get<geometry_msgs::msg::Pose>();
2022-04-01 01:36:48 +08:00
RCLCPP_INFO(_node->get_logger(), "GrasPose pose.x: %f pose.y: %f pose.z: \n%f opientation.x: %f orientation.y: %f orientation.z: %f orientation.w: %f",
2023-02-03 07:04:12 +00:00
pose_des.position.x, pose_des.position.y, pose_des.position.z,
pose_des.orientation.x, pose_des.orientation.y, pose_des.orientation.z, pose_des.orientation.w);
2022-04-01 01:36:48 +08:00
2022-02-07 18:34:33 +04:00
auto goal = MoveToPoseAction::Goal();
2022-04-01 01:36:48 +08:00
RCLCPP_INFO(_node->get_logger(), "Send goal to robot [%s]", robot_name_.c_str());
goal.robot_name = robot_name_;
2023-02-03 07:04:12 +00:00
goal.target_pose = pose_des;
2022-02-07 18:34:33 +04:00
goal.end_effector_acceleration = 1.0;
goal.end_effector_velocity = 1.0;
2022-04-01 01:36:48 +08:00
2022-02-07 18:34:33 +04:00
RCLCPP_INFO(_node->get_logger(), "Goal populated");
2022-01-31 21:28:39 +04:00
return goal;
}
static PortsList providedPorts()
{
return providedBasicPorts({
2022-04-01 01:36:48 +08:00
InputPort<std::string>("robot_name"),
2023-02-03 07:04:12 +00:00
InputPort<std::string>("pose")
2022-04-01 01:36:48 +08:00
});
2022-01-31 21:28:39 +04:00
}
private:
std::string robot_name_;
2023-02-03 07:04:12 +00:00
std::string pose_;
geometry_msgs::msg::Pose pose_des;
std::map<std::string, geometry_msgs::msg::Pose> Poses;
2022-01-31 21:28:39 +04:00
}; // class MoveToPose
BT_REGISTER_NODES(factory)
{
factory.registerNodeType<MoveToPose>("MoveToPose");
}