Package Summary

This package implements driver for ATI force torque sensors up to firmware 3.x. Char and Net CAN devices are supported through cob_generic_can package. The code if based on cob_forcetorque package.

Package Summary

This package implements driver for ATI force torque sensors up to firmware 3.x. Char and Net CAN devices are supported through cob_generic_can package. The code if based on cob_forcetorque package.

The ati_force_torque package provides a ROS interface for an ATI force/torque sensor that is connected over CAN-bus. Most important features of this package are:

  1. 2 ROS Nodes one for configuration and one for reading of sensor.
  2. Implemenation of hardware_interface::ForceTorqueSensorHandle for using sensor in ros_control.

  3. Sampling the sensor on ca. 800 Hz and downsample to desied freqency
  4. Automatic calibration of sensor upon start.
  5. Definition of static calibration offsets.
  6. Integration of filters: ThresholdFilter, LowPassFilter, MovingMeanFilter and GravityCompensation.

This package is builds upon the original cob_forcetorque written in 2011 and not updated since than.For can interfacing the CAN devices cob_generic_can pakcage is used.

Installing the package

To use this package you should have ROS up and running. To install the package clone the git repository into src folder of your workspace.

Note: Current version of the package depends on iirob_filters package for filtering capabilities. To install this package clone the git repository into src folder of your workspace

Starting the nodes

There are few launch files provided to start the sensor, configure it of get data from it.

config.launch - starts configuration node for sensor and uses configuration from can_ati_config.yaml.

driver.launch - start sensor node on socket or chardev interface loading the sensor description and starting the state publisher.

driver_socket.launch and driver_chardev.launch - start the node loading the corresponding configuration.

Nodes

ati_force_torque_config

Changes configuration data of the sensor like baudrate and base-id.

Services

SetBaudRate (std_srvs/Trigger)
  • Sets baudrate to the sensor from 'future_baudrate' parameter.
SetBaseIdentifier (std_srvs/Trigger)
  • Sets base identifier of the sensor from 'future_base_id' parameter.
Reset (std_srvs/Trigger)
  • Resets the sensor calling the reset function of sensors electronics.

Parameters

~CAN/type (UInt, default: -1)
  • Type of used CAN Interface. Possible values are 1-5 for further details check cob_generic_can package.
~CAN/path (String, default: "")
  • Path to the CAN device. If you are using char device value is e.g. '/dev/canXX' or if you are using socket device value is e.g. 'can0'.
~CAN/baudrate (HEX-Number, default: -1)
  • Baudrate of used CAN Interface. Possible values are 0x0-0xD. For further details check cob_generic_can package.
~FTS/base_identifier (HEX-Number, default: -1)
  • Base identifier of sensor. For more details see sensor manual.
~FTS/future_baudrate (UInt, default: 7)
  • Baudrate value on which you want to set up the sensor. For meaning of this value see sensor manual.
~FTS/future_base_id (HEX-Number, default: 7)
  • Base identifier on which you want to set up the sensor. For meaning of this value see sensor manual.

ati_force_torque_node

ROS-Node for reading sensor data. Data can be filtered and transformed automatically. The same description is valid for sensor handle used in ros_control.

Subscribed Topics

~gravity_compensated (geometry_msgs/WrenchStamped) ~low_pass (geometry_msgs/WrenchStamped)
  • Publish output of LowPass filter (if enabled with parameter)
~sensor_data (geometry_msgs/WrenchStamped)
  • Publish output of the sensor (if enabled with parameter)
~threshold_filtered (geometry_msgs/WrenchStamped)
  • Publish output of the Threshold filter (if enabled with parameter)
~transformed_data (geometry_msgs/WrenchStamped)
  • Publish output of the transformed and filtered sensor data (if enabled with parameter)

Services

Init (std_srvs/Trigger)
  • Initalised communication with the sensor and after that data are constantly published.
Calibrate (std_srvs/Trigger)
  • Start automatic calibration procedure.
DetermineCoordinateSystem (std_srvs/Trigger)
  • Start procedure for calculating current directio of the force. This is usefull to empirically determine transformation of the sensor in respect to sensor reference frame.
GetTemperature (ati_force_torque/DiagnosticVoltages)
  • Return diagnostic voltages from the sensor electronics. For further detail see sensor manual.
Recalibrate (std_srvs/Trigger)
  • Recalibrates the sensor in respect to the tool mounted on the sensor tool link.

Parameters

~CAN/type (UInt, default: -1)
  • Type of used CAN Interface. Possible values are 1-5 for further details check cob_generic_can package.
~CAN/path (String, default: "")
  • Path to the CAN device. If you are using char device value is e.g. '/dev/canXX' or if you are using socket device value is e.g. 'can0'.
~CAN/baudrate (HEX-Number, default: -1)
  • Baudrate of used CAN Interface. Possible values are 0x0-0xD. For further details check cob_generic_can package.
~FTS/base_identifier (HEX-Number, default: -1)
  • Base identifier of sensor. For more details see sensor manual.
~FTS/auto_init (Bool, default: False)
  • Auto-initialisation of the sensor.
~Node/ft_pub_freq (Double, default: 100)
  • Publishing frequency of sensor data
~Node/ft_pull_freq (Double, default: 100)
  • Frequency of pulling sensor data (currently maximal achieved value is ca. 800 Hz)
~Node/sensor_frame (String, default: "fts_reference_link")
  • Sensor measurement frame (usually: "fts_reference_link")
~Node/transform_frame (String, default: 20)
  • Frame in which output data should be transoformed.
~Calibration/n_measurements (Int)
  • Number of measurements for automatic calibration.
~Calibration/T_between_meas (Int, default: 10000)
  • Number of micro-second to sleep between mesaurements during automatic calibration.
~Calibration/static (Bool, default: False)
  • If true static calibration is used.
~Calibration/offset_fx (Double, default: 0)
  • Force offset in X-axis (static calibration).
~Calibration/offset_fy (Double, default: 0)
  • Force offset in Y-axis (static calibration).
~Calibration/offset_fz (Double, default: 0)
  • Force offset in Z-axis (static calibration).
~Calibration/offset_mx (Double, default: 0)
  • Torque offset in X-axis (static calibration).
~Calibration/offset_my (Double, default: 0)
  • Torque offset in Y-axis (static calibration).
~Calibration/offset_mz (Double, default: 0)
  • Torque offset in Z-axis (static calibration).
~CoordinateSystemCal/n_measurements (Int, default: 20)
  • Number of measurements for automatic calculation of coordinate system transformation.
~CoordinateSystemCal/T_between_meas (Int, default: 10000)
  • Number of micro-second to sleep between mesaurements during automatic calculation of coordinate system transformation.
~CoordinateSystemCal/push_direction (Int, default: 0)
  • Positive or negative force direction for automatic calculation of coordinate systems.
~Publish/gravity_compensated (Bool, default: False) ~Publish/low_pass (Bool, default: False)
  • Publish output data from LowPass filter.
~Publish/sensor_data (Bool, default: False)
  • Publish output of the sensor.
~Publish/threshold_filtered (Bool, default: False)
  • Publish output data from Threshold filter.
~Publish/transformed_data (Bool, default: False)
  • Publish transformed data.

There are few other paramters used for parametrisation of filters. Please check sensor_configuration.yaml to see them.

Issues

Use GitHub to report bugs or submit feature requests. [View active issues]

Wiki: ati_force_torque (last edited 2016-12-09 09:33:29 by DenisStogl)