{ "info": { "author": "Guillaume Alleon", "author_email": "guillaume.alleon@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3 :: Only", "Topic :: Games/Entertainment :: Simulation", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries" ], "description": "[![ Windows Build Status](http://badges.herokuapp.com/travis/galleon/gym-jsbsim?env=BADGE=windows&label=windows&branch=master)](https://travis-ci.org/galleon/gym-jsbsim) [![ Linux Build Status](http://badges.herokuapp.com/travis/galleon/gym-jsbsim?env=BADGE=linux&label=linux&branch=master)](https://travis-ci.org/galleon/gym-jsbsim) [![ MacOS Build Status](http://badges.herokuapp.com/travis/galleon/gym-jsbsim?env=BADGE=osx&label=OSX&branch=master)](https://travis-ci.org/galleon/gym-jsbsim) [![PyPI version](https://badge.fury.io/py/gym-jsbsim.svg)](https://badge.fury.io/py/gym-jsbsim) [![HitCount](http://hits.dwyl.com/galleon/gym-jsbsim.svg)](http://hits.dwyl.com/galleon/gym-jsbsim)\n\n\n\n# JSBSim Aircraft Simulator for Open AI Gym Environment\n\n## Are we able to learn an aircraft to fly (or taxi) ?\n\nThis project aims at creating realistic open AI GYM environements using the open source Flight Dynamic Model JSBSim.\nOur work is initially based on the Gor-Ren repository (https://github.com/Gor-Ren/gym-jsbsim) on which we made several modifications:\n\n * Remove links to Flight-Gear to focus only on JSBSim and GYM environment making.\n * A complete link to JSBSim with an access to the full list of attributes.\n * A process to add extra features (like delta_heading for exemple) and the capability to call a dedicated function to update this attribute every time steps.\n * A feature to allow a ```set_state()``` and a ```get_state()``` to go back to a previous JSBSim state (very usefull if you want to use MCTS, ICT, IW and planning /scheduling approaches)\n * An autopilot for ground procedure (A320) based on 2 PIDs to manage throttles and brakes, to make the aircraft taxiing at a specific velocity.\n * A complete taxi environement with access to runaway path attributes (like distances and angles to next points) to train an aircraft to taxi autonomously.\n * Allow to define discrete GYM attributes.\n * ...\n\n\n## Installation\n\n### Mac OS / Linux\nThe package is directly installable with pip typing the following command :\n```\npip install gym-jsbsim\n```\n### Windows\nFirst, you have to install the Shapely library (issue [#39](https://github.com/galleon/gym-jsbsim/issues/39)) with :\n* ##### Python 3.6 :\n ```\n pip install https://download.lfd.uci.edu/pythonlibs/t7epjj8p/Shapely-1.6.4.post2-cp36-cp36m-win_amd64.whl\n ```\n* ##### Python 3.7 :\n ```\n pip install https://download.lfd.uci.edu/pythonlibs/t7epjj8p/Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl\n ```\nThen, you can install the package with the pip install command :\n```\npip install gym-jsbsim\n```\n### Sources\nIf you want to build from the source, clone the repository using the following command as we have submodules:\n```\ngit clone --recurse-submodules https://github.com/galleon/gym-jsbsim.git\n```\n\n## Environments\n\nSo far, is available:\n\n * [x] Heading Task: *GymJsbsim-HeadingControlTask-v0*: The aircraft should maintain its initial heading and altitude. During the simulation, the aircraft should turn to reach a new heading every 150 seconds with an incremental difficulty.\n * [x] Taxi task: *GymJsbsim-TaxiControlTask-v0*: The aircraft should follow a predifined trajectory on the runaway.\n * [x] Taxi with AutoPilot task: *GymJsbsim-TaxiapControlTask-v0*: The aircraft should follow a predifined trajectory on the runaway. The aircraft velocity is manage by an autopilot.\n * [x] Approach Task: *GymJsbsim-ApproachControlTask-v0*: The aircraft should decrese its altitude (it is still a draft environement and not realitic in regards to appraoch procedure).\n\n## Heading Task\n\n```\nimport gym\nimport gym_jsbsim\n\nenv = gym.make(\"GymJsbsim-HeadingControlTask-v0\")\nenv.reset()\ndone = False\n\nwhile not done:\n action = env.action_space.sample()\n state, reward, done, _ = env.step(action)\n```\n\nIn this task, the aircraft should perform a stable steady flight following its initial heading and altitude. Every 150 seconds, a new target heading is set. At each time the target heading is more and more complicated to reach, starting with a delta of \u00b110\u00b0 (random sign), following with \u00b120\u00b0, then \u00b130\u00b0 and so on.\n\nA terminal state is reached:\n * If the target heading is not reached with an accuracy of 10\u00b0 during the 150 seconds.\n * If the aircraft is more than 100 feet away from its target altitude when the heading target changes.\n\nThe input state set is a vector of 9 parameters:\n\n```\nstate_var = [c.delta_altitude, # the delta altitude between the aircraft and target altitude\n\t c.delta_heading, # the delta heading between the aircraft and target heading\n c.attitude_pitch_rad,\n c.attitude_roll_rad,\n\t c.velocities_v_down_fps, # the vertical velocity of the aircraft\n\t c.velocities_vc_fps, # the air velocity of the aircraft\n\t c.velocities_p_rad_sec, # roll axis velocity\n\t c.velocities_q_rad_sec, # pitch axis velocity\n\t c.velocities_r_rad_sec] # yaw axis velocity\n```\n\nThe action set is a vector of 4 parameters:\n\n```\naction_var = [c.fcs_aileron_cmd_norm,\n\t c.fcs_elevator_cmd_norm,\n\t c.fcs_rudder_cmd_norm,\n\t c.fcs_throttle_cmd_norm]\n```\n\nThe reward is computed as a function of:\n * heading deviation from target\n * altitude deviation from target\n * roll angle\n * speed\n * acceleration perceived by the pilot in the cockpit\n\n## Heading and Altitude Task\n\n```\nimport gym\nimport gym_jsbsim\n\nenv = gym.make(\"GymJsbsim-HeadingAltitudeControlTask-v0\")\nenv.reset()\ndone = False\n\nwhile not done:\n action = env.action_space.sample()\n state, reward, done, _ = env.step(action)\n```\n\nThis is the same as the Heading Task, but the target altitude also changes every 150 seconds. The altitude changes are: first \u00b1100 feet (random sign), then \u00b1200 feet, \u00b1300 feet, and so on, but modulo 5000 feet and with a minimum target altitude of 3000 feet.\n\n## Taxi Task\n\n```\nimport gym\nimport gym_jsbsim\n\nenv = gym.make(\"GymJsbsim-TaxiControlTask-v0\")\nenv.reset()\ndone = False\n\nwhile not done:\n action = env.action_space.sample()\n state, reward, done, _ = env.step(action)\n```\n\nIn this environnement, the aircraft should behave on ground and following a specific path, trying to be closest as possible to the runaway centerline.\n\nFor this environement, we have extract a path from the AMDB files of blagnac airport:\n\n

\n \n

\n\nand extracted from this path a list of geodesic coordinates that the aircraft should follow.\n\nAs state set for this environment, we compute every timestep, the distance (di) and angle (ai) to the next 4 path points according to location of the aircraft (ie: d1 to d4 and a1 to a4)\n\n

\n \n

\n\n\nThe full state set is:\n\n```\nstate_var = [c.velocities_vc_fps,\n\t c.shortest_dist,\n\t c.d1, c.d2, c.d3, c.d4,\n\t c.a1, c.a2, c.a3, c.a4]\n```\n\nThe action set is define with 3 parameters that correspond to throttle, brake and steer commands:\n\n```\naction_var = [c.fcs_steer_cmd_norm,\n\t c.fcs_center_brake_cmd_norm,\n\t c.fcs_throttle_cmd_norm]\n```\n\nthe reward is simply computed with the distance to the centerline\n\nThe scenario is over if the aircraft overtake the centerline from 10 meters or more.\n\n## Taxi Auto Pilot Task\n\n```\nimport gym\nimport gym_jsbsim\n\nenv = gym.make(\"GymJsbsim-TaxiapControlTask-v0\")\nenv.reset()\ndone = False\n\nwhile not done:\n action = env.action_space.sample()\n state, reward, done, _ = env.step(action)\n```\n\nThis is the same Taxi environement with an autopilot to manage the aircraft velocity.\nThe velocity during straight line is set to 20 knots and the velocity during turn is set to 7 knots.\n\nThe state set is unchange:\n\n```\nstate_var = [c.velocities_vc_fps,\n\t c.shortest_dist,\n\t c.d1, c.d2, c.d3, c.d4,\n\t c.a1, c.a2, c.a3, c.a4]\n```\n\nbut the action set is therefor focus on the steering command only:\n\n```\naction_var = [c.fcs_steer_cmd_norm]\n```\n\nthe reward is unchanged and computed with the distance to the centerline\n\n\n## Test\n\nYou could run a random agent with\n```\npython test_agent.py\n```\n\n## Results\n\n\n## Links\n\nOpen AI GYM: https://github.com/openai/gym\n\nJSBSim: https://github.com/JSBSim-Team/jsbsim\n\nGor-Ren Gym-Jsbsim repo: https://github.com/Gor-Ren/gym-jsbsim\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/galleon/gym-jsbsim", "keywords": "", "license": "LGPL 2.1", "maintainer": "", "maintainer_email": "", "name": "gym-jsbsim", "package_url": "https://pypi.org/project/gym-jsbsim/", "platform": "", "project_url": "https://pypi.org/project/gym-jsbsim/", "project_urls": { "Homepage": "https://github.com/galleon/gym-jsbsim" }, "release_url": "https://pypi.org/project/gym-jsbsim/0.6.7/", "requires_dist": [ "jsbsim (>=1.1.1)", "folium (>=0.10.1)", "geographiclib (>=1.50)", "gym (>=0.15.7)", "shapely (>=1.7.1)" ], "requires_python": ">3.6", "summary": "Gym JSBSim environment", "version": "0.6.7", "yanked": false, "yanked_reason": null }, "last_serial": 8635383, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "10505008e6869bc5136d839640a92e6b", "sha256": "066c0d71aae3cbfb3ca3ac35cff72c3ce92938e8d8802cd7aaa2ecbd77ec7bf8" }, "downloads": -1, "filename": "gym_jsbsim-0.1.0-119-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "10505008e6869bc5136d839640a92e6b", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1446043, "upload_time": "2019-10-22T13:51:03", "upload_time_iso_8601": "2019-10-22T13:51:03.812736Z", "url": "https://files.pythonhosted.org/packages/f0/f4/95f087b6bdc0dbe150881b07bebd325383998e8f5359b9c0e91ed197d722/gym_jsbsim-0.1.0-119-cp37-cp37m-macosx_10_14_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6be21730607024d3f85209b33df32d61", "sha256": "ca0d94af1122fc568b282f77752f35125826667f4eed2c6038d1cc26efc163e5" }, "downloads": -1, "filename": "gym_jsbsim-0.1.0-119-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "6be21730607024d3f85209b33df32d61", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1222839, "upload_time": "2019-10-22T13:44:53", "upload_time_iso_8601": "2019-10-22T13:44:53.411736Z", "url": "https://files.pythonhosted.org/packages/49/3a/9d798178fd7952205e2ad0a59e1d43d68eaba437381fb0ee797d1dc4daf8/gym_jsbsim-0.1.0-119-cp37-cp37m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "80f1bc746ad008391a7f0a4cbe3975b7", "sha256": "2b3a8496ed98d1a5907919381c6bfa2706340a105a4c11949d8b85fe8449d75a" }, "downloads": -1, "filename": "gym_jsbsim-0.1.0-cp36-cp36m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "80f1bc746ad008391a7f0a4cbe3975b7", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 28344593, "upload_time": "2019-10-22T09:05:46", "upload_time_iso_8601": "2019-10-22T09:05:46.473675Z", "url": "https://files.pythonhosted.org/packages/76/d5/de0970268672600998eba63f4a40ef62cd5134d1753552deee0e5c13e4b0/gym_jsbsim-0.1.0-cp36-cp36m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e483c2e24c374c79aedab39fde3a86a7", "sha256": "5a60aa7f99fbda57e15d28ad0be3a9f516a426c06959c620f62d7f65074b0af3" }, "downloads": -1, "filename": "gym_jsbsim-0.1.0-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "e483c2e24c374c79aedab39fde3a86a7", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 7236193, "upload_time": "2019-10-22T09:05:22", "upload_time_iso_8601": "2019-10-22T09:05:22.985495Z", "url": "https://files.pythonhosted.org/packages/8b/60/cc4117cd47e9ed36e9439ffc6fdaa3a54ad7b200289ef417ff8a90fb8435/gym_jsbsim-0.1.0-cp37-cp37m-macosx_10_14_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "18ba72c529a989755bdea8fce2825f66", "sha256": "a4df0605c1d43d85a3e0b077aac568c0d3b6f72c73145964cc0e78b3261729f0" }, "downloads": -1, "filename": "gym_jsbsim-0.1.0-cp37-cp37m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "18ba72c529a989755bdea8fce2825f66", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 28353487, "upload_time": "2019-10-22T09:05:51", "upload_time_iso_8601": "2019-10-22T09:05:51.682780Z", "url": "https://files.pythonhosted.org/packages/1d/45/cfe23697dbe1762327cceeafd4e6099b09ce4f70afafcfddef8b020d7181/gym_jsbsim-0.1.0-cp37-cp37m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1a06c06e8263ac48844e73f934e33fe3", "sha256": "60d23f8fe3aea24fb846c8cc1b14905ecccc636c2e71310cb6dcaf8e8dfd1db5" }, "downloads": -1, "filename": "gym_jsbsim-0.1.0-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "1a06c06e8263ac48844e73f934e33fe3", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 7012973, "upload_time": "2019-10-22T09:02:00", "upload_time_iso_8601": "2019-10-22T09:02:00.572683Z", "url": "https://files.pythonhosted.org/packages/6e/8f/050f8ce4df905b27f7e716c174e0f49c3b4d2591b2972c312ca9dc9c55e5/gym_jsbsim-0.1.0-cp37-cp37m-win_amd64.whl", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a83bd7f4304eb1703f2491822f277574", "sha256": "e049844738fbcb32da2c923f581b1ffefa2bc1bd6d5a8c73b98b08b853b9d69a" }, "downloads": -1, "filename": "gym_jsbsim-0.1.1-cp36-cp36m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "a83bd7f4304eb1703f2491822f277574", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1449643, "upload_time": "2019-10-23T13:17:29", "upload_time_iso_8601": "2019-10-23T13:17:29.618358Z", "url": "https://files.pythonhosted.org/packages/95/ab/5c8e701e25b856920ef7ea0c2d516c6190c385cbfe0133a6deaa6c221f5b/gym_jsbsim-0.1.1-cp36-cp36m-macosx_10_13_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "98b6a870f0fbc19fe2bf191648435d75", "sha256": "b74e7b53958c6f50cdf50b2608864bb32ca4f174410588b02c6c09179ddac5c2" }, "downloads": -1, "filename": "gym_jsbsim-0.1.1-cp36-cp36m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "98b6a870f0fbc19fe2bf191648435d75", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 22554428, "upload_time": "2019-10-22T15:07:53", "upload_time_iso_8601": "2019-10-22T15:07:53.131287Z", "url": "https://files.pythonhosted.org/packages/75/0a/6776fc48338b5909f6f434efc8d02b4a0308aecbe66a0b89f844d7c89f87/gym_jsbsim-0.1.1-cp36-cp36m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d24d9096a7bd3b7ed7c99c80f191fd9b", "sha256": "725d0ba8ba6a8417dc6aa2bc107ed6badf0c8c91347c44bccc68134a1984f548" }, "downloads": -1, "filename": "gym_jsbsim-0.1.1-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "d24d9096a7bd3b7ed7c99c80f191fd9b", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1446034, "upload_time": "2019-10-22T15:00:36", "upload_time_iso_8601": "2019-10-22T15:00:36.846985Z", "url": "https://files.pythonhosted.org/packages/d2/53/87762e8831fb87b8af6a9c6c682985b60ed9581440deee1161fff504d047/gym_jsbsim-0.1.1-cp37-cp37m-macosx_10_14_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "410b614b087b5ff6c239cb0f3dc83bf5", "sha256": "e4ed56847c24206ffb23a48ab471dd36ad99f810267c943769247f49b84f491e" }, "downloads": -1, "filename": "gym_jsbsim-0.1.1-cp37-cp37m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "410b614b087b5ff6c239cb0f3dc83bf5", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 22563327, "upload_time": "2019-10-22T15:07:57", "upload_time_iso_8601": "2019-10-22T15:07:57.456780Z", "url": "https://files.pythonhosted.org/packages/ab/f1/e2346c2e6620710b2bf8c29a1b9a644305c8b05695e0d499d194f96603b2/gym_jsbsim-0.1.1-cp37-cp37m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c890b380a8b9e9591d3ff476ff2980f2", "sha256": "667abbe3de92252aff967448f9e9fa7cb607309fcf2ffeb05fcf70140b2f975a" }, "downloads": -1, "filename": "gym_jsbsim-0.1.1-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "c890b380a8b9e9591d3ff476ff2980f2", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1222828, "upload_time": "2019-10-22T14:51:03", "upload_time_iso_8601": "2019-10-22T14:51:03.708436Z", "url": "https://files.pythonhosted.org/packages/ea/1b/463a7c1daf2e7982f209667b47614c81c449bff1190a97762084801e1bdb/gym_jsbsim-0.1.1-cp37-cp37m-win_amd64.whl", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "71a7c1c9a4724de19ca5faa1143540a3", "sha256": "f2bc9046598b4cd2ec8fb028f3875c13f97ae38039f71c807d2c13950790c52e" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0-cp36-cp36m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "71a7c1c9a4724de19ca5faa1143540a3", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1450105, "upload_time": "2019-11-19T16:30:53", "upload_time_iso_8601": "2019-11-19T16:30:53.152777Z", "url": "https://files.pythonhosted.org/packages/07/e3/12a1f11796e36504e3155104104956c6d5c1ea7e706f6b8c3691186fa024/gym_jsbsim-0.5.0-cp36-cp36m-macosx_10_13_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "649edb7341ad82ca18c3d78e847f600c", "sha256": "a21c127fc4dc82d25254223192b81368e636285437193d9ade02627046989b6e" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0-cp36-cp36m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "649edb7341ad82ca18c3d78e847f600c", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 22553412, "upload_time": "2019-11-19T16:24:30", "upload_time_iso_8601": "2019-11-19T16:24:30.125422Z", "url": "https://files.pythonhosted.org/packages/a8/8c/be60a47de6212fae65cb6668c63862d6a15f5c62a1b0c83d4803b10ddbf1/gym_jsbsim-0.5.0-cp36-cp36m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "adb2c8a7eb25ba64f9f963531db5a5f1", "sha256": "78e803a39c61cfa1dc20de7297c60587dc957dcec32a9c65018a52cf7a8a7140" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "adb2c8a7eb25ba64f9f963531db5a5f1", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1224151, "upload_time": "2019-11-19T16:24:55", "upload_time_iso_8601": "2019-11-19T16:24:55.103387Z", "url": "https://files.pythonhosted.org/packages/b0/c7/a56d26361795ace78a4d2e7e059e7cbddd664af9f55f7bdbbcaf1de6dd67/gym_jsbsim-0.5.0-cp36-cp36m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1f9dbf015477b66e5349da6f5c1ec9dd", "sha256": "5352b18a723e994bd14e2ee51ace7f85f0ab8aba46bda5c5cd2169e95f1b6cfb" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "1f9dbf015477b66e5349da6f5c1ec9dd", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1447192, "upload_time": "2019-11-19T16:32:28", "upload_time_iso_8601": "2019-11-19T16:32:28.054787Z", "url": "https://files.pythonhosted.org/packages/c2/04/66f043bf4a08fbdd44572fab6d01d3a5dc625ea96dfe2d0d670a7a334cfa/gym_jsbsim-0.5.0-cp37-cp37m-macosx_10_14_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6f1b8dc4e74c7b19497607c0855358c4", "sha256": "2f7c934b7a7947170f5e804c6ab7361f6a9419c661f8f195141abea9ccef6252" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0-cp37-cp37m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "6f1b8dc4e74c7b19497607c0855358c4", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 22563492, "upload_time": "2019-11-19T16:26:40", "upload_time_iso_8601": "2019-11-19T16:26:40.191419Z", "url": "https://files.pythonhosted.org/packages/8a/9f/77d2636183f45bf63d5fa9c8390e3cbf088f26546300f42a5147efb52a32/gym_jsbsim-0.5.0-cp37-cp37m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "444238db00345af4ce519bdc06b3122f", "sha256": "e1e8c014c4a00ab7c38ba64a80ff3c67da5f7099132847e9502ac238ca4e6496" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "444238db00345af4ce519bdc06b3122f", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1223995, "upload_time": "2019-11-19T16:32:32", "upload_time_iso_8601": "2019-11-19T16:32:32.741089Z", "url": "https://files.pythonhosted.org/packages/aa/3a/7b25cd81f4e01a2aa8dfbebabfdb73a7851b309aa8d408d66bb229de7fa2/gym_jsbsim-0.5.0-cp37-cp37m-win_amd64.whl", "yanked": false, "yanked_reason": null } ], "0.5.0b2": [ { "comment_text": "", "digests": { "md5": "99cfc0e2e1124aa5b0b832ccc004fdd0", "sha256": "1329bca56273cdf7121b19edecc2ab8a8533fddfbe7d451b23c9383c5d6cea76" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0b2-cp36-cp36m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "99cfc0e2e1124aa5b0b832ccc004fdd0", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1450147, "upload_time": "2019-11-06T19:51:50", "upload_time_iso_8601": "2019-11-06T19:51:50.345268Z", "url": "https://files.pythonhosted.org/packages/46/99/7c21e63b1d5e26cb6b577eee95ad58bfbb8078d27138f4d5272536e356f2/gym_jsbsim-0.5.0b2-cp36-cp36m-macosx_10_13_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a18a2284c41000c8bf8de5c86f713b20", "sha256": "81b878551256cda078cb77f396a1e5578e2ba0912f557aa72254dab65109f4f8" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0b2-cp36-cp36m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "a18a2284c41000c8bf8de5c86f713b20", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 22553463, "upload_time": "2019-11-06T19:42:14", "upload_time_iso_8601": "2019-11-06T19:42:14.471270Z", "url": "https://files.pythonhosted.org/packages/32/3b/331cb20205ee2c2a2c1faf625fc467e2fc4c21c2885a171cd0f31d0204b4/gym_jsbsim-0.5.0b2-cp36-cp36m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "89544a8f66bcc3abfc19f9e5f453936b", "sha256": "d0b7787699bf274a71cbe76849bfe5149f9bfe8e18f731a7575e900a7e375aa4" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0b2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "89544a8f66bcc3abfc19f9e5f453936b", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1224184, "upload_time": "2019-11-06T19:48:17", "upload_time_iso_8601": "2019-11-06T19:48:17.402237Z", "url": "https://files.pythonhosted.org/packages/9e/d3/44e4fb82c81582ba40b6a1b74a2b926df85449e427367087cf4d4eb0de69/gym_jsbsim-0.5.0b2-cp36-cp36m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "dd8ce18f214284df6ac9a84a24f8c47c", "sha256": "45e253f08f4b7526beff2309f99feaef1b6bd90704b192c70ef8563eb39ca5c9" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0b2-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "dd8ce18f214284df6ac9a84a24f8c47c", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1447223, "upload_time": "2019-11-06T19:52:27", "upload_time_iso_8601": "2019-11-06T19:52:27.008037Z", "url": "https://files.pythonhosted.org/packages/14/a7/2b11126d7d88946954d59bc948680aa2d30b1cc9d97a7198bafe43aff2cc/gym_jsbsim-0.5.0b2-cp37-cp37m-macosx_10_14_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ae88bbc9c67275d51b77ed351b9be37e", "sha256": "98423699e17dc0a7c89330926e8d8c97d9f7e3b8ec868a1051cb52ae1ba2db3b" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0b2-cp37-cp37m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "ae88bbc9c67275d51b77ed351b9be37e", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 22563533, "upload_time": "2019-11-06T19:44:54", "upload_time_iso_8601": "2019-11-06T19:44:54.460395Z", "url": "https://files.pythonhosted.org/packages/51/fa/3784fbd26f45b5935808182e0e704a6e90a411821e0fb3a316e5a784e0e7/gym_jsbsim-0.5.0b2-cp37-cp37m-manylinux2010_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a45dc4348cc140e8a0c6077bd5461be", "sha256": "73dfa7f06caa5123aee4c2f0704b70a90a8f4b83d32cfebd9c59ded36efaecb8" }, "downloads": -1, "filename": "gym_jsbsim-0.5.0b2-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "2a45dc4348cc140e8a0c6077bd5461be", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1224028, "upload_time": "2019-11-06T19:50:31", "upload_time_iso_8601": "2019-11-06T19:50:31.806811Z", "url": "https://files.pythonhosted.org/packages/07/2d/9b248fcc057f80adbe36fd7a3fc4a4a8365bb31f23976490eefaa7972a17/gym_jsbsim-0.5.0b2-cp37-cp37m-win_amd64.whl", "yanked": false, "yanked_reason": null } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "a29acef0d676633b6634923b2a2ac854", "sha256": "8464fdc0d9cea04b77873725652a6504abd561769771cb406126ff634ac30a8a" }, "downloads": -1, "filename": "gym_jsbsim-0.6.2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "a29acef0d676633b6634923b2a2ac854", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 51074, "upload_time": "2020-10-24T16:19:18", "upload_time_iso_8601": "2020-10-24T16:19:18.121838Z", "url": "https://files.pythonhosted.org/packages/90/7f/6ba3a5a6f51d8b16e560a3b3566e5db70ff6c0e79961369a29828344273d/gym_jsbsim-0.6.2.linux-x86_64.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "e03d6571c8c42681ff6c5dbc43669562", "sha256": "5ecae915cadf42e3f7f356bc2e6f9f9231f0a119cd55e8c9defac987ca49a741" }, "downloads": -1, "filename": "gym_jsbsim-0.6.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e03d6571c8c42681ff6c5dbc43669562", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">3.6", "size": 31854, "upload_time": "2020-10-24T17:52:04", "upload_time_iso_8601": "2020-10-24T17:52:04.061107Z", "url": "https://files.pythonhosted.org/packages/f5/84/e0ccaff4355cb426040d4e77e28090cb790aaa1634ad20feb446cddd1773/gym_jsbsim-0.6.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1bf9096932da0356e6ba9a74527b9c10", "sha256": "8cf0df3e616f9d43e7781ea945117b2539c5c39bbce4505ea11134a17e68d631" }, "downloads": -1, "filename": "gym_jsbsim-0.6.5.tar.gz", "has_sig": false, "md5_digest": "1bf9096932da0356e6ba9a74527b9c10", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 5825807, "upload_time": "2020-10-24T17:52:05", "upload_time_iso_8601": "2020-10-24T17:52:05.310557Z", "url": "https://files.pythonhosted.org/packages/3a/7b/075e82cabfbdca3bbaf5645ee414b728803d02dff5f87cc6c3e8b03cb93a/gym_jsbsim-0.6.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "bfe221946ddd9f2d15ed743a45e9af11", "sha256": "e108475c93b35925cd9c02ca628b0edf11a12d104cb4c066e8754ecde7a968f9" }, "downloads": -1, "filename": "gym_jsbsim-0.6.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bfe221946ddd9f2d15ed743a45e9af11", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">3.6", "size": 31927, "upload_time": "2020-11-11T20:13:04", "upload_time_iso_8601": "2020-11-11T20:13:04.352520Z", "url": "https://files.pythonhosted.org/packages/d5/42/efd9af37d4b57222ee5b21d632583e682a63be82d8fe08e43d56127cdd08/gym_jsbsim-0.6.6-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8bbea3fa39bb239fffb091b33ac6a2a7", "sha256": "76a029db9ad48864f42b4f2892d532ddfa0cf4acdefecfd6cbe5fe49543249ff" }, "downloads": -1, "filename": "gym_jsbsim-0.6.6.tar.gz", "has_sig": false, "md5_digest": "8bbea3fa39bb239fffb091b33ac6a2a7", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 5825179, "upload_time": "2020-11-11T20:13:05", "upload_time_iso_8601": "2020-11-11T20:13:05.774498Z", "url": "https://files.pythonhosted.org/packages/ce/12/fc4de17c7f8fa3eac476dab8e8346fc558cf1385d4de026718b8d829ce76/gym_jsbsim-0.6.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "947eb325aa73b03b8d4dac53e78c1b57", "sha256": "55e7975a6b0ed3b24203ebd5a86a7f4576fd861682b8e46fcd653e20a8565da3" }, "downloads": -1, "filename": "gym_jsbsim-0.6.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "947eb325aa73b03b8d4dac53e78c1b57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">3.6", "size": 533709, "upload_time": "2020-11-11T20:46:06", "upload_time_iso_8601": "2020-11-11T20:46:06.822181Z", "url": "https://files.pythonhosted.org/packages/4e/5b/892287ca4d5072a38a638b3fcda1f7cbebe7a454015349f0841513507e31/gym_jsbsim-0.6.7-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3010424d913ef3e78d8e4440306f8a19", "sha256": "753eb4e09ddf7903fda13768dcf18bd6e3ed8d2e957f1b5269e0afb395dd8383" }, "downloads": -1, "filename": "gym_jsbsim-0.6.7.tar.gz", "has_sig": false, "md5_digest": "3010424d913ef3e78d8e4440306f8a19", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 6200709, "upload_time": "2020-11-11T20:46:08", "upload_time_iso_8601": "2020-11-11T20:46:08.132449Z", "url": "https://files.pythonhosted.org/packages/70/5c/5034021d83af555e1c041d83d629aaa68d5a2088933d7fdb0d850601db95/gym_jsbsim-0.6.7.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "947eb325aa73b03b8d4dac53e78c1b57", "sha256": "55e7975a6b0ed3b24203ebd5a86a7f4576fd861682b8e46fcd653e20a8565da3" }, "downloads": -1, "filename": "gym_jsbsim-0.6.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "947eb325aa73b03b8d4dac53e78c1b57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">3.6", "size": 533709, "upload_time": "2020-11-11T20:46:06", "upload_time_iso_8601": "2020-11-11T20:46:06.822181Z", "url": "https://files.pythonhosted.org/packages/4e/5b/892287ca4d5072a38a638b3fcda1f7cbebe7a454015349f0841513507e31/gym_jsbsim-0.6.7-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3010424d913ef3e78d8e4440306f8a19", "sha256": "753eb4e09ddf7903fda13768dcf18bd6e3ed8d2e957f1b5269e0afb395dd8383" }, "downloads": -1, "filename": "gym_jsbsim-0.6.7.tar.gz", "has_sig": false, "md5_digest": "3010424d913ef3e78d8e4440306f8a19", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 6200709, "upload_time": "2020-11-11T20:46:08", "upload_time_iso_8601": "2020-11-11T20:46:08.132449Z", "url": "https://files.pythonhosted.org/packages/70/5c/5034021d83af555e1c041d83d629aaa68d5a2088933d7fdb0d850601db95/gym_jsbsim-0.6.7.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }