UniROS ecosystem

Get started

  • Installation
    • Option A — bootstrap script (recommended for a fresh machine)
    • Option B — manual installation
      • 1. ROS Noetic
      • 2. Catkin tools + workspace
      • 3. System dependencies
      • 4. Clone the framework
      • 5. Python dependencies
      • 6. Build the workspace
      • 7. Verify
    • Robot-specific extras
    • Option C — Docker
    • Next step
  • Docker
    • When to use Docker
    • What works today
    • Two image variants
    • Quick start
    • Hardware passthrough
    • Active development
    • Roadmap
    • Troubleshooting
    • See also
  • Quickstart
    • Verify the workspace
    • A complete first script
    • Press Ctrl+C
    • What’s next
  • Ecosystem overview
    • Architecture at a glance
    • Why four packages?
    • Multiprocessing model
    • Lifecycle / cleanup
      • Reliable launch verification (v0.3.1)
      • Forceful worker subprocess reap (v0.3.2)
    • Three supported use cases
    • Framework-agnostic policies
    • Reading further

Environments

  • Environments
    • Robots
    • Tasks
    • Variants — every (robot, task) is registered four ways
    • Common safety machinery
      • RX200 (Trossen ReactorX-200)
        • Tasks
        • Robot-specific facts
        • Sim setup
        • Real setup
      • NED2 (Niryo Ned2)
        • Tasks
        • Robot-specific facts
        • Sim setup
        • Real setup
      • VX300S (Trossen ViperX-300 S)
        • Tasks
        • Robot-specific facts
        • Sim setup
        • Real setup
      • UR5e (Universal Robots UR5e + Robotiq 2F-85)
        • Tasks
        • Robot-specific facts
        • Sim setup
        • Real setup
    • Reference
  • Environment templates
    • The two-layer pattern
    • Template files
      • MultiROS (simulation)
      • RealROS (real hardware)
    • Recommended workflow
    • Common pitfalls
  • Creating a simulation environment
    • 1. Pick a starting point
    • 2. Implement the robot env
    • 3. Implement the task env
    • 4. Register with gymnasium
    • 5. Smoke test
    • Configuration via YAML
    • Common pitfalls
  • MuJoCo backend (experimental)
    • How it maps onto the Gazebo design
    • What differs from Gazebo
    • Trying it
    • Status and limitations
    • Differences from the Gazebo backend
  • Creating a simulation environment (MuJoCo)
    • 1. Pick a starting point
    • 2. Build the MJCF scene
    • 3. Implement the robot env
    • 4. Implement the task env
    • 5. Register with gymnasium
    • 6. Smoke test
    • 7. Stepping regimes
    • Configuration via YAML
    • Common pitfalls
  • Creating a real-hardware environment
    • Differences from sim
    • 1. Pick a starting point
    • 2. Implement the robot env
    • 3. Implement the task env
    • 4. Bring up the robot, then launch the env
    • Sim-to-real transfer
    • Safety checklist

Training

  • Training a model
    • Option 1 — Plain Stable Baselines 3
    • Option 2 — sb3_ros_support
    • Option 3 — Any other gymnasium-compatible framework
    • Configuration via YAML (sb3_ros_support)
    • Logging and checkpoints
      • Weights & Biases (optional)
  • Joint sim + real training
    • The idea in one paragraph
    • Algorithm (TD3 / TD3+HER, from the paper)
    • The wrapper that makes this work
    • Process topology
    • Minimal example — TD3 + sim + real
    • Goal-conditioned (TD3 + HER) variant
    • When to use this vs. sim-only or real-only training
    • Tuning notes from the paper
    • Safety checklist
  • Using trained models
    • Load and predict
    • Validate sim-trained models on real hardware
    • Deterministic vs stochastic prediction
    • Common pitfalls

