add gripper services
This commit is contained in:
parent
62ad6e683b
commit
02adf17947
@ -35,7 +35,8 @@ add_executable(ros2aria
|
|||||||
src/cmd_vel.cpp
|
src/cmd_vel.cpp
|
||||||
src/publish.cpp
|
src/publish.cpp
|
||||||
src/sonar.cpp
|
src/sonar.cpp
|
||||||
src/pose.cpp)
|
src/pose.cpp
|
||||||
|
src/gripper.cpp)
|
||||||
|
|
||||||
ament_target_dependencies(ros2aria rclcpp)
|
ament_target_dependencies(ros2aria rclcpp)
|
||||||
ament_target_dependencies(ros2aria std_srvs)
|
ament_target_dependencies(ros2aria std_srvs)
|
||||||
|
34
src/ros2aria/src/gripper.cpp
Normal file
34
src/ros2aria/src/gripper.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "./ros2aria.hpp"
|
||||||
|
|
||||||
|
void Ros2Aria::gripper_open_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const
|
||||||
|
{
|
||||||
|
UNUSED(request);
|
||||||
|
UNUSED(response);
|
||||||
|
std::lock_guard<RAIIBot> lock(*robot.get());
|
||||||
|
auto g = robot->getGripper();
|
||||||
|
g->gripOpen();
|
||||||
|
}
|
||||||
|
void Ros2Aria::gripper_close_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const
|
||||||
|
{
|
||||||
|
UNUSED(request);
|
||||||
|
UNUSED(response);
|
||||||
|
std::lock_guard<RAIIBot> lock(*robot.get());
|
||||||
|
auto g = robot->getGripper();
|
||||||
|
g->gripClose();
|
||||||
|
}
|
||||||
|
void Ros2Aria::gripper_up_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const
|
||||||
|
{
|
||||||
|
UNUSED(request);
|
||||||
|
UNUSED(response);
|
||||||
|
std::lock_guard<RAIIBot> lock(*robot.get());
|
||||||
|
auto g = robot->getGripper();
|
||||||
|
g->liftUp();
|
||||||
|
}
|
||||||
|
void Ros2Aria::gripper_down_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const
|
||||||
|
{
|
||||||
|
UNUSED(request);
|
||||||
|
UNUSED(response);
|
||||||
|
std::lock_guard<RAIIBot> lock(*robot.get());
|
||||||
|
auto g = robot->getGripper();
|
||||||
|
g->liftDown();
|
||||||
|
}
|
@ -15,6 +15,7 @@ public:
|
|||||||
RAIIBot(rclcpp::Node *node, std::string port)
|
RAIIBot(rclcpp::Node *node, std::string port)
|
||||||
{
|
{
|
||||||
this->robot = new ArRobot();
|
this->robot = new ArRobot();
|
||||||
|
this->gripper = new ArGripper(this->robot);
|
||||||
this->node = node;
|
this->node = node;
|
||||||
this->clock = rclcpp::Clock::make_shared();
|
this->clock = rclcpp::Clock::make_shared();
|
||||||
|
|
||||||
@ -76,6 +77,11 @@ public:
|
|||||||
return this->robot;
|
return this->robot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ArGripper *getGripper()
|
||||||
|
{
|
||||||
|
return this->gripper;
|
||||||
|
}
|
||||||
|
|
||||||
rclcpp::Clock::SharedPtr getClock()
|
rclcpp::Clock::SharedPtr getClock()
|
||||||
{
|
{
|
||||||
return this->clock;
|
return this->clock;
|
||||||
@ -104,6 +110,7 @@ private:
|
|||||||
ArRobotConnector *robotConn = nullptr;
|
ArRobotConnector *robotConn = nullptr;
|
||||||
ArArgumentBuilder *args = nullptr;
|
ArArgumentBuilder *args = nullptr;
|
||||||
ArArgumentParser *argparser = nullptr;
|
ArArgumentParser *argparser = nullptr;
|
||||||
|
ArGripper *gripper = nullptr;
|
||||||
rclcpp::Node *node = nullptr;
|
rclcpp::Node *node = nullptr;
|
||||||
rclcpp::TimerBase::SharedPtr watchdogTimer;
|
rclcpp::TimerBase::SharedPtr watchdogTimer;
|
||||||
rclcpp::Time lastWatchdogPoke;
|
rclcpp::Time lastWatchdogPoke;
|
||||||
|
@ -12,13 +12,19 @@ Ros2Aria::Ros2Aria()
|
|||||||
RCLCPP_INFO(this->get_logger(), "starting subscribers and services");
|
RCLCPP_INFO(this->get_logger(), "starting subscribers and services");
|
||||||
cmd_vel_sub_ = this->create_subscription<geometry_msgs::msg::Twist>(
|
cmd_vel_sub_ = this->create_subscription<geometry_msgs::msg::Twist>(
|
||||||
"cmd_vel", 10, std::bind(&Ros2Aria::cmd_vel_callback, this, _1));
|
"cmd_vel", 10, std::bind(&Ros2Aria::cmd_vel_callback, this, _1));
|
||||||
stop_service_ = this->create_service<std_srvs::srv::Empty>("stop", std::bind(&Ros2Aria::stop, this, _1, _2));
|
|
||||||
|
|
||||||
sonar_pub_ = this->create_publisher<sensor_msgs::msg::PointCloud>("sonar", 10);
|
sonar_pub_ = this->create_publisher<sensor_msgs::msg::PointCloud>("sonar", 10);
|
||||||
sonar_pointcloud2_pub_ = this->create_publisher<sensor_msgs::msg::PointCloud2>("sonar_pointcloud2", 10);
|
sonar_pointcloud2_pub_ = this->create_publisher<sensor_msgs::msg::PointCloud2>("sonar_pointcloud2", 10);
|
||||||
|
|
||||||
pose_pub_ = this->create_publisher<nav_msgs::msg::Odometry>("pose", 1000);
|
pose_pub_ = this->create_publisher<nav_msgs::msg::Odometry>("pose", 1000);
|
||||||
|
|
||||||
|
// services
|
||||||
|
stop_service_ = this->create_service<std_srvs::srv::Empty>("stop", std::bind(&Ros2Aria::stop, this, _1, _2));
|
||||||
|
gripper_open_service_ = this->create_service<std_srvs::srv::Empty>("gripper_open", std::bind(&Ros2Aria::gripper_open_callback, this, _1, _2));
|
||||||
|
gripper_close_service_ = this->create_service<std_srvs::srv::Empty>("gripper_close", std::bind(&Ros2Aria::gripper_close_callback, this, _1, _2));
|
||||||
|
gripper_up_service_ = this->create_service<std_srvs::srv::Empty>("gripper_up", std::bind(&Ros2Aria::gripper_up_callback, this, _1, _2));
|
||||||
|
gripper_down_service_ = this->create_service<std_srvs::srv::Empty>("gripper_down", std::bind(&Ros2Aria::gripper_down_callback, this, _1, _2));
|
||||||
|
|
||||||
// listen to sensors
|
// listen to sensors
|
||||||
auto r = robot->getRobot();
|
auto r = robot->getRobot();
|
||||||
r->addSensorInterpTask("ROSPublishingTask", 100, &this->sensorCb);
|
r->addSensorInterpTask("ROSPublishingTask", 100, &this->sensorCb);
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
#include "./raiibot.cpp"
|
#include "./raiibot.cpp"
|
||||||
|
|
||||||
|
#define UNUSED(x) (void)(x)
|
||||||
|
|
||||||
class Ros2Aria : public rclcpp::Node
|
class Ros2Aria : public rclcpp::Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -43,4 +45,16 @@ private:
|
|||||||
// services
|
// services
|
||||||
rclcpp::Service<std_srvs::srv::Empty>::SharedPtr stop_service_;
|
rclcpp::Service<std_srvs::srv::Empty>::SharedPtr stop_service_;
|
||||||
void stop(const std::shared_ptr<std_srvs::srv::Empty::Request> request, std::shared_ptr<std_srvs::srv::Empty::Response> response) const;
|
void stop(const std::shared_ptr<std_srvs::srv::Empty::Request> request, std::shared_ptr<std_srvs::srv::Empty::Response> response) const;
|
||||||
|
|
||||||
|
rclcpp::Service<std_srvs::srv::Empty>::SharedPtr gripper_open_service_;
|
||||||
|
void gripper_open_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const;
|
||||||
|
|
||||||
|
rclcpp::Service<std_srvs::srv::Empty>::SharedPtr gripper_close_service_;
|
||||||
|
void gripper_close_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const;
|
||||||
|
|
||||||
|
rclcpp::Service<std_srvs::srv::Empty>::SharedPtr gripper_up_service_;
|
||||||
|
void gripper_up_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const;
|
||||||
|
|
||||||
|
rclcpp::Service<std_srvs::srv::Empty>::SharedPtr gripper_down_service_;
|
||||||
|
void gripper_down_callback(const std_srvs::srv::Empty::Request::SharedPtr request, std_srvs::srv::Empty::Response::SharedPtr response) const;
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user