ROS 2 bringup and orchestration package for CHARS simulation workflows.
This package coordinates Gazebo worlds, robot spawning, TF setup, bridges, Nav2/MoveIt bringup, task action servers, gripper/object utilities, and the CHARS central allocator.
- Launch orchestration for camera/world simulations and multi-agent bringup.
- Agent-level bringup pipeline for mobile manipulators with staged startup.
- Action server launches for navigation/manipulation task execution.
- Central task allocator node for DAG-driven CHARS dispatch.
- Utility nodes for box detach and object static/dynamic state control.
swarm_bringup/
launch/
bringup_ign.launch.py
bringup_world_v2.launch.py
agent_bringup.launch.py
swarm3_bringup.launch.py
single_arm_moveit.launch.py
chars_central_allocator.launch.py
mobman_task_action_server.launch.py
jackal_nav_action_server.launch.py
ur5_task_action_server.launch.py
object_state_manager.launch.py
simple_gripper.launch.py
detach_all_boxes.launch.py
swarm_bringup/
chars_central_allocator.py
mobman_task_action_server.py
jackal_nav_action_server.py
ur5_task_action_server.py
object_state_manager.py
simple_gripper_service.py
detach_all_boxes.py
trajectory_recorder.py
config/
worlds/
maps/
From your ROS 2 workspace root:
colcon build --packages-select swarm_bringup
source install/setup.bashros2 launch swarm_bringup bringup_world_v2.launch.pyStarts Gazebo, resource path environment variables, camera robot publishers/spawners, ROS-Gazebo bridge, RViz, and object state manager.
ros2 launch swarm_bringup bringup_ign.launch.py world_file:=/absolute/path/to/world.sdfros2 launch swarm_bringup agent_bringup.launch.py \
robot_namespace:=agent1 pose_x:=1.0 pose_y:=-3.0 pose_z:=0.22Staged startup (from launch timing):
- t=0s: robot bringup
- t=40s: Nav2
- t=55s: MoveIt
- t=60s: detach-all-boxes utility
- t=70s: task action server + gripper service
ros2 launch swarm_bringup swarm3_bringup.launch.pyLaunches 3 agents with staggered startup via repeated agent_bringup.launch.py.
ros2 launch swarm_bringup single_arm_moveit.launch.py use_rviz:=trueLaunch central allocator:
ros2 launch swarm_bringup chars_central_allocator.launch.pyImportant allocator interfaces:
- Subscribes task DAG:
/chars/task_dag - Publishes allocator status:
/chars/allocator_status - Publishes DAG status:
/chars/dag_status - Sends per-agent goals to
/<agent_namespace>/task_control
Allocator modes:
agent_type:=mobman(homogeneous mobile manipulator fleet)agent_type:=mixed(heterogeneous mode)
Installed entry points include:
chars_central_allocatormobman_task_action_serverjackal_nav_action_serverur5_task_action_serverobject_state_managersimple_gripper_servicedetach_all_boxestrajectory_recorder
Package-level dependencies (from package.xml) include:
ros_gz_sim,ros_gz_bridge,ros_gz_interfacesrobot_state_publisher,controller_manager,xacromoveit_ros_move_group,moveit_configs_utils,rviz2swarm_description,swarm_interfaces,ur5_moveit_configtf_transformations,tf2_msgs,geometry_msgs
- Some launch files set Gazebo model paths with machine-local absolute paths such as
/home/viswa/Desktop/Gazebo_models. Convert these to portable path handling or setup instructions. package.xmlandsetup.pystill contain placeholder metadata (TODOdescription/license). Update before release.bringup_ign.launch.pydefaults toworlds/test_world_v4.sdf, but this file is not present inworlds/. Setworld_fileexplicitly or update the default.
# Inspect active topics
ros2 topic list
# Check allocator status stream
ros2 topic echo /chars/allocator_status
# Check task DAG status stream
ros2 topic echo /chars/dag_statusSet the final license in package.xml and setup.py before publishing.