Skip to content
Snippets Groups Projects
Commit b3215d9d authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Added attributes and functions in the driver to be used in the nodelet version...

Added attributes and functions in the driver to be used in the nodelet version (the parameters for all the nodes are the same).
Changed the NodeHandle used to create topics in different namespaces.
Changed the parameters of the launch files.
parent 8618ac18
No related branches found
No related tags found
1 merge request!4Filtered localization
...@@ -56,6 +56,9 @@ class IrFootSensorDriver : public iri_base_driver::IriBaseDriver ...@@ -56,6 +56,9 @@ class IrFootSensorDriver : public iri_base_driver::IriBaseDriver
private: private:
// private attributes and methods // private attributes and methods
CIRFeet<CDynamixelServerSerial> *device; CIRFeet<CDynamixelServerSerial> *device;
std::string dyn_device;
unsigned int dyn_baudrate;
unsigned char dev_id;
public: public:
/** /**
* \brief define config type * \brief define config type
...@@ -150,6 +153,9 @@ class IrFootSensorDriver : public iri_base_driver::IriBaseDriver ...@@ -150,6 +153,9 @@ class IrFootSensorDriver : public iri_base_driver::IriBaseDriver
std::vector<double> get_all_sensor_thresholds(void); std::vector<double> get_all_sensor_thresholds(void);
void set_sensor_threshold(adc_dma_ch_t channel_id, double threshold); void set_sensor_threshold(adc_dma_ch_t channel_id, double threshold);
std::vector<bool> get_all_sensor_status(void); std::vector<bool> get_all_sensor_status(void);
void set_dynamixel_device(std::string &device);
void set_dynamixel_baudrate(unsigned int baudrate);
void set_device_id(unsigned char dev_id);
/** /**
* \brief Destructor * \brief Destructor
......
...@@ -187,6 +187,7 @@ class IrFootSensorDriverNode : public iri_base_driver::IriBaseNodeDriver<IrFootS ...@@ -187,6 +187,7 @@ class IrFootSensorDriverNode : public iri_base_driver::IriBaseNodeDriver<IrFootS
class IrFootSensorDriverNodelet : public nodelet::Nodelet class IrFootSensorDriverNodelet : public nodelet::Nodelet
{ {
private: private:
ros::NodeHandle nodelet_nh;
IrFootSensorDriverNode *node; IrFootSensorDriverNode *node;
virtual void onInit();// initialization function virtual void onInit();// initialization function
// thread attributes // thread attributes
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
pkg="ir_foot_sensor" pkg="ir_foot_sensor"
type="ir_foot_sensor" type="ir_foot_sensor"
output="screen"> output="screen">
<param name="dyn_serial" value="A4008atn"/> <param name="dyn_serial" value="/dev/ttyUSB0"/>
<param name="dyn_baudrate" value="1000000"/> <param name="dyn_baudrate" value="115200"/>
<param name="ir_foot_id" value="1"/> <param name="ir_foot_id" value="1"/>
<remap from="/darwin_left_foot/sensor_data" <remap from="/darwin_left_foot/sensor_data"
to="/darwin/sensors/left_foot_data"/> to="/darwin/sensors/left_foot_data"/>
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
pkg="ir_foot_sensor" pkg="ir_foot_sensor"
type="ir_foot_sensor" type="ir_foot_sensor"
output="screen"> output="screen">
<param name="dyn_serial" value="A4008atn"/> <param name="dyn_serial" value="/dev/ttyUSB0"/>
<param name="dyn_baudrate" value="1000000"/> <param name="dyn_baudrate" value="115200"/>
<param name="ir_foot_id" value="2"/> <param name="ir_foot_id" value="2"/>
<remap from="/darwin_right_foot/sensor_data" <remap from="/darwin_right_foot/sensor_data"
to="/darwin/sensors/right_foot_data"/> to="/darwin/sensors/right_foot_data"/>
......
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
name="darwin_left_foot" name="darwin_left_foot"
args="load ir_foot_sensor/IrFootSensorDriverNodelet dynamixel_devices" args="load ir_foot_sensor/IrFootSensorDriverNodelet dynamixel_devices"
output="screen"> output="screen">
<param name="dyn_serial" value="A4008atn"/> <param name="dyn_serial" value="/dev/ttyUSB0"/>
<param name="dyn_baudrate" value="1000000"/> <param name="dyn_baudrate" value="115200"/>
<param name="ir_foot_id" value="1"/> <param name="ir_foot_id" value="1"/>
<remap from="/darwin_left_foot/sensor_data" <remap from="/darwin_left_foot/sensor_data"
to="/darwin/sensors/left_foot_data"/> to="/darwin/sensors/left_foot_data"/>
...@@ -26,8 +26,8 @@ ...@@ -26,8 +26,8 @@
name="darwin_right_foot" name="darwin_right_foot"
args="load ir_foot_sensor/IrFootSensorDriverNodelet dynamixel_devices" args="load ir_foot_sensor/IrFootSensorDriverNodelet dynamixel_devices"
output="screen"> output="screen">
<param name="dyn_serial" value="A4008atn"/> <param name="dyn_serial" value="/dev/ttyUSB0"/>
<param name="dyn_baudrate" value="1000000"/> <param name="dyn_baudrate" value="115200"/>
<param name="ir_foot_id" value="2"/> <param name="ir_foot_id" value="2"/>
<remap from="/darwin_right_foot/sensor_data" <remap from="/darwin_right_foot/sensor_data"
to="/darwin/sensors/right_foot_data"/> to="/darwin/sensors/right_foot_data"/>
......
...@@ -4,6 +4,9 @@ IrFootSensorDriver::IrFootSensorDriver(void) ...@@ -4,6 +4,9 @@ IrFootSensorDriver::IrFootSensorDriver(void)
{ {
//setDriverId(driver string id); //setDriverId(driver string id);
this->device=NULL; this->device=NULL;
this->dyn_device="";
this->dyn_baudrate=-1;
this->dev_id=-1;
} }
bool IrFootSensorDriver::openDriver(void) bool IrFootSensorDriver::openDriver(void)
...@@ -17,7 +20,10 @@ bool IrFootSensorDriver::openDriver(void) ...@@ -17,7 +20,10 @@ bool IrFootSensorDriver::openDriver(void)
this->device=NULL; this->device=NULL;
} }
name << "foot_" << this->config_.ir_foot_id; name << "foot_" << this->config_.ir_foot_id;
this->device=new CIRFeet<CDynamixelServerSerial>(name.str(),this->config_.dyn_serial,this->config_.dyn_baudrate,this->config_.ir_foot_id); if(this->dyn_device!="" && this->dyn_baudrate!=-1 && this->dev_id!=-1)
this->device=new CIRFeet<CDynamixelServerSerial>(name.str(),this->dyn_device,this->dyn_baudrate,this->dev_id);
else
this->device=new CIRFeet<CDynamixelServerSerial>(name.str(),this->config_.dyn_serial,this->config_.dyn_baudrate,this->config_.ir_foot_id);
return true; return true;
}catch(CException &e){ }catch(CException &e){
...@@ -105,6 +111,21 @@ std::vector<bool> IrFootSensorDriver::get_all_sensor_status(void) ...@@ -105,6 +111,21 @@ std::vector<bool> IrFootSensorDriver::get_all_sensor_status(void)
return std::vector<bool>(); return std::vector<bool>();
} }
void IrFootSensorDriver::set_dynamixel_device(std::string &device)
{
this->dyn_device=device;
}
void IrFootSensorDriver::set_dynamixel_baudrate(unsigned int baudrate)
{
this->dyn_baudrate=baudrate;
}
void IrFootSensorDriver::set_device_id(unsigned char dev_id)
{
this->dev_id=dev_id;
}
IrFootSensorDriver::~IrFootSensorDriver(void) IrFootSensorDriver::~IrFootSensorDriver(void)
{ {
if(this->device!=NULL) if(this->device!=NULL)
......
...@@ -3,11 +3,13 @@ ...@@ -3,11 +3,13 @@
IrFootSensorDriverNode::IrFootSensorDriverNode(ros::NodeHandle &nh) : IrFootSensorDriverNode::IrFootSensorDriverNode(ros::NodeHandle &nh) :
iri_base_driver::IriBaseNodeDriver<IrFootSensorDriver>(nh) iri_base_driver::IriBaseNodeDriver<IrFootSensorDriver>(nh)
{ {
std::string dyn_serial="";
int dyn_baudrate=-1,dev_id=-1;
//init class attributes if necessary //init class attributes if necessary
this->loop_rate_ = 10;//in [Hz] this->loop_rate_ = 10;//in [Hz]
// [init publishers] // [init publishers]
this->sensor_data_publisher_ = this->public_node_handle_.advertise<humanoid_common_msgs::ir_foot_data>("sensor_data", 1); this->sensor_data_publisher_ = this->node_handle_.advertise<humanoid_common_msgs::ir_foot_data>("sensor_data", 1);
// [init subscribers] // [init subscribers]
...@@ -29,6 +31,13 @@ IrFootSensorDriverNode::IrFootSensorDriverNode(ros::NodeHandle &nh) : ...@@ -29,6 +31,13 @@ IrFootSensorDriverNode::IrFootSensorDriverNode(ros::NodeHandle &nh) :
this->sensor_data_ir_foot_data_msg_.names[7]="front_left"; this->sensor_data_ir_foot_data_msg_.names[7]="front_left";
this->sensor_data_ir_foot_data_msg_.names[8]="front_right"; this->sensor_data_ir_foot_data_msg_.names[8]="front_right";
this->sensor_data_ir_foot_data_msg_.names[9]="front_analog"; this->sensor_data_ir_foot_data_msg_.names[9]="front_analog";
this->node_handle_.getParam("dyn_serial",dyn_serial);
this->driver_.set_dynamixel_device(dyn_serial);
this->node_handle_.getParam("dyn_baudrate",dyn_baudrate);
this->driver_.set_dynamixel_baudrate(dyn_baudrate);
this->node_handle_.getParam("ir_foot_id",dev_id);
this->driver_.set_device_id(dev_id);
} }
void IrFootSensorDriverNode::mainNodeThread(void) void IrFootSensorDriverNode::mainNodeThread(void)
...@@ -111,7 +120,7 @@ int main(int argc,char *argv[]) ...@@ -111,7 +120,7 @@ int main(int argc,char *argv[])
#include <pluginlib/class_list_macros.h> #include <pluginlib/class_list_macros.h>
IrFootSensorDriverNodelet::IrFootSensorDriverNodelet() IrFootSensorDriverNodelet::IrFootSensorDriverNodelet()
{ {
this->node=NULL; this->node=NULL;
} }
...@@ -131,7 +140,8 @@ IrFootSensorDriverNodelet::~IrFootSensorDriverNodelet(void) ...@@ -131,7 +140,8 @@ IrFootSensorDriverNodelet::~IrFootSensorDriverNodelet(void)
void IrFootSensorDriverNodelet::onInit() void IrFootSensorDriverNodelet::onInit()
{ {
// initialize the driver node // initialize the driver node
this->node=new IrFootSensorDriverNode(getPrivateNodeHandle()); this->nodelet_nh=ros::NodeHandle(getPrivateNodeHandle(),getName());
this->node=new IrFootSensorDriverNode(this->nodelet_nh);
// initialize the thread // initialize the thread
this->thread_server=CThreadServer::instance(); this->thread_server=CThreadServer::instance();
this->spin_thread_id=getName() + "_firewire_nodelet_spin"; this->spin_thread_id=getName() + "_firewire_nodelet_spin";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment