diff --git a/robotino_msgs/CMakeLists.txt b/robotino_msgs/CMakeLists.txt index 5543a3a..7e09017 100644 --- a/robotino_msgs/CMakeLists.txt +++ b/robotino_msgs/CMakeLists.txt @@ -65,6 +65,7 @@ add_message_files( add_service_files( FILES ResetOdometry.srv + SetCompressorsEnabled.srv SetEncoderPosition.srv SetGripperState.srv Grip.srv diff --git a/robotino_msgs/msg/BHAReadings.msg b/robotino_msgs/msg/BHAReadings.msg index 703dc18..dd14be6 100644 --- a/robotino_msgs/msg/BHAReadings.msg +++ b/robotino_msgs/msg/BHAReadings.msg @@ -1,3 +1,5 @@ time stamp float32[] pressures # in bar -float32[] cablepull \ No newline at end of file +bool pressureSensor +float32[] stringPots +float32 foilPot diff --git a/robotino_msgs/srv/SetCompressorsEnabled.srv b/robotino_msgs/srv/SetCompressorsEnabled.srv new file mode 100644 index 0000000..d0f476b --- /dev/null +++ b/robotino_msgs/srv/SetCompressorsEnabled.srv @@ -0,0 +1,2 @@ +bool enable +--- diff --git a/robotino_node/include/CompactBHAROS.h b/robotino_node/include/CompactBHAROS.h index cfa4d3e..d14ed8d 100644 --- a/robotino_node/include/CompactBHAROS.h +++ b/robotino_node/include/CompactBHAROS.h @@ -13,6 +13,7 @@ #include #include "robotino_msgs/BHAReadings.h" #include "robotino_msgs/SetBHAPressures.h" +#include "robotino_msgs/SetCompressorsEnabled.h" class CompactBHAROS : public rec::robotino::api2::CompactBHA { @@ -29,14 +30,28 @@ class CompactBHAROS : public rec::robotino::api2::CompactBHA ros::Publisher bha_pub_; - robotino_msgs::BHAReadings bha_msg_; + ros::ServiceServer set_compressor_enabled_server_; + + /* TODO(vcoelen) : add these functionnalities (cf CompactBHA.h in API2 source) + setWaterDrainValve + setGripperValve1 + setGripperValve2 + */ + + robotino_msgs::BHAReadings bha_msg_; ros::Time stamp_; void pressuresChangedEvent( const float* pressures, unsigned int size ); - void cablepullChangedEvent( const float* cablepull, unsigned int size ); + void pressureSensorChangedEvent( bool pressureSensor ); + void stringPotsChangedEvent( const float* readings, unsigned int size ); + void foilPotChangedEvent( float value ); void setBHAPressuresCallback( const robotino_msgs::SetBHAPressuresConstPtr &msg); + + bool setCompressorsEnabledService( + robotino_msgs::SetCompressorsEnabled::Request &req, + robotino_msgs::SetCompressorsEnabled::Response &res); }; #endif /* COMPACTBHAROS_H_ */ diff --git a/robotino_node/src/CompactBHAROS.cpp b/robotino_node/src/CompactBHAROS.cpp index 61fa6b6..228f402 100644 --- a/robotino_node/src/CompactBHAROS.cpp +++ b/robotino_node/src/CompactBHAROS.cpp @@ -11,6 +11,8 @@ CompactBHAROS::CompactBHAROS() { bha_pub_ = nh_.advertise("bha_readings", 1, true); bha_sub_ = nh_.subscribe("set_bha_pressures", 1, &CompactBHAROS::setBHAPressuresCallback, this); + set_compressor_enabled_server_ = nh_.advertiseService("set_compressor_enabled", + &CompactBHAROS::setCompressorsEnabledService, this); } CompactBHAROS::~CompactBHAROS() @@ -35,19 +37,30 @@ void CompactBHAROS::pressuresChangedEvent( const float* pressures, unsigned int } } -void CompactBHAROS::cablepullChangedEvent( const float* cablepull, unsigned int size ) +void CompactBHAROS::pressureSensorChangedEvent( bool pressureSensor ) +{ + bha_msg_.pressureSensor = pressureSensor; +} + +void CompactBHAROS::stringPotsChangedEvent( const float* readings, unsigned int size ) { // Build the BHAReadings msg - bha_msg_.cablepull.resize( size, 0.0 ); - if( cablepull != NULL ) + bha_msg_.stringPots.resize( size, 0.0 ); + if( readings != NULL ) { - memcpy( bha_msg_.cablepull.data(), cablepull, size * sizeof(float) ); + memcpy( bha_msg_.stringPots.data(), readings, size * sizeof(float) ); } // Publish the msg bha_pub_.publish( bha_msg_ ); } +void CompactBHAROS::foilPotChangedEvent( float value ) +{ + bha_msg_.foilPot = value; +} + + void CompactBHAROS::setBHAPressuresCallback(const robotino_msgs::SetBHAPressuresConstPtr &msg) { float pressures[8]; @@ -62,3 +75,14 @@ void CompactBHAROS::setBHAPressuresCallback(const robotino_msgs::SetBHAPressures setPressures( pressures ); } } + + + + +bool CompactBHAROS::setCompressorsEnabledService( + robotino_msgs::SetCompressorsEnabled::Request &req, + robotino_msgs::SetCompressorsEnabled::Response &res) +{ + setCompressorsEnabled( req.enable ); + return true; +}