Python Module Index
72 | 73 |80 | p | ||
84 | |
85 | projectairsim | 86 | |
89 | |
90 | projectairsim.types | 91 | |
94 | |
95 | projectairsim.utils | 96 | |
‑RenderOffScreen
| Enable headless rendering (same for both Windows and Linux) |
8 | | ‑nullrhi
| Disable rendering completely |
9 | | ‑log
| For Windows, this switch will launch an additional command prompt that displays the log output as stdout (default behavior in Linux) |
10 | | ‑vulkan
| Force Vulkan rendering instead of DirectX for Windows (Vulkan is already default for Linux)
11 | | ‑ResX=
640 ‑ResY=
480 | Set the main viewport rendering resolution (ex. 640x480) |
12 | | ‑windowed
| Run in windowed mode |
13 | | ‑fullscreen
| Run in full-screen mode |
14 | | ‑NoVSync
| Disable VSync to prevent capping FPS at the monitor's refresh rate |
15 | | ‑nosound
| Disable any sound output |
16 | | ‑benchmark
| Enabled Unreal's benchmark mode that seems to remove any sleeps in between rendering/tick loops to run without limiting to any real-time execution rate FPS target (this mode needs further testing to confirm any side-effects and how it could be used properly) |
17 | | ‑gltfDir=
dir/containing/tiles/ | If you'll be using a GIS scene, you can specify the directory to read the tiles from. Alternatively, if you're trying CesiumForUnreal you can provide the root tileset json file. |
18 | | ‑clientauthpubkey=
public_key | Specify a client authorization public key to require clients to present a client authorization token before being allowed to use the client API. Overrides the key set by the [PROJECTAIRSIM_CLIENT_AUTH_PUBKEY](#environment_variables) environment variable. |
19 |
20 | The below simulation parameters can also be changed through the comand line:
21 |
22 | | Switch | Value | Default | Description |
23 | | ------ | ----- | ----- | ----- |
24 | | ‑topicsport
| integer | 8989 | TCP port for pub-sub client connection (e.g. ‑topicsport=8989
)|
25 | | ‑servicesport
| integer | 8990 | TCP port for req-resp client connection (e.g. ‑servicesport=8990
)|
26 |
27 | **Note**: The port values must be different from one another.
28 |
29 |
30 | # Environment Variables
31 |
32 | Project AirSim supports the following environment variables:
33 |
34 | | Environment Variable | Description |
35 | | -------------------- | ----------- |
36 | | PROJECTAIRSIM_CLIENT_AUTH_PUBKEY
| Client authorization token public key
37 |
38 | ---
39 |
40 | Copyright (C) Microsoft Corporation. All rights reserved.
41 |
--------------------------------------------------------------------------------
/_sources/config.md.txt:
--------------------------------------------------------------------------------
1 | # Configuration JSONC Settings
2 |
3 | Project AirSim configuration files use the [JSONC (JSON with Comments)](https://commentjson.readthedocs.io/en/latest/) file format. The configuration JSONC settings that client scripts load are stored in a `sim_config/` subfolder relative to the client script:
4 |
5 | ```
6 | :=
value" in the `roslaunch` command. For instance, to specify the IP address where AirSim is running:
32 | ``` bash
33 | roslaunch projectairsim_ros_examples build_map.launch airsim_ip_address:=192.168.0.1
34 | ```
35 |
36 |
37 | | Argument | Value | Default | Description |
38 | | ---------- | ------| --------| ----------- |
39 | | airsim_ip_address
| string | 127.0.0.1 | The IP address of the host running Project AirSim (e.g., airsim_ip_address:=127.0.0.1
). |
40 | | sim_config_path
| string | (`projectairsim_ros_examples` package dir)../../../client/python/example_user_scripts/sim_config | The path to the directory containing the Project AirSim config files. |
41 |
42 | ## Technical description
43 | This example uses MoveIt!'s Depth Image Octomap Updater plug-in to build the 3D occupancy map.
44 |
45 | The `build_map.py` script creates the Project AirSim ROS Bridge node and loads the scene config file "scene_drone_sensors.jsonc" which configures the robot with multiple sensors including LIDAR. The script also runs a "mission script" to fly the robot around and exits when the drone returns to its launch point.
46 |
47 | The configuration file `config/sensors_lidar.yaml` adds the PointCloud Octomap Updater plug-in to the MoveIt! group and points the plug-in to the robot's LIDAR sensor data topic published by the Project AirSim ROS Bridge. This topic publishes PointCloud2 messages supported by the Octomap Updater plug-in. As the robot flies around, the Updater plug-in processes the LIDAR data and marks voxels in the occupancy map as occupied wherever a LIDAR point is within 100 meters of the vehicle.
48 |
49 | For performance reasons the occupany map is configured with a resolution of 1.0 meter per voxel in `sensor_manager.launch.xml`.
50 |
51 | In the meanwhile, RViz is running with the MoveIt! MotionPlanning plugin to display the drone and the occupancy map as it is updated.
52 |
53 | When `build_map.py` is done flying the vehicle, it uses the OctoHandler class in `common/octomap_handler.py` to retrieve the occupancy map from MoveIt! and save it to a file. It does this by subscribing to the `/move_group/monitored_planning_scene` topic for one update. When the update message is received, it serializes the octomap in the message using the Python pickle module and saves it to a file.
54 |
55 | The `build_map.py` node is marked "required" in the primary ROS launch file `build_map.launch`. When `build_map.py` completes the mission script and exits, `roslaunch` automatically shuts down the rest of the nodes.
56 |
57 | ## 3rd party attributions
58 |
59 | `example_externals/moveit_simple_controller_manager` and `example_externals/action_controller` are derived from work by Benoit Courty, Alessio Tonioni, and Wel Selby. The original work may be found at https://github.com/benoit-cty/ROS-Autonomous-Quadcopter-Flight, and https://github.com/wilselby/ROS_quadrotor_simulator.
60 |
61 | ---
62 |
63 | Copyright (C) Microsoft Corporation. All rights reserved.
64 |
--------------------------------------------------------------------------------
/_sources/ros/ros2.md.txt:
--------------------------------------------------------------------------------
1 | # ROS2 Setup for developers
2 |
3 | Project AirSim can join a ROS2 network using the Project AirSim ROS2 Bridge. The bridge is a pure Python ROS2 node that connects to Project AirSim using the Client API. It is provided as a Python package and can be run as a ROS2 node or directly with the Python interpreter. This bridge is compatible with the Pixel Streaming infrastructure and supports camera, lidar, radar, and pose topics.
4 |
5 | ### 1. Setup python client(venv)
6 |
7 | [Setup python client](../client_setup.md)
8 |
9 | ### 2. Install ROS(humble)
10 | How to install [ros_humble](https://docs.ros.org/en/humble/Installation.html)
11 | ...
12 |
13 | Install [radar_msgs](http://wiki.ros.org/radar_msgs)
14 | ```
15 | sudo apt-get install ros-humble-radar-msgs
16 | ```
17 | ...
18 | Build and activate projectairsim-interfaces(custom message/service types)
19 | ```
20 | cd ./ros/node
21 | colcon build
22 | . install/setup.bash
23 | ```
24 |
25 |
26 | ### 3. Install bridge
27 | In a virtual environment, install `projectairsim-rosbridge` and `projectairsim-ros2`
28 |
29 | ```
30 | cd ./ros/node/
31 | pip install -e projectairsim-rosbridge
32 | pip install -e projectairsim-ros2
33 | ```
34 |
35 | ### 4. Activate node
36 | Executing `projectairsim_bridge_ros2.py` will initialize the ros2 node that will start listening and broadcasting topics.
37 | In a virtual environment,
38 | ```
39 | python ./scripts/ros2/projectairsim_bridge_ros2.py --simconfigpath PATH_TO_SIM_CONFIGS --address ' + 111 | '' + 112 | _("Hide Search Matches") + 113 | "
" 114 | ) 115 | ); 116 | }, 117 | 118 | /** 119 | * helper function to hide the search marks again 120 | */ 121 | hideSearchWords: () => { 122 | document 123 | .querySelectorAll("#searchbox .highlight-link") 124 | .forEach((el) => el.remove()); 125 | document 126 | .querySelectorAll("span.highlighted") 127 | .forEach((el) => el.classList.remove("highlighted")); 128 | localStorage.removeItem("sphinx_highlight_terms") 129 | }, 130 | 131 | initEscapeListener: () => { 132 | // only install a listener if it is really needed 133 | if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; 134 | 135 | document.addEventListener("keydown", (event) => { 136 | // bail for input elements 137 | if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; 138 | // bail with special keys 139 | if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; 140 | if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { 141 | SphinxHighlight.hideSearchWords(); 142 | event.preventDefault(); 143 | } 144 | }); 145 | }, 146 | }; 147 | 148 | _ready(() => { 149 | /* Do not call highlightSearchWords() when we are on the search page. 150 | * It will highlight words from the *previous* search query. 151 | */ 152 | if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); 153 | SphinxHighlight.initEscapeListener(); 154 | }); 155 | -------------------------------------------------------------------------------- /api_docs/_sources/index.rst.txt: -------------------------------------------------------------------------------- 1 | .. Project AirSim documentation master file 2 | 3 | Client Documentation 4 | ============================================================= 5 | 6 | .. contents:: 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | :caption: Contents: 11 | 12 | 13 | Client 14 | ====== 15 | .. autoclass:: projectairsim.ProjectAirSimClient 16 | :members: 17 | 18 | 19 | World 20 | ===== 21 | .. autoclass:: projectairsim.World 22 | :members: 23 | 24 | 25 | Drone 26 | ====== 27 | .. autoclass:: projectairsim.Drone 28 | :members: 29 | 30 | 31 | Types 32 | ===== 33 | .. automodule:: projectairsim.types 34 | :members: 35 | 36 | 37 | Utils 38 | ===== 39 | .. automodule:: projectairsim.utils 40 | :members: 41 | 42 | 43 | Indices and tables 44 | ================== 45 | 46 | * :ref:`genindex` 47 | * :ref:`modindex` 48 | * :ref:`search` 49 | -------------------------------------------------------------------------------- /api_docs/_static/_sphinx_javascript_frameworks_compat.js: -------------------------------------------------------------------------------- 1 | /* Compatability shim for jQuery and underscores.js. 2 | * 3 | * Copyright Sphinx contributors 4 | * Released under the two clause BSD licence 5 | */ 6 | 7 | /** 8 | * small helper function to urldecode strings 9 | * 10 | * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL 11 | */ 12 | jQuery.urldecode = function(x) { 13 | if (!x) { 14 | return x 15 | } 16 | return decodeURIComponent(x.replace(/\+/g, ' ')); 17 | }; 18 | 19 | /** 20 | * small helper function to urlencode strings 21 | */ 22 | jQuery.urlencode = encodeURIComponent; 23 | 24 | /** 25 | * This function returns the parsed url parameters of the 26 | * current request. Multiple values per key are supported, 27 | * it will always return arrays of strings for the value parts. 28 | */ 29 | jQuery.getQueryParameters = function(s) { 30 | if (typeof s === 'undefined') 31 | s = document.location.search; 32 | var parts = s.substr(s.indexOf('?') + 1).split('&'); 33 | var result = {}; 34 | for (var i = 0; i < parts.length; i++) { 35 | var tmp = parts[i].split('=', 2); 36 | var key = jQuery.urldecode(tmp[0]); 37 | var value = jQuery.urldecode(tmp[1]); 38 | if (key in result) 39 | result[key].push(value); 40 | else 41 | result[key] = [value]; 42 | } 43 | return result; 44 | }; 45 | 46 | /** 47 | * highlight a given string on a jquery object by wrapping it in 48 | * span elements with the given class name. 49 | */ 50 | jQuery.fn.highlightText = function(text, className) { 51 | function highlight(node, addItems) { 52 | if (node.nodeType === 3) { 53 | var val = node.nodeValue; 54 | var pos = val.toLowerCase().indexOf(text); 55 | if (pos >= 0 && 56 | !jQuery(node.parentNode).hasClass(className) && 57 | !jQuery(node.parentNode).hasClass("nohighlight")) { 58 | var span; 59 | var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); 60 | if (isInSVG) { 61 | span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); 62 | } else { 63 | span = document.createElement("span"); 64 | span.className = className; 65 | } 66 | span.appendChild(document.createTextNode(val.substr(pos, text.length))); 67 | node.parentNode.insertBefore(span, node.parentNode.insertBefore( 68 | document.createTextNode(val.substr(pos + text.length)), 69 | node.nextSibling)); 70 | node.nodeValue = val.substr(0, pos); 71 | if (isInSVG) { 72 | var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); 73 | var bbox = node.parentElement.getBBox(); 74 | rect.x.baseVal.value = bbox.x; 75 | rect.y.baseVal.value = bbox.y; 76 | rect.width.baseVal.value = bbox.width; 77 | rect.height.baseVal.value = bbox.height; 78 | rect.setAttribute('class', className); 79 | addItems.push({ 80 | "parent": node.parentNode, 81 | "target": rect}); 82 | } 83 | } 84 | } 85 | else if (!jQuery(node).is("button, select, textarea")) { 86 | jQuery.each(node.childNodes, function() { 87 | highlight(this, addItems); 88 | }); 89 | } 90 | } 91 | var addItems = []; 92 | var result = this.each(function() { 93 | highlight(this, addItems); 94 | }); 95 | for (var i = 0; i < addItems.length; ++i) { 96 | jQuery(addItems[i].parent).before(addItems[i].target); 97 | } 98 | return result; 99 | }; 100 | 101 | /* 102 | * backward compatibility for jQuery.browser 103 | * This will be supported until firefox bug is fixed. 104 | */ 105 | if (!jQuery.browser) { 106 | jQuery.uaMatch = function(ua) { 107 | ua = ua.toLowerCase(); 108 | 109 | var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || 110 | /(webkit)[ \/]([\w.]+)/.exec(ua) || 111 | /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || 112 | /(msie) ([\w.]+)/.exec(ua) || 113 | ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || 114 | []; 115 | 116 | return { 117 | browser: match[ 1 ] || "", 118 | version: match[ 2 ] || "0" 119 | }; 120 | }; 121 | jQuery.browser = {}; 122 | jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; 123 | } 124 | -------------------------------------------------------------------------------- /api_docs/_static/css/badge_only.css: -------------------------------------------------------------------------------- 1 | .clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px} -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/Roboto-Slab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/Roboto-Slab-Bold.woff -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/Roboto-Slab-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/Roboto-Slab-Bold.woff2 -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/Roboto-Slab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/Roboto-Slab-Regular.woff -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/Roboto-Slab-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/Roboto-Slab-Regular.woff2 -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-bold-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-bold-italic.woff -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-bold-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-bold-italic.woff2 -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-bold.woff -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-bold.woff2 -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-normal-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-normal-italic.woff -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-normal-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-normal-italic.woff2 -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-normal.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-normal.woff -------------------------------------------------------------------------------- /api_docs/_static/css/fonts/lato-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/css/fonts/lato-normal.woff2 -------------------------------------------------------------------------------- /api_docs/_static/doctools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Base JavaScript utilities for all Sphinx HTML documentation. 3 | */ 4 | "use strict"; 5 | 6 | const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ 7 | "TEXTAREA", 8 | "INPUT", 9 | "SELECT", 10 | "BUTTON", 11 | ]); 12 | 13 | const _ready = (callback) => { 14 | if (document.readyState !== "loading") { 15 | callback(); 16 | } else { 17 | document.addEventListener("DOMContentLoaded", callback); 18 | } 19 | }; 20 | 21 | /** 22 | * Small JavaScript module for the documentation. 23 | */ 24 | const Documentation = { 25 | init: () => { 26 | Documentation.initDomainIndexTable(); 27 | Documentation.initOnKeyListeners(); 28 | }, 29 | 30 | /** 31 | * i18n support 32 | */ 33 | TRANSLATIONS: {}, 34 | PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), 35 | LOCALE: "unknown", 36 | 37 | // gettext and ngettext don't access this so that the functions 38 | // can safely bound to a different name (_ = Documentation.gettext) 39 | gettext: (string) => { 40 | const translated = Documentation.TRANSLATIONS[string]; 41 | switch (typeof translated) { 42 | case "undefined": 43 | return string; // no translation 44 | case "string": 45 | return translated; // translation exists 46 | default: 47 | return translated[0]; // (singular, plural) translation tuple exists 48 | } 49 | }, 50 | 51 | ngettext: (singular, plural, n) => { 52 | const translated = Documentation.TRANSLATIONS[singular]; 53 | if (typeof translated !== "undefined") 54 | return translated[Documentation.PLURAL_EXPR(n)]; 55 | return n === 1 ? singular : plural; 56 | }, 57 | 58 | addTranslations: (catalog) => { 59 | Object.assign(Documentation.TRANSLATIONS, catalog.messages); 60 | Documentation.PLURAL_EXPR = new Function( 61 | "n", 62 | `return (${catalog.plural_expr})` 63 | ); 64 | Documentation.LOCALE = catalog.locale; 65 | }, 66 | 67 | /** 68 | * helper function to focus on search bar 69 | */ 70 | focusSearchBar: () => { 71 | document.querySelectorAll("input[name=q]")[0]?.focus(); 72 | }, 73 | 74 | /** 75 | * Initialise the domain index toggle buttons 76 | */ 77 | initDomainIndexTable: () => { 78 | const toggler = (el) => { 79 | const idNumber = el.id.substr(7); 80 | const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); 81 | if (el.src.substr(-9) === "minus.png") { 82 | el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; 83 | toggledRows.forEach((el) => (el.style.display = "none")); 84 | } else { 85 | el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; 86 | toggledRows.forEach((el) => (el.style.display = "")); 87 | } 88 | }; 89 | 90 | const togglerElements = document.querySelectorAll("img.toggler"); 91 | togglerElements.forEach((el) => 92 | el.addEventListener("click", (event) => toggler(event.currentTarget)) 93 | ); 94 | togglerElements.forEach((el) => (el.style.display = "")); 95 | if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); 96 | }, 97 | 98 | initOnKeyListeners: () => { 99 | // only install a listener if it is really needed 100 | if ( 101 | !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && 102 | !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS 103 | ) 104 | return; 105 | 106 | document.addEventListener("keydown", (event) => { 107 | // bail for input elements 108 | if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; 109 | // bail with special keys 110 | if (event.altKey || event.ctrlKey || event.metaKey) return; 111 | 112 | if (!event.shiftKey) { 113 | switch (event.key) { 114 | case "ArrowLeft": 115 | if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; 116 | 117 | const prevLink = document.querySelector('link[rel="prev"]'); 118 | if (prevLink && prevLink.href) { 119 | window.location.href = prevLink.href; 120 | event.preventDefault(); 121 | } 122 | break; 123 | case "ArrowRight": 124 | if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; 125 | 126 | const nextLink = document.querySelector('link[rel="next"]'); 127 | if (nextLink && nextLink.href) { 128 | window.location.href = nextLink.href; 129 | event.preventDefault(); 130 | } 131 | break; 132 | } 133 | } 134 | 135 | // some keyboard layouts may need Shift to get / 136 | switch (event.key) { 137 | case "/": 138 | if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; 139 | Documentation.focusSearchBar(); 140 | event.preventDefault(); 141 | } 142 | }); 143 | }, 144 | }; 145 | 146 | // quick alias for translations 147 | const _ = Documentation.gettext; 148 | 149 | _ready(Documentation.init); 150 | -------------------------------------------------------------------------------- /api_docs/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | const DOCUMENTATION_OPTIONS = { 2 | VERSION: '', 3 | LANGUAGE: 'en', 4 | COLLAPSE_INDEX: false, 5 | BUILDER: 'html', 6 | FILE_SUFFIX: '.html', 7 | LINK_SUFFIX: '.html', 8 | HAS_SOURCE: true, 9 | SOURCELINK_SUFFIX: '.txt', 10 | NAVIGATION_WITH_KEYS: false, 11 | SHOW_SEARCH_SUMMARY: true, 12 | ENABLE_SEARCH_SHORTCUTS: true, 13 | }; -------------------------------------------------------------------------------- /api_docs/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/file.png -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bold.eot -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bold.ttf -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bold.woff -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bold.woff2 -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bolditalic.eot -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bolditalic.ttf -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bolditalic.woff -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-bolditalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-bolditalic.woff2 -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-italic.eot -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-italic.ttf -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-italic.woff -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-italic.woff2 -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-regular.eot -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-regular.ttf -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-regular.woff -------------------------------------------------------------------------------- /api_docs/_static/fonts/Lato/lato-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/Lato/lato-regular.woff2 -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff -------------------------------------------------------------------------------- /api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamaisim/ProjectAirSim/bf77b59d5a82f7920e49201517c7d711c851831a/api_docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 -------------------------------------------------------------------------------- /api_docs/_static/js/badge_only.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); -------------------------------------------------------------------------------- /api_docs/_static/js/theme.js: -------------------------------------------------------------------------------- 1 | !function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap(""),n("table.docutils.footnote").wrap(""),n("table.docutils.citation").wrap(""),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t80 | p | ||
84 | |
85 | projectairsim | 86 | |
89 | |
90 | projectairsim.types | 91 | |
94 | |
95 | projectairsim.utils | 96 | |