diff --git a/ir_foot_sensor/include/ir_foot_sensor_driver.h b/ir_foot_sensor/include/ir_foot_sensor_driver.h index abed4b7efbe8c85749eca95cc3cd4539d1a2821e..e459ddee0253f3e45d462df023c55a7d8a89832a 100644 --- a/ir_foot_sensor/include/ir_foot_sensor_driver.h +++ b/ir_foot_sensor/include/ir_foot_sensor_driver.h @@ -56,6 +56,9 @@ class IrFootSensorDriver : public iri_base_driver::IriBaseDriver private: // private attributes and methods CIRFeet<CDynamixelServerSerial> *device; + std::string dyn_device; + unsigned int dyn_baudrate; + unsigned char dev_id; public: /** * \brief define config type @@ -150,6 +153,9 @@ class IrFootSensorDriver : public iri_base_driver::IriBaseDriver std::vector<double> get_all_sensor_thresholds(void); void set_sensor_threshold(adc_dma_ch_t channel_id, double threshold); 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 diff --git a/ir_foot_sensor/include/ir_foot_sensor_driver_node.h b/ir_foot_sensor/include/ir_foot_sensor_driver_node.h index b93c024f8c14effa535cb3a55bacebb2e00b877f..1b28e08ea87493d1020c79d692cfca752159d406 100644 --- a/ir_foot_sensor/include/ir_foot_sensor_driver_node.h +++ b/ir_foot_sensor/include/ir_foot_sensor_driver_node.h @@ -187,6 +187,7 @@ class IrFootSensorDriverNode : public iri_base_driver::IriBaseNodeDriver<IrFootS class IrFootSensorDriverNodelet : public nodelet::Nodelet { private: + ros::NodeHandle nodelet_nh; IrFootSensorDriverNode *node; virtual void onInit();// initialization function // thread attributes diff --git a/ir_foot_sensor/launch/darwin_left_foot.launch b/ir_foot_sensor/launch/darwin_left_foot.launch index 61d8490bbcf62b782b0ce78dd37caab56b9537c2..3e257823e9c2242345f05011ae4318b46b6d67c0 100644 --- a/ir_foot_sensor/launch/darwin_left_foot.launch +++ b/ir_foot_sensor/launch/darwin_left_foot.launch @@ -4,8 +4,8 @@ pkg="ir_foot_sensor" type="ir_foot_sensor" output="screen"> - <param name="dyn_serial" value="A4008atn"/> - <param name="dyn_baudrate" value="1000000"/> + <param name="dyn_serial" value="/dev/ttyUSB0"/> + <param name="dyn_baudrate" value="115200"/> <param name="ir_foot_id" value="1"/> <remap from="/darwin_left_foot/sensor_data" to="/darwin/sensors/left_foot_data"/> diff --git a/ir_foot_sensor/launch/darwin_right_foot.launch b/ir_foot_sensor/launch/darwin_right_foot.launch index df674f2e27fbaca24d9a718ab36215795c18c1f7..51cd6f397c8db7ca607ad140b8157ba17edbaac0 100644 --- a/ir_foot_sensor/launch/darwin_right_foot.launch +++ b/ir_foot_sensor/launch/darwin_right_foot.launch @@ -4,8 +4,8 @@ pkg="ir_foot_sensor" type="ir_foot_sensor" output="screen"> - <param name="dyn_serial" value="A4008atn"/> - <param name="dyn_baudrate" value="1000000"/> + <param name="dyn_serial" value="/dev/ttyUSB0"/> + <param name="dyn_baudrate" value="115200"/> <param name="ir_foot_id" value="2"/> <remap from="/darwin_right_foot/sensor_data" to="/darwin/sensors/right_foot_data"/> diff --git a/ir_foot_sensor/launch/darwin_two_feet_nodelet.launch b/ir_foot_sensor/launch/darwin_two_feet_nodelet.launch index 210fb48de7eb1219ee26db4962c9a16ba7cf370a..7146cd77bf5178244d6878b9341a4034ad626477 100755 --- a/ir_foot_sensor/launch/darwin_two_feet_nodelet.launch +++ b/ir_foot_sensor/launch/darwin_two_feet_nodelet.launch @@ -13,8 +13,8 @@ name="darwin_left_foot" args="load ir_foot_sensor/IrFootSensorDriverNodelet dynamixel_devices" output="screen"> - <param name="dyn_serial" value="A4008atn"/> - <param name="dyn_baudrate" value="1000000"/> + <param name="dyn_serial" value="/dev/ttyUSB0"/> + <param name="dyn_baudrate" value="115200"/> <param name="ir_foot_id" value="1"/> <remap from="/darwin_left_foot/sensor_data" to="/darwin/sensors/left_foot_data"/> @@ -26,8 +26,8 @@ name="darwin_right_foot" args="load ir_foot_sensor/IrFootSensorDriverNodelet dynamixel_devices" output="screen"> - <param name="dyn_serial" value="A4008atn"/> - <param name="dyn_baudrate" value="1000000"/> + <param name="dyn_serial" value="/dev/ttyUSB0"/> + <param name="dyn_baudrate" value="115200"/> <param name="ir_foot_id" value="2"/> <remap from="/darwin_right_foot/sensor_data" to="/darwin/sensors/right_foot_data"/> diff --git a/ir_foot_sensor/src/ir_foot_sensor_driver.cpp b/ir_foot_sensor/src/ir_foot_sensor_driver.cpp index 7d71cff775c6dfa1ba453ca15cd01c7020f0737d..18fdc9b55317bea13d497e3a66c6189eb5724dfe 100644 --- a/ir_foot_sensor/src/ir_foot_sensor_driver.cpp +++ b/ir_foot_sensor/src/ir_foot_sensor_driver.cpp @@ -4,6 +4,9 @@ IrFootSensorDriver::IrFootSensorDriver(void) { //setDriverId(driver string id); this->device=NULL; + this->dyn_device=""; + this->dyn_baudrate=-1; + this->dev_id=-1; } bool IrFootSensorDriver::openDriver(void) @@ -17,7 +20,10 @@ bool IrFootSensorDriver::openDriver(void) this->device=NULL; } 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; }catch(CException &e){ @@ -105,6 +111,21 @@ std::vector<bool> IrFootSensorDriver::get_all_sensor_status(void) 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) { if(this->device!=NULL) diff --git a/ir_foot_sensor/src/ir_foot_sensor_driver_node.cpp b/ir_foot_sensor/src/ir_foot_sensor_driver_node.cpp index a3773e6b8dfeb53db1de6a05f76e93cce81c3f02..1dcea828e30b45a1e252714679ff696e3fe10e0a 100644 --- a/ir_foot_sensor/src/ir_foot_sensor_driver_node.cpp +++ b/ir_foot_sensor/src/ir_foot_sensor_driver_node.cpp @@ -3,11 +3,13 @@ IrFootSensorDriverNode::IrFootSensorDriverNode(ros::NodeHandle &nh) : iri_base_driver::IriBaseNodeDriver<IrFootSensorDriver>(nh) { + std::string dyn_serial=""; + int dyn_baudrate=-1,dev_id=-1; //init class attributes if necessary this->loop_rate_ = 10;//in [Hz] // [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] @@ -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[8]="front_right"; 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) @@ -111,7 +120,7 @@ int main(int argc,char *argv[]) #include <pluginlib/class_list_macros.h> -IrFootSensorDriverNodelet::IrFootSensorDriverNodelet() +IrFootSensorDriverNodelet::IrFootSensorDriverNodelet() { this->node=NULL; } @@ -131,7 +140,8 @@ IrFootSensorDriverNodelet::~IrFootSensorDriverNodelet(void) void IrFootSensorDriverNodelet::onInit() { // 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 this->thread_server=CThreadServer::instance(); this->spin_thread_id=getName() + "_firewire_nodelet_spin";