{"id":19572588,"url":"https://github.com/elsa-lab/gym-deepracer","last_synced_at":"2026-05-04T23:39:29.621Z","repository":{"id":98623134,"uuid":"196946294","full_name":"elsa-lab/gym-deepracer","owner":"elsa-lab","description":"A simple AWS DeepRacer simulator using Unity with OpenAI gym interface.","archived":false,"fork":false,"pushed_at":"2019-07-15T07:25:15.000Z","size":18921,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-30T22:27:48.262Z","etag":null,"topics":["aws","deepracer","openai-gym","unity"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elsa-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-15T07:23:15.000Z","updated_at":"2022-12-28T03:54:58.000Z","dependencies_parsed_at":"2023-03-13T15:57:48.970Z","dependency_job_id":null,"html_url":"https://github.com/elsa-lab/gym-deepracer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/elsa-lab/gym-deepracer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsa-lab%2Fgym-deepracer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsa-lab%2Fgym-deepracer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsa-lab%2Fgym-deepracer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsa-lab%2Fgym-deepracer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elsa-lab","download_url":"https://codeload.github.com/elsa-lab/gym-deepracer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsa-lab%2Fgym-deepracer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32629485,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","deepracer","openai-gym","unity"],"created_at":"2024-11-11T06:27:27.662Z","updated_at":"2026-05-04T23:39:29.606Z","avatar_url":"https://github.com/elsa-lab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DeepRacer Gym\n\n![](https://github.com/Ending2015a/DeepRacer_gym/blob/master/gif/pic001.gif)\n\n## Param List\n* More info: [AWS DeepRacer Developer Guide](https://docs.aws.amazon.com/en_us/deepracer/latest/developerguide/deepracer-reward-function-input.html)\n```\n{\n    \"all_wheels_on_track\": Boolean,    # flag to indicate if the vehicle is on the track\n    \"x\": float,                        # vehicle's x-coordinate in meters\n    \"y\": float,                        # vehicle's y-coordinate in meters\n    \"distance_from_center\": float,     # distance in meters from the track center \n    \"is_left_of_center\": Boolean,      # Flag to indicate if the vehicle is on the left side to the track center or not. \n    \"heading\": float,                  # vehicle's yaw in degrees\n    \"progress\": float,                 # percentage of track completed.\n    \"steps\": int,                      # number steps completed\n    \"speed\": float,                    # vehicle's speed in meters per second (m/s)\n    \"steering_angle\": float,           # vehicle's steering angle in degrees\n    \"track_width\": float,              # width of the track\n    \"waypoints\": [[float, float], … ], # list of [x,y] as milestones along the track center\n    \"closest_waypoints\": [int, int]    # indices of the two nearest waypoints.\n}\n```\n\n## Example 1\n\n```python\nimport os\nimport sys\nimport time\nimport logging\n\nfrom DeepRacer_gym import CustomRewardWrapper\nfrom DeepRacer_gym import DeepRacerActionWrapper\nimport DeepRacer_gym as deepracer\n\nLOG = logging.getLogger()\n\n# Define your custom reward function\ndef reward_fn(params):\n    '''\n    Example of using all_wheels_on_track and speed\n    '''\n\n    # Read input variables\n    all_wheels_on_track = params['all_wheels_on_track']\n    speed = params['speed']\n\n    # Set the speed threshold based your action space\n    SPEED_THRESHOLD = 1.0\n\n    if not all_wheels_on_track:\n        # Penalize if te car goes off track\n        reward = 1e-3\n    elif speed \u003c SPEED_THRESHOLD:\n        # Penalize if the car goes too slow\n        reward = 0.5\n    else:\n        # High reward if the car stays on track and goes fast\n        reward = 1.0\n\n    return reward\n\n\n# Create environment\nenv = deepracer.make('NewYorkCity-v0')\nenv = CustomRewardWrapper(env, reward_fn)\nenv = DeepRacerActionWrapper(env, max_steering_angle = 30,\n                                  steering_angle_granularity = 5,\n                                  max_speed = 3,\n                                  speed_granularity = 3)\n\n# Print action space info\nprint(env.action_space)\n\naction_table = env.action_table()\n\n# Print action table\nprint('Action number\\t\\tSteering\\t\\tSpeed')\nfor t in action_table:\n    print('{}\\t\\t\\t{}\\t\\t\\t{}'.format(t['Action number'], t['Steering'], t['Speed']))\n\n\nMAXIMUM_STEPS = 1000\n\nstate = env.reset()\nfor step in range(MAXIMUM_STEPS):\n\n    action = env.action_space.sample() # random sample\n    state, reward, done, info = env.step(action)\n\n    LOG.info(\"[step {:4d}] action: ({:6.2f}, {:6.2f}), speed: {:10.6f}, steering: {:10.2f}, xy: ({:10.6f}, {:10.6f}), all_wheels_on_track: {}, closest_waypoints: {}\".format(\n                info['steps'], action_table[action]['Speed'], action_table[action]['Steering'], info['speed'], info['steering_angle'], info['x'], info['y'], info['all_wheels_on_track'], info['closest_waypoints']))\n\n\nenv.close()\n```\n\n\n## Example 2: Integrating with stable_baselines\n\n```python\nimport os\nimport sys\nimport time\nimport logging\n\nfrom DeepRacer_gym import CustomRewardWrapper\nfrom DeepRacer_gym import DeepRacerActionWrapper\nimport DeepRacer_gym as deepracer\n\nfrom stable_baselines import PPO2\nfrom stable_baselines.common.vec_env import DummyVecEnv\nfrom stable_baselines.common.policies import MlpPolicy\n\n# Define your custom reward function\ndef reward_fn(params):\n    '''\n    Example of using all_wheels_on_track and speed\n    '''\n\n    # Read input variables\n    all_wheels_on_track = params['all_wheels_on_track']\n    speed = params['speed']\n\n    # Set the speed threshold based your action space\n    SPEED_THRESHOLD = 1.0\n\n    if not all_wheels_on_track:\n        # Penalize if te car goes off track\n        reward = 1e-3\n    elif speed \u003c SPEED_THRESHOLD:\n        # Penalize if the car goes too slow\n        reward = 0.5\n    else:\n        # High reward if the car stays on track and goes fast\n        reward = 1.0\n\n    return reward\n\n\n# Create environment\nenv = deepracer.make('NewYorkCity-v0')\nenv = CustomRewardWrapper(env, reward_fn)\nenv = DeepRacerActionWrapper(env, max_steering_angle = 30,\n                                  steering_angle_granularity = 5,\n                                  max_speed = 3,\n                                  speed_granularity = 3)\n\nMAX_TRAINING_STEPS = 5000\nMAX_EVALUATE_STEPS = 1000\n\n# Create Dummy Env\nenv = DummyVecEnv([lambda: env])\n\nmodel = PPO2(MlpPolicy, env, verbose=1)\nmodel.learn(total_timesteps=MAX_TRAINING_STEPS)\n\n\nstates = env.reset()\nfor step in range(MAX_EVALUATE_STEPS):\n    action, _states = model.predict(states)\n    state, reward, done, info = env.step(action)\n\n    if info['progress'] \u003e= 99.99:\n        print(\"Track complete\")\n\nenv.close()\n```\n\n\n## Example 3: stable_baselines SubprocVecEnv\n* [example3.py](https://github.com/Ending2015a/DeepRacer_gym/blob/master/Examples/example3.py)\n\n## Environments\n* `NewYorkCity-v0`\n\n## Update Environments\n1. Remove all the files in `DeepRacer_gym/envs/new_york_city/executable` directory\n2. Download/Clone latest version of `env_info.py` from the repository and place in `DeepRacer_gym/envs/new_york_city/env_info.py`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felsa-lab%2Fgym-deepracer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felsa-lab%2Fgym-deepracer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felsa-lab%2Fgym-deepracer/lists"}