Project

General

Profile

Actions

Task #219

closed

Task Group #197: [Dev] xela_models ros2 Apps Development

[Dev] Create a standalone marker publisher for visualizing 2F sensor data

Added by Sanghoon Lee about 2 months ago. Updated about 1 month ago.

Status:
Closed
Priority:
Normal
Assignee:
Start date:
02/17/2026
Due date:
% Done:

100%

Estimated time:
Product Code:
uAi SW:
Issue closed :
02/27/2026

Description

This package is std_xela_taxel_viz_2f, a marker publisher for 2F sensor data visualization in an isolated environment.
I plan to develop a visualization app that subscribes to sensor data topics provided by xela_server2_2f and publishes markers in an isolated environment for visualization.
Therefore, I plan to develop a standalone Taxel visualization app that operates identically to xela_taxel_viz_2f but publishes separate /robot_description and /joint_states without affecting the robot control environment.

This app publishes data to the Marker topic, allowing RViz and other ROS apps to easily subscribe to this marker topic for visualization.

This std_xela_taxel_viz_2f supports three target models:
- uSPr2F,
- uSPrDS,
- uSPrHE35

These supported models can be selected as parameters during runtime, using pre-prepared profiles for each model.



std_xela_taxel_viz_2f

1. Goal

Provide a standalone 2F tactile visualization path that does not interfere with robot-control stack topics.

2. System Context

  • Input:
    • /x_taxel_2f
    • joint states from /joint_states (global) or /<ns>/joint_states (local)
  • Output:
    • /<ns>/markers
    • local TF streams /<ns>/tf, /<ns>/tf_static

3. Runtime Components

3.1 std_xela_taxel_viz_2f_node

  • Computes baseline/deadband.
  • Supports grid and urdf placement logic.
  • Publishes marker arrays.

3.2 robot_state_publisher (URDF mode only)

  • Uses local xacro: description/xela_<model>_2_modules.xacro.
  • Subscribes to selected joint_states topic.
  • Publishes TF under namespace-local remap.

3.3 std_xela_joint_state_publisher_node (URDF + local mode)

  • Emits static/default joint list from config profile.
  • Removes dependency on external controller stack for URDF visualization.

3.4 All-in-one wrappers

  • Sim all-in-one includes sim_xela_server and xela_server2_2f.
  • Real all-in-one includes xela_server2_2f real server launch.
  • Both start RViz with local TF remapping.

4. Configuration Strategy

  • Base defaults: config/base/std_xela_taxel_viz_2f.yaml
  • Model/mode overrides: config/models/<model>/<mode>.yaml
  • Joint profiles: config/joints/joint_state_profiles.yaml
Resolution order:
  1. Base config
  2. Model/mode config
  3. Launch overrides

5. TF Isolation Strategy

  • Default namespace: xviz2f.
  • /tf and /tf_static are remapped to local topics (tf, tf_static) inside namespace.
  • RViz all-in-one remaps back to /<ns>/tf and /<ns>/tf_static.
  • frame_prefix defaults empty; isolation is achieved by topic namespace.

6. Visualization Modes

6.1 Grid mode

  • Uses configured rows/cols/index map.
  • Generates grid plane + circles + arrows.

6.2 URDF mode

  • Uses taxel link frames from local robot description.
  • Optional grid overlay via overlay_grid_in_urdf.

7. Timing Policy

  • marker_stamp_mode (keep|now|zero)
  • marker_time_offset_sec (negative default) to reduce TF extrapolation warnings.

8. Key Decisions

  • Keep package standalone from control controllers.
  • Provide local joint-state publisher for URDF mode.
  • Reuse shared URDF/mesh assets from xela_models.

9. Acceptance Criteria

  • Works with only /x_taxel_2f plus optional local joint states.
  • Sim and real all-in-one launches bring up full visualization chain.
  • TF and marker streams are isolated to namespace-local topics.
  • uSPr2F, uSPrDS, uSPrHE35 configs load correctly per mode.

README

Standalone visualization package for Xela 2F taxel sensors.
It runs independently from robot control stack and uses namespace-local TF topics.

Purpose

  • Input only tactile stream (/x_taxel_2f) plus joint states.
  • Output markers on /<namespace>/markers.
  • Support grid and urdf visualization.
  • Keep TF traffic local by remapping /tf and /tf_static to /<namespace>/tf and /<namespace>/tf_static.

Requirements

  • ROS 2 Humble
  • xela_taxel_msgs
  • xela_models
  • xela_server2_2f (all-in-one launch)
  • sim_xela_server (sim all-in-one launch)

Install Dependencies (rosdep)


