Standard Node

The bota_payload_utils package implements two standard ROS2 nodes:

These nodes follow the Bota Control Toolkit architecture, allowing them to be easily integrated into processing chains with other ROS2 Bota Control Nodes, such as the Bota Driver Node.


Bota Payload Compensator Node

Configuration Parameters

The node requires the following parameters:

Parameter

Description

node_name

Name assigned to the node, as well as the prefix for topics and services.

config_file

Path to the JSON configuration file

input_node_name

Name of the node that provides input data to this node in the processing chain.

imu_offset

Offset between the Wrench frame and the IMU frame.

Note

The input_node_name parameter should match the node_name of the previous node in the processing chain.

Warning

The imu_offset parameter will be deprecated in future releases as the IMU data will be published by the driver in the same frame as the wrench.

Published Topics

Once running, the node publishes the following topics:

Topic

Message Type

Description

<NODE_NAME>/bota_frame

BotaFrame (see below)

Complete sensor data including status, wrench, IMU, temperature and timestamp

<NODE_NAME>/bota_wrench

WrenchStamped

Force and torque measurements from the sensor

<NODE_NAME>/bota_imu

Imu

Imu measurements from the sensor

The published topics follow the same structure as the ones described in the Bota Driver Node documentation. For this reason, the same usage recommendations apply here as well.

Since this node is not a starting block in the processing chain (it only processes a signal), the published topics are defined in the same frame as the one of source node.

Services

The node exposes the following service:

Service

Service Type

Description

/<NODE_NAME>/tare_compensated_wrench

std_srvs/srv/Trigger

Zeros out the wrench output of this block, setting current state as new reference

Important

Calling the tare service from the driver node will only zero out the input raw signal, which is not desired behavior when using the compensator node in a processing chain. For this reason, the tare service provided by the compensator node should be used instead.

Getting Started

Launch the node from the console:

ros2 run bota_payload_utils bota_payload_compensator_node \
  --ros-args \
  -p node_name:=<NODE_NAME>
  -p config_file:=<PATH_TO_JSON> \
  -p input_node_name:=<INPUT_NODE_NAME> \
  -p imu_offset:=<IMU_OFFSET> \

Call the tare service from console:

ros2 service call /<NODE_NAME>/tare_compensated_wrench std_srvs/srv/Trigger {}

Bota Payload Estimator Node

Configuration Parameters

The node requires the following parameters:

Parameter

Description

node_name

Name assigned to the node, as well as the prefix for topics and services.

config_file

Path to the JSON configuration file

input_node_name

Name of the node that provides input data to this node in the processing chain.

imu_offset

Offset between the Wrench frame and the IMU frame.

Note

The input_node_name parameter should match the node_name of the previous node in the processing chain.

Warning

The imu_offset parameter will be deprecated in future releases as the IMU data will be published in the same frame as the wrench by the driver.

Published Topics

Once running, the node publishes the following topics:

Topic

Message Type

Description

<NODE_NAME>/is_estimator_running

Bool

Indicates whether the payload estimator is currently running.

<NODE_NAME>/is_estimation_successful

Bool

Indicates whether the payload estimation algorithm has successfully converged to a solution.

These topics should be monitoried after starting the estimation routine (see below) to check its status and decide on further actions.

Services

The node exposes the following service:

Service

Service Type

Description

/<NODE_NAME>/start_payload_estimation

std_srvs/srv/Trigger

Start the payload estimation routine

Getting Started

Launch the node from the console:

ros2 run bota_payload_utils bota_payload_estimator_node \
  --ros-args \
  -p node_name:=<NODE_NAME>
  -p config_file:=<PATH_TO_JSON> \
  -p input_node_name:=<INPUT_NODE_NAME> \
  -p imu_offset:=<IMU_OFFSET> \

Call the start estimation service from console:

ros2 service call /<NODE_NAME>/start_payload_estimation std_srvs/srv/Trigger {}

Monitor the estimation status topics:

ros2 topic echo /<NODE_NAME>/is_estimator_running
ros2 topic echo /<NODE_NAME>/is_estimation_successful

Complete Usage Example

Bota Systems provides a ROS2 demo package bota_demo_ros2 to get yourself started with the Bota Payload Utilities for ROS2 nodes.

Found the package implementation in our official GitLab repository.

bota_demo_ros2 on GitLab