mirror of
https://gitlab.com/obbart/universal_robots_ros_driver.git
synced 2026-04-10 01:50:46 +02:00
changed ROS interface to use set speed slider service
This commit is contained in:
@@ -47,6 +47,7 @@
|
|||||||
#include <ur_controllers/scaled_joint_command_interface.h>
|
#include <ur_controllers/scaled_joint_command_interface.h>
|
||||||
|
|
||||||
#include "ur_rtde_driver/ur/ur_driver.h"
|
#include "ur_rtde_driver/ur/ur_driver.h"
|
||||||
|
#include "ur_rtde_driver/SetSpeedSlider.h"
|
||||||
|
|
||||||
namespace ur_driver
|
namespace ur_driver
|
||||||
{
|
{
|
||||||
@@ -111,7 +112,7 @@ protected:
|
|||||||
void readBitsetData(const std::unique_ptr<rtde_interface::DataPackage>& data_pkg, const std::string& var_name,
|
void readBitsetData(const std::unique_ptr<rtde_interface::DataPackage>& data_pkg, const std::string& var_name,
|
||||||
std::bitset<N>& data);
|
std::bitset<N>& data);
|
||||||
|
|
||||||
void speedScalingCallback(const std_msgs::Float64::ConstPtr& msg);
|
bool setSpeedSlider(ur_rtde_driver::SetSpeedSliderRequest& req, ur_rtde_driver::SetSpeedSliderResponse& res);
|
||||||
bool setIO(ur_msgs::SetIORequest& req, ur_msgs::SetIOResponse& res);
|
bool setIO(ur_msgs::SetIORequest& req, ur_msgs::SetIOResponse& res);
|
||||||
|
|
||||||
std::unique_ptr<UrDriver> ur_driver_;
|
std::unique_ptr<UrDriver> ur_driver_;
|
||||||
@@ -155,7 +156,7 @@ protected:
|
|||||||
std::unique_ptr<realtime_tools::RealtimePublisher<ur_msgs::IOStates>> io_pub_;
|
std::unique_ptr<realtime_tools::RealtimePublisher<ur_msgs::IOStates>> io_pub_;
|
||||||
std::unique_ptr<realtime_tools::RealtimePublisher<ur_msgs::ToolDataMsg>> tool_data_pub_;
|
std::unique_ptr<realtime_tools::RealtimePublisher<ur_msgs::ToolDataMsg>> tool_data_pub_;
|
||||||
|
|
||||||
ros::Subscriber speed_slider_sub_;
|
ros::ServiceServer set_speed_slider_srv_;
|
||||||
ros::ServiceServer set_io_srv_;
|
ros::ServiceServer set_io_srv_;
|
||||||
|
|
||||||
uint32_t runtime_state_;
|
uint32_t runtime_state_;
|
||||||
|
|||||||
@@ -216,8 +216,7 @@ bool HardwareInterface ::init(ros::NodeHandle& root_nh, ros::NodeHandle& robot_h
|
|||||||
}
|
}
|
||||||
tool_data_pub_.reset(new realtime_tools::RealtimePublisher<ur_msgs::ToolDataMsg>(robot_hw_nh, "tool_data", 1));
|
tool_data_pub_.reset(new realtime_tools::RealtimePublisher<ur_msgs::ToolDataMsg>(robot_hw_nh, "tool_data", 1));
|
||||||
|
|
||||||
speed_slider_sub_ = robot_hw_nh.subscribe("set_speed_slider", 10, &HardwareInterface::speedScalingCallback, this);
|
set_speed_slider_srv_ = robot_hw_nh.advertiseService("set_speed_slider", &HardwareInterface::setSpeedSlider, this);
|
||||||
|
|
||||||
set_io_srv_ = robot_hw_nh.advertiseService("set_io", &HardwareInterface::setIO, this);
|
set_io_srv_ = robot_hw_nh.advertiseService("set_io", &HardwareInterface::setIO, this);
|
||||||
|
|
||||||
deactivate_srv_ = robot_hw_nh.advertiseService("hand_back_control", &HardwareInterface::stopControl, this);
|
deactivate_srv_ = robot_hw_nh.advertiseService("hand_back_control", &HardwareInterface::stopControl, this);
|
||||||
@@ -538,9 +537,18 @@ bool HardwareInterface::stopControl(std_srvs::TriggerRequest& req, std_srvs::Tri
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HardwareInterface::speedScalingCallback(const std_msgs::Float64::ConstPtr& msg)
|
bool HardwareInterface::setSpeedSlider(ur_rtde_driver::SetSpeedSliderRequest& req,
|
||||||
|
ur_rtde_driver::SetSpeedSliderResponse& res)
|
||||||
{
|
{
|
||||||
ur_driver_->getRTDEWriter().sendSpeedSlider(msg->data);
|
if (req.data >= 0.01 && req.data <= 1.0)
|
||||||
|
{
|
||||||
|
res.success = ur_driver_->getRTDEWriter().sendSpeedSlider(req.data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
res.success = false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HardwareInterface::setIO(ur_msgs::SetIORequest& req, ur_msgs::SetIOResponse& res)
|
bool HardwareInterface::setIO(ur_msgs::SetIORequest& req, ur_msgs::SetIOResponse& res)
|
||||||
@@ -550,11 +558,14 @@ bool HardwareInterface::setIO(ur_msgs::SetIORequest& req, ur_msgs::SetIOResponse
|
|||||||
if (req.pin <= 7)
|
if (req.pin <= 7)
|
||||||
{
|
{
|
||||||
res.success = ur_driver_->getRTDEWriter().sendStandardDigitalOutput(req.pin, req.state);
|
res.success = ur_driver_->getRTDEWriter().sendStandardDigitalOutput(req.pin, req.state);
|
||||||
} else if (req.pin <= 15)
|
}
|
||||||
|
else if (req.pin <= 15)
|
||||||
{
|
{
|
||||||
res.success = ur_driver_->getRTDEWriter().sendConfigurableDigitalOutput(req.pin-8, req.state);
|
res.success = ur_driver_->getRTDEWriter().sendConfigurableDigitalOutput(req.pin - 8, req.state);
|
||||||
} else {
|
}
|
||||||
res.success = ur_driver_->getRTDEWriter().sendToolDigitalOutput(req.pin-16, req.state);
|
else
|
||||||
|
{
|
||||||
|
res.success = ur_driver_->getRTDEWriter().sendToolDigitalOutput(req.pin - 16, req.state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (req.fun == req.FUN_SET_ANALOG_OUT)
|
else if (req.fun == req.FUN_SET_ANALOG_OUT)
|
||||||
|
|||||||
Reference in New Issue
Block a user