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
    • Optional: ready-made envs + training scripts
    • Robot-specific extras
    • Next step
  • 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

  • Ready-made environments
    • Status legend
    • Robot × task implementation matrix
    • Training script availability
    • Trossen RX200 — simulation, reach
      • Registered gymnasium IDs
      • Training scripts
    • Trossen RX200 — simulation, push
      • Registered gymnasium IDs
      • Training script
    • Trossen RX200 — real hardware, reach
      • Registered gymnasium IDs
      • Training scripts
    • Niryo Ned2
    • Universal Robots UR5
  • 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
  • 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
  • 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
    • Niryo Ned2 — Simulation
      • Robot envs
        • NED2RobotEnv
        • NED2RobotGoalEnv
      • Reach task envs
        • NED2ReacherEnv
        • NED2ReacherGoalEnv
    • Niryo Ned2 — Real hardware
      • NED2RobotEnv
        • NED2RobotEnv.ros_kin
        • NED2RobotEnv.fk_pykdl()
        • NED2RobotEnv.calculate_fk()
        • NED2RobotEnv.calculate_ik()
        • NED2RobotEnv.joint_state_callback()
        • NED2RobotEnv.move_arm_joints()
        • NED2RobotEnv.move_gripper_joints()
        • NED2RobotEnv.smooth_trajectory()
        • NED2RobotEnv.publish_trajectory()
        • NED2RobotEnv.set_trajectory_joints()
        • NED2RobotEnv.set_trajectory_ee()
        • NED2RobotEnv.get_ee_pose()
        • NED2RobotEnv.get_ee_rpy()
        • NED2RobotEnv.get_joint_angles()
        • NED2RobotEnv.check_goal()
        • NED2RobotEnv.check_goal_reachable_joint_pos()
        • NED2RobotEnv.kinect_depth_callback()
        • NED2RobotEnv.kinect_rgb_callback()
        • NED2RobotEnv.zed2_depth_callback()
        • NED2RobotEnv.zed2_rgb_callback()
      • NED2RobotGoalEnv
        • NED2RobotGoalEnv.ros_kin
        • NED2RobotGoalEnv.fk_pykdl()
        • NED2RobotGoalEnv.calculate_fk()
        • NED2RobotGoalEnv.calculate_ik()
        • NED2RobotGoalEnv.joint_state_callback()
        • NED2RobotGoalEnv.move_arm_joints()
        • NED2RobotGoalEnv.move_gripper_joints()
        • NED2RobotGoalEnv.smooth_trajectory()
        • NED2RobotGoalEnv.publish_trajectory()
        • NED2RobotGoalEnv.set_trajectory_joints()
        • NED2RobotGoalEnv.set_trajectory_ee()
        • NED2RobotGoalEnv.get_ee_pose()
        • NED2RobotGoalEnv.get_ee_rpy()
        • NED2RobotGoalEnv.get_joint_angles()
        • NED2RobotGoalEnv.check_goal()
        • NED2RobotGoalEnv.check_goal_reachable_joint_pos()
        • NED2RobotGoalEnv.kinect_depth_callback()
        • NED2RobotGoalEnv.kinect_rgb_callback()
        • NED2RobotGoalEnv.zed2_depth_callback()
        • NED2RobotGoalEnv.zed2_rgb_callback()
  • rl_training_validation API reference
    • Top-level package
    • Utilities
      • MultiTaskEnv
        • MultiTaskEnv
      • MultiTaskGoalEnv
        • MultiTaskGoalEnv
    • RX200 reach scripts
      • Sim training / validation
      • Real-hardware training / validation
    • Multi-task learning

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.