Task #232
Updated by Sanghoon Lee 19 days ago
This package targets a combined arm+hand production layout where control, behavior extension, and tactile observability must coexist without hidden launch coupling. Primary design goals: * maintain deterministic MoveIt Pro startup contract for UR5e + Allegro hand * keep behavior plugin extension isolated in behaviors/ while preserving package portability * integrate AH tactile visualization/sidecar path as optional operator tooling The package therefore keeps driver bringup, planning/control config, and tactile observability connected by explicit launch interfaces instead of implicit node assumptions. -------------------- !{width:600px}clipboard-202603152214-a0zyj.png! -------------------- h1. ur5e_xahr2c_config3 h2. 1. Overview and design objective This design targets a combined arm+hand production layout where control, behavior extension, and tactile observability must coexist without hidden launch coupling. Primary design goals: * maintain deterministic MoveIt Pro startup contract for UR5e + Allegro hand * keep behavior plugin extension isolated in @behaviors/@ while preserving package portability * integrate AH tactile visualization/sidecar path as optional operator tooling The package therefore keeps driver bringup, planning/control config, and tactile observability connected by explicit launch interfaces instead of implicit node assumptions. h2. 2. Architecture h3. 2.1 MoveIt Pro core * @config/config.yaml@ is the main contract. * package extends @picknik_ur_site_config@. * default planning group: @manipulator@. h3. 2.2 Driver layer * real: @launch/robot_drivers_to_persist.launch.py@ * sim: @launch/robot_drivers_to_persist_sim.launch.py@ * both include @allegro_description_bringup.launch.py@ h3. 2.3 Tactile visualization layer @launch/xela_driver.launch.py@ composes: # AH std-viz all-in-one simulation launch # AH sidecar launch (optional) h2. 3. Behavior plugin design * behavior library in @behaviors/@ * plugin XML exported with @pluginlib_export_plugin_description_file@ * ROS @std_srvs/Trigger@ client with explicit timeout and error propagation h2. 4. ros2_control design * arm + hand controllers coexist in one profile * taxel joint state publisher outputs @/joint_states_full@ * velocity force controller uses @ee_frame: ur_adapter@ h2. 5. Launch design notes * @xela_driver.launch.py@ keeps sidecar args explicit. * sidecar manager service path: @/xela_viz_mode_manager/set_mode@. * only subset of viz args is currently forwarded to std-viz include. h2. 6. Risks * declared args vs forwarded std-viz args mismatch * sim defaults accidentally used in real environment * sidecar and std-viz mode divergence h2. 7. Validation * behavior plugin registration test * launch smoke tests for sidecar toggle * topic/service probes: @/x_taxel_ah@, @/x_taxel_ah/web_state@, @/xela_viz_mode_manager/set_mode@ --------------- h1. ur5e_xahr2c_config3 MoveIt Pro runtime configuration for *UR5e + Xela Allegro Hand (R2C)*. h2. What this package contains * combined arm+hand robot config (@config/config.yaml@) * ros2_control profile (@config/control/ur5e_xahr2c.ros2_control.yaml@) * URDF/SRDF and planning overrides * custom behavior plugin: @TriggerPStopResetService@ * objective library + waypoints * tactile web/viz launcher (@launch/xela_driver.launch.py@) h2. Runtime modes h3. 1) MoveIt Pro app runtime <pre><code> cd ~/my_moveit_pro/01_wk_xela_mpro_dev_ws moveit_pro run -c ur5e_xahr2c_config3 </code></pre> h3. 2) Xela visualization runtime <pre><code> ros2 launch ur5e_xahr2c_config3 xela_driver.launch.py </code></pre> h2. xela_driver.launch.py pipeline * includes @std_xela_taxel_viz_ahv4/launch/sim_all_svc_std_xela_taxel_viz_ahv4.launch.py@ * includes @xela_taxel_sidecar_ah/launch/xela_taxel_sidecar_cpp.launch.py@ (optional) Important: * std-viz include currently forwards only @namespace@, @model_name@, @viz_mode@. * other declared args are currently for sidecar/compatibility, not passed through to std-viz in this file. h2. Default launch arguments * @namespace@: @xvizah@ * @model_name@: @XR23AHLCPP@ * @viz_mode@: @urdf@ * @style_preset@: @cool_steel@ * @joint_states_mode@: @local@ * @frame_prefix@: empty * @marker_stamp_mode@: @now@ * @marker_time_offset_sec@: @-0.12@ * @enable_taxel_sidecar@: @true@ * @taxel_sidecar_web_port@: @8765@ * @enable_taxel_sidecar_rosbridge@: @true@ * @taxel_sidecar_rosbridge_port@: @9090@ * @enable_viz_mode_manager@: @true@ * @max_publish_rate_hz@: @20.0@ h2. Core config defaults * @hardware.simulated=true@ * driver launch split: ** real: @launch/robot_drivers_to_persist.launch.py@ ** sim: @launch/robot_drivers_to_persist_sim.launch.py@ * @ros2_control_hardware_type=mock_components@ * startup active controllers include @hand_controller@ and @xela_taxel_joint_state_publisher@ * waypoint file: @waypoints/new_waypoints.yaml@ h2. Sidecar operation examples Disable sidecar: <pre><code> ros2 launch ur5e_xahr2c_config3 xela_driver.launch.py enable_taxel_sidecar:=false </code></pre> Right-hand model: <pre><code> ros2 launch ur5e_xahr2c_config3 xela_driver.launch.py model_name:=XR23AHRCPP </code></pre> h2. Custom behavior @TriggerPStopResetService@: * plugin id: @trigger_pstop_reset_service::TriggerPStopResetServiceBehaviorsLoader@ * default service: @/recover_from_protective_stop@ * timeout: @2.0 sec@ h2. Documentation * Functional spec: @ur5e_xahr2c_config3.md@ * Design: @DESIGN.md@ * Redmine: @README.textile@, @ur5e_xahr2c_config3.textile@, @DESIGN.textile@