4848using namespace force_torque_sensor ;
4949
5050ForceTorqueSensorHandle::ForceTorqueSensorHandle (ros::NodeHandle& nh, hardware_interface::ForceTorqueSensorHW *sensor, std::string sensor_name, std::string output_frame) :
51- hardware_interface::ForceTorqueSensorHandle(sensor_name, output_frame, interface_force_, interface_torque_), nh_(nh), calibration_params_{nh.getNamespace ()+" /Calibration/Offset" }, CS_params_{nh.getNamespace ()}, can_params_ {nh.getNamespace ()+" /CAN " }, FTS_params_{nh.getNamespace ()+" /FTS" }, pub_params_{nh.getNamespace ()+" /Publish" }, node_params_{nh.getNamespace ()+" /Node" }, gravity_params_{nh.getNamespace ()+" /GravityCompensation/params" }
51+ hardware_interface::ForceTorqueSensorHandle(sensor_name, output_frame, interface_force_, interface_torque_), nh_(nh), calibration_params_{nh.getNamespace ()+" /Calibration/Offset" }, CS_params_{nh.getNamespace ()}, HWComm_params_ {nh.getNamespace ()+" /HWComm " }, FTS_params_{nh.getNamespace ()+" /FTS" }, pub_params_{nh.getNamespace ()+" /Publish" }, node_params_{nh.getNamespace ()+" /Node" }, gravity_params_{nh.getNamespace ()+" /GravityCompensation/params" }
5252{
5353 p_Ftc = sensor;
5454 prepareNode (output_frame);
5555}
5656
5757ForceTorqueSensorHandle::ForceTorqueSensorHandle (ros::NodeHandle& nh, std::string sensor_name, std::string output_frame) :
58- hardware_interface::ForceTorqueSensorHandle(sensor_name, output_frame, interface_force_, interface_torque_), nh_(nh), calibration_params_{nh.getNamespace ()+" /Calibration/Offset" }, CS_params_{nh.getNamespace ()}, can_params_ {nh.getNamespace ()+" /CAN " }, FTS_params_{nh.getNamespace ()+" /FTS" }, pub_params_{nh.getNamespace ()+" /Publish" }, node_params_{nh.getNamespace ()+" /Node" }, gravity_params_{nh.getNamespace ()+" /GravityCompensation/params" }
58+ hardware_interface::ForceTorqueSensorHandle(sensor_name, output_frame, interface_force_, interface_torque_), nh_(nh), calibration_params_{nh.getNamespace ()+" /Calibration/Offset" }, CS_params_{nh.getNamespace ()}, HWComm_params_ {nh.getNamespace ()+" /HWComm " }, FTS_params_{nh.getNamespace ()+" /FTS" }, pub_params_{nh.getNamespace ()+" /Publish" }, node_params_{nh.getNamespace ()+" /Node" }, gravity_params_{nh.getNamespace ()+" /GravityCompensation/params" }
5959{
6060 node_params_.fromParamServer ();
6161
@@ -94,7 +94,7 @@ void ForceTorqueSensorHandle::prepareNode(std::string output_frame)
9494
9595 calibration_params_.fromParamServer ();
9696 CS_params_.fromParamServer ();
97- can_params_ .fromParamServer ();
97+ HWComm_params_ .fromParamServer ();
9898 FTS_params_.fromParamServer ();
9999 pub_params_.fromParamServer ();
100100 node_params_.fromParamServer ();
@@ -137,9 +137,9 @@ void ForceTorqueSensorHandle::prepareNode(std::string output_frame)
137137 srvServer_SetSensorOffset = nh_.advertiseService (" SetSensorOffset" , &ForceTorqueSensorHandle::srvCallback_setSensorOffset, this );
138138
139139 // Read data from parameter server
140- canType = can_params_ .type ;
141- canPath = can_params_ .path ;
142- canBaudrate = can_params_ .baudrate ;
140+ HWCommType = HWComm_params_ .type ;
141+ HWCommPath = HWComm_params_ .path ;
142+ HWCommBaudrate = HWComm_params_ .baudrate ;
143143 ftsBaseID = FTS_params_.base_identifier ;
144144 isAutoInit = FTS_params_.auto_init ;
145145 nodePubFreq = node_params_.ft_pub_freq ;
@@ -205,8 +205,8 @@ void ForceTorqueSensorHandle::prepareNode(std::string output_frame)
205205 useThresholdFilter = true ;
206206 threshold_filter_->configure (nh_.getNamespace ()+" /ThresholdFilter" );
207207 }
208-
209- p_Ftc->initCommunication (canType, canPath, canBaudrate , ftsBaseID);
208+
209+ p_Ftc->initCommunication (HWCommType, HWCommPath, HWCommBaudrate , ftsBaseID);
210210
211211 if (isAutoInit)
212212 {
@@ -493,11 +493,11 @@ bool ForceTorqueSensorHandle::srvReadDiagnosticVoltages(force_torque_sensor::Dia
493493
494494void ForceTorqueSensorHandle::pullFTData (const ros::TimerEvent &event)
495495{
496- int status = 0 ;
497-
498- bool bRet = p_Ftc->readFTData (status , sensor_data.wrench .force .x , sensor_data.wrench .force .y , sensor_data.wrench .force .z ,
499- sensor_data.wrench .torque .x , sensor_data.wrench .torque .y , sensor_data.wrench .torque .z );
500- if (bRet != false )
496+ ros::Time timestamp = ros::Time::now () ;
497+
498+ if ( p_Ftc->readFTData (0 , sensor_data.wrench .force .x , sensor_data.wrench .force .y , sensor_data.wrench .force .z ,
499+ sensor_data.wrench .torque .x , sensor_data.wrench .torque .y , sensor_data.wrench .torque .z )
500+ != false )
501501 {
502502 sensor_data.header .stamp = ros::Time::now ();
503503 sensor_data.header .frame_id = sensor_frame_;
@@ -513,19 +513,13 @@ void ForceTorqueSensorHandle::pullFTData(const ros::TimerEvent &event)
513513 // lowpass
514514 low_pass_filtered_data.header = sensor_data.header ;
515515 if (useLowPassFilter){
516- std::vector<double > in_data= {(double )sensor_data.wrench .force .x , double (sensor_data.wrench .force .y ), (double )sensor_data.wrench .force .z ,(double )sensor_data.wrench .torque .x ,(double )sensor_data.wrench .torque .y ,(double )sensor_data.wrench .torque .z };
517- std::vector<double > out_data= {(double )low_pass_filtered_data.wrench .force .x , double (low_pass_filtered_data.wrench .force .y ), (double )low_pass_filtered_data.wrench .force .z ,(double )low_pass_filtered_data.wrench .torque .x ,(double )low_pass_filtered_data.wrench .torque .y ,(double )low_pass_filtered_data.wrench .torque .z };
518-
519516 low_pass_filter_->update (sensor_data,low_pass_filtered_data);
520517 }
521518 else low_pass_filtered_data = sensor_data;
522519
523520 // moving_mean
524521 moving_mean_filtered_wrench.header = low_pass_filtered_data.header ;
525522 if (useMovingMean){
526- std::vector<double > in_data= {(double )low_pass_filtered_data.wrench .force .x , double (low_pass_filtered_data.wrench .force .y ), (double )low_pass_filtered_data.wrench .force .z ,(double )low_pass_filtered_data.wrench .torque .x ,(double )low_pass_filtered_data.wrench .torque .y ,(double )low_pass_filtered_data.wrench .torque .z };
527- std::vector<double > out_data = {(double )moving_mean_filtered_wrench.wrench .force .x , double (moving_mean_filtered_wrench.wrench .force .y ), (double )moving_mean_filtered_wrench.wrench .force .z ,(double )moving_mean_filtered_wrench.wrench .torque .x ,(double )moving_mean_filtered_wrench.wrench .torque .y ,(double )moving_mean_filtered_wrench.wrench .torque .z };
528-
529523 moving_mean_filter_->update (low_pass_filtered_data, moving_mean_filtered_wrench);
530524 }
531525 else moving_mean_filtered_wrench = low_pass_filtered_data;
@@ -548,6 +542,8 @@ void ForceTorqueSensorHandle::pullFTData(const ros::TimerEvent &event)
548542 moving_mean_pub_->unlockAndPublish ();
549543 }
550544 }
545+
546+ // std::cout << (ros::Time::now() - timestamp).toNSec()/1000.0 << " ms" << std::endl;
551547}
552548
553549void ForceTorqueSensorHandle::filterFTData (){
0 commit comments