Task #223
Updated by Sanghoon Lee about 1 month ago
This package is the runtime configuration layer for a UR5e + Robotiq 2F-140 cell in MoveIt Pro, with Xela 2F tactile visualization integrated as an optional operator path.
Operationally it binds three concerns in one package boundary:
- MoveIt Pro robot/application configuration (`config/config.yaml`, URDF/SRDF, ros2_control profile)
- gripper operation objectives for Robotiq action interface
- tactile visualization orchestration (`xela_server2_2f` + `std_xela_taxel_viz_2f` + optional web sidecar)
--------------------
!{width:800px}clipboard-202602281622-nn4ly.png!
h1. ur5e_x2f_140_config3
h2. 1. Overview and design objective
The design separates mission-critical robot runtime from operator-facing tactile visualization while keeping a single launch entrypoint for deployment.
Key intent:
* keep MoveIt Pro config semantics aligned with @ur5e_x2f_140_common@
* avoid coupling motion control logic to web-side visualization concerns
* make tactile visualization chain optional but first-class (@xela_driver.launch.py@)
Architecturally, this package acts as an orchestration shell: core control/planning definitions stay in config assets, and tactile stack composition is handled in launch space with explicit argument pass-through.
h2. 2. Architecture
Generated PNG: @docs/architecture_overview.png@
!{width:1000px}architecture_overview.png!
h3. 2.1 MoveIt Pro runtime layer
* Base package: @ur5e_x2f_140_common@
* Overrides in @config/config.yaml@
* ros2_control profile in @config/control/ur5e_x2f_140.ros2_control.yaml@
* custom objectives layered on top of common objectives
* no package-local waypoint file; waypoint resolution stays with the base package behavior
h3. 2.2 Tactile visualization layer
@launch/xela_driver.launch.py@ composes:
# @xela_server_nosudo.launch.py@ (optional CAN setup, Xela websocket process, websocket wait gate, then @xela_server2_2f@)
# @std_xela_taxel_viz_2f.launch.py@ (@frame_id:=world@, @overlay_grid_in_urdf:=false@)
# @xela_taxel_sidecar_2f/xela_taxel_sidecar_cpp.launch.py@ (optional, namespaced TF integration)
h3. 2.3 Agent bridge wrapper
* @launch/agent_bridge.launch.xml@ includes:
** @moveit_studio_agent/launch/studio_agent_bridge.launch.xml@
** @ur5e_x2f_140_config3/launch/xela_driver.launch.py@
* this keeps tactile visualization additive to the MoveIt Pro runtime path
h2. 3. Parameter flow
* user-facing arguments are defined at @xela_driver.launch.py@
* server/network args go to @xela_server_nosudo.launch.py@
* viz args go to @std_xela_taxel_viz_2f@
* sidecar args go to @xela_taxel_sidecar_2f@
* sidecar integration pins @bridge_tf_topic=/xviz2f/tf@, @bridge_tf_static_topic=/xviz2f/tf_static@, @viz_node_name=/xviz2f/std_xela_taxel_viz_2f@, @freeze_urdf_positions=false@
h2. 4. Controller design
* startup-active controllers favor monitoring + servo/gripper operation.
* trajectory/admittance/velocity-force controllers are loaded but inactive by default.
* tactile joint-state publisher is active at startup.
h2. 5. Operational design choices
* sidecar mode manager is separate from std viz node.
* web/rosbridge ports are explicit launch arguments.
* simulation-first defaults reduce bringup risk in development.
* real-hardware cutover points remain explicit in @config/config.yaml@ and the CAN setup path
h2. 6. Risks
* real/sim parameter mismatch
* CAN setup dependency when @setup_can=true@
* sidecar/viz mode mismatch if service calls fail
h2. 7. Recommended validation
* static: @config/config.yaml@ and ros2_control name consistency
* runtime: launch chain start, topic presence, sidecar mode switch
* wrapper: @agent_bridge.launch.xml@ starts both included launch files without path errors