ROS2 wrapper for the Xense tactile-visual sensor, built on libxensesdk.
Branch: This repository uses
humbleas the default branch (for ROS2 Humble / Ubuntu 22.04). Active development for ROS2 Jazzy / Ubuntu 24.04 lives on thejazzybranch.
| Package | Description |
|---|---|
xense_camera |
Main driver node — streams tactile sensor data as ROS2 topics |
xense_msgs |
Custom message definitions for marker and force data |
- Ubuntu 22.04 with ROS2 Humble installed
- libxensesdk built and installed to
/usr/localcd ~/libxensesdk cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j$(nproc) sudo cmake --install build
- System dependencies:
sudo apt install -y nlohmann-json3-dev
- ROS2 dependencies:
sudo apt install -y \ ros-humble-rclcpp \ ros-humble-sensor-msgs \ ros-humble-geometry-msgs \ ros-humble-cv-bridge \ ros-humble-image-transport \ ros-humble-tf2-ros
cd ~/xense-ros
source /opt/ros/humble/setup.bash
colcon build --symlink-install
source install/setup.bashros2 launch xense_camera xense_launch.pyros2 launch xense_camera xense_launch.py enable_diff:=trueros2 launch xense_camera xense_launch.py enable_diff:=true diff_mode:=continuousros2 launch xense_camera xense_launch.py device_serial:=OG000456ros2 launch xense_camera xense_launch.py \
params_file:=$(ros2 pkg prefix xense_camera)/share/xense_camera/config/xense_params.yamlAll topics are published under the node's namespace (default: /xense_camera).
Publishers use RELIABLE QoS (depth 10) — compatible with rviz2 and all standard ROS2 subscribers out of the box.
| Topic | Type | Encoding | Enabled by |
|---|---|---|---|
~/raw/image_raw |
sensor_msgs/Image |
bgr8 |
enable_raw:=true |
~/rectified/image |
sensor_msgs/Image |
bgr8 |
enable_rectified (default on) |
~/diff/image |
sensor_msgs/Image |
32FC1 or bgr8 |
enable_diff:=true |
~/camera_info |
sensor_msgs/CameraInfo |
— | always |
diff_mode |
SDK mode | Description |
|---|---|---|
single |
SingleInference |
Reference frame is inferred once at startup. |
continuous |
PerFrameInference |
Reference frame is inferred on every frame. |
Enabling diff automatically adds the upstream rectified stream:
enable_raw → Raw
enable_rectified → Rectified
enable_diff → Rectified + Diff
See xense_camera/config/xense_params.yaml for the full list with descriptions.
| Parameter | Type | Default | Description |
|---|---|---|---|
device_serial |
string | "" |
Sensor serial (empty = auto-detect) |
device_index |
int | -1 |
V4L2 index (-1 = auto-detect) |
enable_raw |
bool | false |
Publish raw camera frames |
enable_rectified |
bool | true |
Publish rectified frames |
enable_diff |
bool | false |
Publish difference image on ~/diff/image |
diff_mode |
string | single |
single or continuous |
inference_backend |
string | Auto |
Inference backend (Auto, CPU, ONNX, MIGraphX, …) |
use_gpu |
bool | true |
Use GPU for inference |
camera_frame_id |
string | xense_camera_link |
TF frame ID |
publish_tf |
bool | true |
Publish world→camera static TF |
Stub definitions for future marker and force streaming support:
xense_msgs/ForceVector— 3D force vector with magnitudexense_msgs/ForceArray— Stamped array of force vectors + resultantxense_msgs/MarkerArray2D— Stamped 2D marker grid positionsxense_msgs/MarkerArray3D— Stamped 3D marker grid positions
Apache-2.0