WS=~/xela_robotics/02_dev_ws
sudo sh -c "echo 'yaml file://${WS}/src/xela_apps/rosdep/xela_taxel_viz_deps.yaml' > /etc/ros/rosdep/sources.list.d/98-xela-taxel-viz.list" 
rosdep update
rosdep install --from-paths ${WS}/src/xela_apps/std_xela_taxel_viz_2f -r -y --ignore-src

Build


cd ~/xela_robotics/02_dev_ws
colcon build --packages-select std_xela_taxel_viz_2f
source install/setup.bash

Quick Start

Basic launch (default: grid mode):


ros2 launch std_xela_taxel_viz_2f std_xela_taxel_viz_2f.launch.py

URDF mode with local joint states:


ros2 launch std_xela_taxel_viz_2f std_xela_taxel_viz_2f.launch.py   viz_mode:=urdf joint_states_mode:=local

URDF mode with external /joint_states:


ros2 launch std_xela_taxel_viz_2f std_xela_taxel_viz_2f.launch.py   viz_mode:=urdf joint_states_mode:=global

All-in-One Launch

Sim all-in-one (sim_xela_server + xela_server2_2f + std_xela_taxel_viz_2f + rviz2):


ros2 launch std_xela_taxel_viz_2f sim_all_svc_std_xela_taxel_viz_2f.launch.py

Sim all-in-one with model and mode options:


ros2 launch std_xela_taxel_viz_2f sim_all_svc_std_xela_taxel_viz_2f.launch.py   viz_model_name:=uSPrDS   server_model_name:=uSPrDS   viz_mode:=urdf   joint_states_mode:=local

Real all-in-one (xela_server2_2f + std_xela_taxel_viz_2f + rviz2):


ros2 launch std_xela_taxel_viz_2f real_all_svc_std_xela_taxel_viz_2f.launch.py

Default Launch Arguments

std_xela_taxel_viz_2f.launch.py

  • namespace: xviz2f
  • viz_mode: grid
  • model_name: uSPr2F
  • model_params_file: config/models/<model_name>/<viz_mode>.yaml
  • style_preset: default
  • overlay_grid_in_urdf: false
  • marker_stamp_mode: now
  • marker_time_offset_sec: -0.12
  • frame_id: world
  • frame_prefix: empty (recommended)
  • joint_states_mode: local
  • joint_states_config_yaml: config/joints/joint_state_profiles.yaml
  • joint_states_device_profile: <model_name>

sim_all_svc_std_xela_taxel_viz_2f.launch.py

  • namespace: xviz2f
  • viz_model_name: uSPr2F
  • server_model_name: <viz_model_name>
  • viz_mode: grid
  • joint_states_mode: local
  • frame_prefix: empty
  • marker_stamp_mode: now
  • marker_time_offset_sec: -0.12
  • preset: normal
  • publish_period_ms: 200
  • sine_freq_hz: 0.05
  • integer_z_range: 10085.0
  • calib_z_range: 14.0
  • z_bias_power: 1.0

real_all_svc_std_xela_taxel_viz_2f.launch.py

  • namespace: xviz2f
  • viz_model_name: uSPr2F
  • viz_mode: urdf
  • joint_states_mode: local
  • can_port: can0
  • ws_host: localhost
  • ws_port: 5000

TF and Joint States Isolation

  • robot_state_publisher remaps:
    • /tf -> tf
    • /tf_static -> tf_static
  • RViz in all-in-one launch is remapped to /<ns>/tf and /<ns>/tf_static.
  • Local mode uses std_xela_joint_state_publisher_node to publish /<ns>/joint_states.
  • Keep frame_prefix empty unless explicit prefixed frame names are required.

Config Layout

  • Base: config/base/std_xela_taxel_viz_2f.yaml
  • Model overrides:
    • config/models/uSPr2F/grid.yaml, urdf.yaml
    • config/models/uSPrDS/grid.yaml, urdf.yaml
    • config/models/uSPrHE35/grid.yaml, urdf.yaml
  • Joint profiles: config/joints/joint_state_profiles.yaml
  • RViz: config/rviz/

Troubleshooting

  • Missing xacro in install space:
    
    colcon build --packages-select std_xela_taxel_viz_2f --symlink-install
    source install/setup.bash
    
  • URDF model collapsed in RViz:
    • Keep frame_prefix empty, or
    • Set RViz RobotModel TF Prefix and Fixed Frame to matching prefixed names.
  • TF extrapolation warnings:
    • Use marker_stamp_mode:=now and negative marker_time_offset_sec.

Related Redmine Docs

  • design_std_xela_taxel_viz_2f.textile
  • fsd_std_xela_taxel_viz_2f.textile


Files


Related issues 1 (0 open1 closed)

Copied from Task #211: [Dev] Create a Marker publisher for 2F sensor data visualizationClosedSanghoon Lee02/03/2026

Actions
Actions

Also available in: Atom PDF