Go to the documentation of this file.
18 #include <ros/node_handle.h>
28 #include <boost/thread/thread.hpp>
29 #include <boost/scoped_ptr.hpp>
50 if(
g_sdhx->init(req.port, req.min_pwm0, req.min_pwm1, req.max_pwm0, req.max_pwm1)){
71 void handleRecover(
const Trigger::Request & req, Trigger::Response & res){
75 }
else if(
g_sdhx->isInitialized()) {
81 res.message =
"Not initialized";
97 void handleInitPins(
const InitPins::Request & req, InitPins::Response & res){
100 for(
size_t i = 0; i < req.input_pins_length; ++i)
104 for(
size_t i = 0; i < req.output_pins_length; ++i)
114 res.success = res.success && (state & req.set_pins) == req.set_pins && (state & req.clear_pins) == 0;
132 void handleSetPWM(
const SetPWM::Request & req, SetPWM::Response & res){
134 if(req.pins_length != req.levels_length){
140 for(
size_t i = 0; i < req.pins_length; ++i)
170 int main(
int argc,
char** argv){
174 if(argc != 2 && argc != 3){
175 std::cerr <<
"Usage: " <<
argv[0] <<
" port@baud [looprate]" << std::endl;
179 rate = boost::lexical_cast<double>(
argv[2]);
181 std::cerr <<
"Rate must be postive" << std::endl;
186 std::string dev(
argv[1]);
187 g_nh.initNode(&dev[0]);
202 boost::chrono::duration<double> double_interval(1.0/rate);
203 boost::chrono::milliseconds interval = boost::chrono::duration_cast<boost::chrono::milliseconds>(double_interval);
204 boost::chrono::steady_clock::time_point next = boost::chrono::steady_clock::now();
209 boost::this_thread::sleep_until(next);
int main(int argc, char **argv)
bool isInitialized() const
ros::ServiceServer< InitPins::Request, InitPins::Response > g_srv_init_pins("init_pins",&handleInitPins)
void handleSetPWM(const SetPWM::Request &req, SetPWM::Response &res)
void handleSetPin(const std_msgs::UInt8 &mgs)
bool clearPins(uint32_t pins)
ros::ServiceServer< InitFinger::Request, InitFinger::Response > g_srv_init_finger("init_finger",&handleInitFinger)
ros::ServiceServer< UpdatePins::Request, UpdatePins::Response > g_srv_update_pins("update_pins",&handleUpdatePins)
bool setPins(uint32_t pins)
void publish(const boost::shared_ptr< M > &message) const
ros::Subscriber< cob_hand_bridge::JointValues > g_sub_command("command", handleJointCommand)
void handleUpdatePins(const UpdatePins::Request &req, UpdatePins::Response &res)
bool initFinger(const InitFinger::Request &req)
void handleHaltFinger(const Trigger::Request &req, Trigger::Response &res)
void handleRecover(const Trigger::Request &req, Trigger::Response &res)
cob_hand_bridge::Status g_status_msg
void handleClearPin(const std_msgs::UInt8 &mgs)
bool writePin(uint32_t pin, uint32_t level)
cob_hand_bridge::JointValues joints
void handleInitFinger(const InitFinger::Request &req, InitFinger::Response &res)
ros::Subscriber< std_msgs::UInt8 > g_sub_set_pin("set_pin", handleSetPin)
ros::Subscriber< std_msgs::UInt8 > g_sub_clear_pin("clear_pin", handleClearPin)
bool setOutput(uint32_t pin)
ros::ServiceServer< Trigger::Request, Trigger::Response > g_srv_halt_finger("halt",&handleHaltFinger)
ros::ServiceServer< Trigger::Request, Trigger::Response > g_srv_recover("recover",&handleRecover)
bool setInput(uint32_t pin)
InitFinger::Request g_init_req
ros::ServiceServer< SetPWM::Request, SetPWM::Response > g_srv_set_pwm("set_pwm",&handleSetPWM)
boost::scoped_ptr< SDHX > g_sdhx
void handleJointCommand(const cob_hand_bridge::JointValues &j)
int16_t velocity_cdeg_s[2]
ros::NodeHandle_< HandBridgeHardware > g_nh
bool pwmPin(uint32_t pin, float level)
void handleInitPins(const InitPins::Request &req, InitPins::Response &res)
ros::Publisher g_pub("status", &g_status_msg)
cob_hand_bridge
Author(s): Mathias Lüdtke
autogenerated on Fri Aug 2 2024 09:40:56