ati_force_sensor_driver.cpp
Go to the documentation of this file.
00001 #include "ati_force_sensor_driver.h"
00002 #include "ati_force_sensor_exceptions.h"
00003 
00004 AtiForceSensorDriver::AtiForceSensorDriver(void) :
00005   filter_cutt_off_freq_(73)
00006 {
00007   //setDriverId(driver string id);
00008   sensor_ = boost::shared_ptr<CAti_Force_Sensor>(new CAti_Force_Sensor("ati_sensor","192.168.101.23"));
00009 //  sensor_ = new CAti_Force_Sensor("ati_sensor","192.168.101.23");
00010 }
00011 
00012 bool AtiForceSensorDriver::openDriver(void)
00013 {
00014   //setDriverId(driver string id);
00015     sensor_->cancel_offsets();
00016     sensor_->get_system_info(&sys_info_);
00017     sensor_->get_calibration_info(&cal_info_);
00018     sensor_->set_filter_cutt_off_freq(filter_cutt_off_freq_);
00019   return true;
00020 }
00021 
00022 bool AtiForceSensorDriver::closeDriver(void)
00023 {
00024   return true;
00025 }
00026 
00027 bool AtiForceSensorDriver::startDriver(void)
00028 {
00029 
00030   sensor_->start();
00031   return true;
00032 }
00033 
00034 bool AtiForceSensorDriver::stopDriver(void)
00035 {
00036   if (this->getState() != AtiForceSensorDriver::CLOSED)  
00037     sensor_->stop();
00038   return true;
00039 }
00040 
00041 void AtiForceSensorDriver::config_update(Config& new_cfg, uint32_t level)
00042 {
00043   this->lock();
00044   
00045   // depending on current state
00046   // update driver with new_cfg data
00047   switch(this->getState())
00048   {
00049     case AtiForceSensorDriver::CLOSED:
00050       break;
00051 
00052     case AtiForceSensorDriver::OPENED:
00053       break;
00054 
00055     case AtiForceSensorDriver::RUNNING:
00056       try
00057       {
00058         sensor_->stop();
00059         sensor_->set_filter_cutt_off_freq(new_cfg.filter_cutt_off_freq);
00060         sensor_->start();
00061         filter_cutt_off_freq_ = new_cfg.filter_cutt_off_freq;
00062       }
00063       catch (CException &e)
00064       {
00065         ROS_ERROR("ERROR: %s",e.what().c_str());
00066         new_cfg.filter_cutt_off_freq = filter_cutt_off_freq_;
00067 
00068       }
00069       break;
00070   }
00071 
00072   // save the current configuration
00073   this->config_=new_cfg;
00074 
00075   this->unlock();
00076 }
00077 
00078 std::string AtiForceSensorDriver::getNewSampleEventId(void) const
00079 {
00080   return sensor_->get_new_sample_event_id();
00081 }
00082 
00083 geometry_msgs::WrenchStamped AtiForceSensorDriver::getData(void)
00084 {
00085 //  if (this->getState() != AtiForceSensorDriver::CLOSED) 
00086 //    return;
00087 
00088   std::vector<double> force,torque;
00089   geometry_msgs::WrenchStamped dataMsg;
00090 
00091   sensor_->get_sample(force,torque);
00092     
00093   //dataMsg.header.seq=seq_counter++;
00094   dataMsg.header.stamp    = ros::Time::now();
00095   dataMsg.header.frame_id = config_.frame_id;
00096   dataMsg.wrench.force.x = force[0];
00097   dataMsg.wrench.force.y = force[1];
00098   dataMsg.wrench.force.z = force[2];
00099   dataMsg.wrench.torque.x = torque[0];
00100   dataMsg.wrench.torque.y = torque[1];
00101   dataMsg.wrench.torque.z = torque[2];
00102 
00103   return dataMsg;
00104 }
00105 
00106 AtiForceSensorDriver::~AtiForceSensorDriver(void)
00107 {
00108 }


iri_ati_force_sensor
Author(s): galenya
autogenerated on Fri Dec 6 2013 20:17:30