API reference

  • UniROS API reference
    • Top-level package
      • GymProxy
        • GymProxy.worker()
        • GymProxy.unwrapped
        • GymProxy.make()
        • GymProxy.step()
        • GymProxy.reset()
        • GymProxy.close()
      • uniros_gym
      • make()
    • Gym proxy
      • GymProxy
        • GymProxy.worker()
        • GymProxy.unwrapped
        • GymProxy.make()
        • GymProxy.step()
        • GymProxy.reset()
        • GymProxy.close()
      • GymProxy
        • GymProxy.worker()
        • GymProxy.unwrapped
        • GymProxy.make()
        • GymProxy.step()
        • GymProxy.reset()
        • GymProxy.close()
      • uniros_gym
    • Shared utilities
      • ROS markers
        • RosMarker
        • RosMarkerArray
      • Kinematics
        • Kinematics_pyrobot
        • Kinematics_pykdl
      • ROS controllers
        • load_ros_controller()
        • load_controller_list()
        • list_loaded_controllers()
        • unload_ros_controller()
        • unload_controller_list()
        • switch_controllers()
        • start_controllers()
        • stop_controllers()
        • reset_controllers()
        • spawn_controllers()
        • unspawn_controllers()
  • MultiROS API reference
    • Top-level package
    • Gym proxy (re-export)
    • Gazebo lifecycle
      • launch_gazebo()
      • close_gazebo()
      • reset_gazebo()
      • pause_gazebo()
      • unpause_gazebo()
      • gazebo_step()
      • Gazebo models
        • gazebo_spawn_urdf()
        • spawn_model_in_gazebo()
        • spawn_sdf_model_gazebo()
        • spawn_robot_in_gazebo()
        • gazebo_get_world_properties()
        • gazebo_delete_model()
        • remove_model_gazebo()
        • gazebo_get_model_state()
        • gazebo_set_model_state()
      • Gazebo physics
        • get_gazebo_physics_properties()
        • set_gazebo_physics_properties()
        • get_gazebo_max_update_rate()
        • set_gazebo_max_update_rate()
        • get_gazebo_time_step()
        • set_gazebo_time_step()
        • get_gazebo_gravity()
        • set_gazebo_gravity()
        • get_gazebo_ode_physics()
        • set_gazebo_ode_physics()
    • ROS helpers
      • ROS common
        • register_managed_process()
        • launch_roscore()
        • change_ros_gazebo_master()
        • get_all_the_ros_masters()
        • add_to_rosmaster_list()
        • remove_from_rosmaster_list()
        • kill_all_host_ros_and_gazebo()
        • kill_all_ros_and_gazebo()
        • kill_all_host_roslaunch_processes()
        • kill_all_roslaunch_process()
        • kill_all_ros_nodes()
        • kill_ros_node()
        • ros_kill_master()
        • clean_ros_logs()
        • source_workspace()
        • ros_launch_launcher()
        • construct_roslaunch_command()
        • ros_node_launcher()
        • construct_rosrun_command()
        • check_package_exists()
        • ros_load_yaml()
        • load_urdf()
        • is_roscore_running()
        • change_ros_master()
        • change_ros_master_multi_device()
        • change_gazebo_master()
        • init_robot_state_publisher()
        • remove_all_from_rosmaster_list()
      • ROS controllers (re-export)
      • ROS markers (re-export)
      • ROS kinematics (re-export)
    • MoveIt integration
      • MoveitMultiros
        • MoveitMultiros.arm_execute_pose()
        • MoveitMultiros.arm_execute_joint_trajectory()
        • MoveitMultiros.gripper_execute_joint_command()
        • MoveitMultiros.arm_execute_trajectory()
        • MoveitMultiros.stop_arm()
        • MoveitMultiros.stop_gripper()
        • MoveitMultiros.robot_pose()
        • MoveitMultiros.robot_rpy()
        • MoveitMultiros.gripper_pose()
        • MoveitMultiros.gripper_rpy()
        • MoveitMultiros.joint_angles_arm()
        • MoveitMultiros.joint_angles_gripper()
        • MoveitMultiros.joint_angles()
        • MoveitMultiros.is_goal_reachable()
        • MoveitMultiros.check_goal_reachable_joint_pos()
        • MoveitMultiros.set_trajectory_ee()
        • MoveitMultiros.set_trajectory_joints()
        • MoveitMultiros.set_gripper_joints()
        • MoveitMultiros.get_robot_pose()
        • MoveitMultiros.get_robot_rpy()
        • MoveitMultiros.get_gripper_pose()
        • MoveitMultiros.get_gripper_rpy()
        • MoveitMultiros.get_joint_angles_robot_arm()
        • MoveitMultiros.get_joint_angles_gripper()
        • MoveitMultiros.get_joint_angles()
        • MoveitMultiros.check_goal()
        • MoveitMultiros.check_goal_joint_pos()
        • MoveitMultiros.get_randomJointVals()
        • MoveitMultiros.get_randomPose()
        • MoveitMultiros.set_planning_time()
        • MoveitMultiros.set_goal_position_tolerance()
        • MoveitMultiros.set_goal_orientation_tolerance()
        • MoveitMultiros.set_goal_joint_tolerance()
        • MoveitMultiros.set_max_acceleration_scaling_factor()
        • MoveitMultiros.set_max_velocity_scaling_factor()
        • MoveitMultiros.set_trajectory_cartesian()
    • Base envs
      • GazeboBaseEnv
        • GazeboBaseEnv
      • GazeboGoalEnv
        • GazeboGoalEnv
    • Wrappers
      • NormalizeActionWrapper
        • NormalizeActionWrapper.denormalize_action()
        • NormalizeActionWrapper.reverse_action()
        • NormalizeActionWrapper.step()
      • NormalizeObservationWrapper
        • NormalizeObservationWrapper.observation()
      • TimeLimitWrapper
        • TimeLimitWrapper.step()
        • TimeLimitWrapper.reset()
        • TimeLimitWrapper.spec
      • get_env_params()
  • RealROS API reference
    • Top-level package
    • Gym proxy (re-export)
    • ROS helpers
      • ROS common
        • register_managed_process()
        • launch_roscore()
        • get_all_the_ros_masters()
        • add_to_rosmaster_list()
        • remove_from_rosmaster_list()
        • kill_all_host_ros_processes()
        • kill_all_ros_processes()
        • kill_all_host_roslaunch_processes()
        • kill_all_roslaunch_process()
        • kill_all_ros_nodes()
        • kill_ros_node()
        • ros_kill_master()
        • clean_ros_logs()
        • source_workspace()
        • ros_launch_launcher()
        • construct_roslaunch_command()
        • ros_node_launcher()
        • construct_rosrun_command()
        • check_package_exists()
        • ros_load_yaml()
        • load_urdf()
        • is_roscore_running()
        • change_ros_master()
        • change_ros_master_multi_device()
        • init_robot_state_publisher()
        • remove_all_from_rosmaster_list()
      • ROS controllers (re-export)
      • ROS markers (re-export)
      • ROS kinematics (re-export)
    • MoveIt integration
      • MoveitRealROS
        • MoveitRealROS.arm_execute_pose()
        • MoveitRealROS.arm_execute_joint_trajectory()
        • MoveitRealROS.gripper_execute_joint_command()
        • MoveitRealROS.arm_execute_trajectory()
        • MoveitRealROS.stop_arm()
        • MoveitRealROS.stop_gripper()
        • MoveitRealROS.robot_pose()
        • MoveitRealROS.robot_rpy()
        • MoveitRealROS.gripper_pose()
        • MoveitRealROS.gripper_rpy()
        • MoveitRealROS.joint_angles_arm()
        • MoveitRealROS.joint_angles_gripper()
        • MoveitRealROS.joint_angles()
        • MoveitRealROS.is_goal_reachable()
        • MoveitRealROS.check_goal_reachable_joint_pos()
        • MoveitRealROS.set_trajectory_ee()
        • MoveitRealROS.set_trajectory_joints()
        • MoveitRealROS.set_gripper_joints()
        • MoveitRealROS.set_trajectory_cartesian()
        • MoveitRealROS.get_robot_pose()
        • MoveitRealROS.get_robot_rpy()
        • MoveitRealROS.get_gripper_pose()
        • MoveitRealROS.get_gripper_rpy()
        • MoveitRealROS.get_joint_angles_robot_arm()
        • MoveitRealROS.get_joint_angles_gripper()
        • MoveitRealROS.get_joint_angles()
        • MoveitRealROS.check_goal()
        • MoveitRealROS.check_goal_joint_pos()
        • MoveitRealROS.get_randomJointVals()
        • MoveitRealROS.get_randomPose()
        • MoveitRealROS.set_planning_time()
        • MoveitRealROS.set_goal_position_tolerance()
        • MoveitRealROS.set_goal_orientation_tolerance()
        • MoveitRealROS.set_goal_joint_tolerance()
        • MoveitRealROS.set_max_acceleration_scaling_factor()
        • MoveitRealROS.set_max_velocity_scaling_factor()
    • Base envs
      • RealBaseEnv
        • RealBaseEnv
      • RealGoalEnv
        • RealGoalEnv
    • Wrappers
      • NormalizeActionWrapper
        • NormalizeActionWrapper.denormalize_action()
        • NormalizeActionWrapper.reverse_action()
        • NormalizeActionWrapper.step()
      • NormalizeObservationWrapper
        • NormalizeObservationWrapper.observation()
      • TimeLimitWrapper
        • TimeLimitWrapper.step()
        • TimeLimitWrapper.reset()
        • TimeLimitWrapper.spec
      • get_env_params()
  • sb3_ros_support API reference
    • Base model
      • BasicModel
        • BasicModel.train()
        • BasicModel.save_model()
        • BasicModel.save_replay_buffer()
        • BasicModel.set_model_logger()
        • BasicModel.close_env()
        • BasicModel.check_env()
        • BasicModel.predict()
    • Algorithms
      • PPO
        • PPO
      • A2C
        • A2C
      • DDPG
        • DDPG
      • TD3
        • TD3
      • SAC
        • SAC
      • DQN
        • DQN
    • Goal-conditioned variants (HER)
      • DDPG_GOAL
        • DDPG_GOAL
      • TD3_GOAL
        • TD3_GOAL
      • SAC_GOAL
        • SAC_GOAL
      • DQN_GOAL
        • DQN_GOAL
    • Utilities
      • get_policy_kwargs()
      • get_action_noise()
      • test_env()
      • is_dict_obs_space()
      • her_replay_buffer_kwargs()
      • TimeLimitCallback
      • load_yaml()
  • rl_environments API reference
    • Top-level package
    • RX200 — Simulation (Gazebo)
      • Robot envs
        • RX200RobotEnv
        • RX200RobotGoalEnv
      • Vision-augmented robot envs
        • RX200RobotEnv
        • RX200RobotGoalEnv
      • Reach task envs (Kinect v2 vision)
        • RX200ReacherEnv
        • RX200ReacherGoalEnv
      • Reach task envs (ZED 2 vision)
        • RX200ReacherEnv
        • RX200ReacherGoalEnv
    • RX200 — Real hardware
      • Robot envs
        • RX200RobotEnv
        • RX200RobotGoalEnv
      • Reach task envs
        • RX200ReacherEnv
        • RX200ReacherGoalEnv
    • Niryo Ned2 — Simulation
      • Robot envs
        • NED2RobotEnv
        • NED2RobotGoalEnv
      • Reach task envs
        • NED2ReacherEnv
        • NED2ReacherGoalEnv
    • Niryo Ned2 — Real hardware
      • Robot envs
        • NED2RobotEnv
        • NED2RobotGoalEnv
      • Reach task envs
        • NED2ReacherEnv
        • NED2ReacherGoalEnv
    • Trossen VX300S — Simulation
      • Robot envs
        • VX300SRobotEnv
        • VX300SRobotGoalEnv
      • Reach task envs
        • VX300SReacherEnv
        • VX300SReacherGoalEnv
    • Trossen VX300S — Real hardware
      • Robot envs
        • VX300SRobotEnv
        • VX300SRobotGoalEnv
      • Reach task envs
        • VX300SReacherEnv
        • VX300SReacherGoalEnv
    • Universal Robots UR5e — Simulation
      • Robot envs
        • UR5eRobotEnv
        • UR5eRobotGoalEnv
      • Reach task envs
        • UR5eReacherEnv
        • UR5eReacherGoalEnv
    • Universal Robots UR5e — Real hardware
      • Robot envs
        • UR5eRobotEnv
        • UR5eRobotGoalEnv
      • Reach task envs
        • UR5eReacherEnv
        • UR5eReacherGoalEnv
  • rl_training_validation API reference
    • Top-level package
    • Utilities
      • env_safety
        • is_registered()
        • is_implemented()
        • is_real()
        • is_goal_env()
        • list_implemented()
        • list_unimplemented()
        • real_motion_consent_present()
        • add_real_motion_cli()
        • enforce_real_motion_consent()
        • add_cube_tracker_cli()
        • apply_cube_tracker_kwargs()
        • add_wrist_camera_cli()
        • apply_wrist_camera_kwargs()
        • add_goal_pose_cli()
        • apply_goal_pose_kwargs()
        • with_seed_suffix()
        • check_env_constructable()
        • filter_to_implemented()
        • assert_goal_env()
        • assert_non_goal_env()
        • parse_env_id()
      • MultiTaskEnv
        • MultiTaskEnv
      • MultiTaskGoalEnv
        • MultiTaskGoalEnv
    • RX200 — Reach
      • Sim training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
      • Real training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
    • Niryo Ned2 — Reach
      • Sim training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
      • Real training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
    • Trossen VX300S — Reach
      • Sim training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
      • Real training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
    • Universal Robots UR5e — Reach
      • Sim training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
      • Real training / validation
        • parse_args()
        • main()
        • parse_args()
        • main()
    • Multi-task learning
      • parse_args()
      • main()

Development

  • Testing
    • Running the tests
    • Continuous integration
    • Adding new tests
  • Contributing
    • Repositories
    • Development setup
    • Commit conventions
    • Pull requests
  • Known limitations
    • Platform lifecycle
    • Coverage of the example environments
    • Real-robot training
    • Multi-task wrapper assumptions
    • CI and documentation
    • Forward-compatibility
UniROS ecosystem
  • Search


© Copyright 2026, Jayasekara Kapukotuwa.

Built with Sphinx using a theme provided by Read the Docs.