diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 01260d75e9..537422de10 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -6,7 +6,7 @@ about: Create a report to help us improve
-
+
## Bug report
diff --git a/.github/workflows/clang_format.yml b/.github/workflows/clang_format.yml
index c2dd6cddd9..c6b7e00211 100644
--- a/.github/workflows/clang_format.yml
+++ b/.github/workflows/clang_format.yml
@@ -5,7 +5,7 @@ jobs:
name: Formatting Check
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Run clang-format style check for C/C++ programs.
uses: jidicula/clang-format-action@v4.4.1
with:
diff --git a/.github/workflows/test_docs.yml b/.github/workflows/test_docs.yml
index 7e43a4d07a..587740bf57 100644
--- a/.github/workflows/test_docs.yml
+++ b/.github/workflows/test_docs.yml
@@ -8,10 +8,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v4
with:
python-version: '3.7'
architecture: 'x64'
@@ -37,10 +37,10 @@ jobs:
- name: Build AirSim Documentation
run: ./build_docs.sh
- # Only on commits to 'master' branch
+ # Only on commits to 'main' branch
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
- if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+ if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build_docs
diff --git a/.github/workflows/test_macos.yml b/.github/workflows/test_macos.yml
index 147247b507..7259ebc9e8 100644
--- a/.github/workflows/test_macos.yml
+++ b/.github/workflows/test_macos.yml
@@ -12,7 +12,7 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup
run: ./setup.sh
diff --git a/.github/workflows/test_ubuntu.yml b/.github/workflows/test_ubuntu.yml
index 9a4348ca6b..446a9579f5 100644
--- a/.github/workflows/test_ubuntu.yml
+++ b/.github/workflows/test_ubuntu.yml
@@ -11,7 +11,7 @@ jobs:
os: [ubuntu-18.04, ubuntu-20.04]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup
run: ./setup.sh
diff --git a/.github/workflows/test_windows.yml b/.github/workflows/test_windows.yml
index 473ae70941..80acfc2ca4 100644
--- a/.github/workflows/test_windows.yml
+++ b/.github/workflows/test_windows.yml
@@ -5,11 +5,11 @@ on: [push, pull_request, workflow_dispatch]
jobs:
build:
- runs-on: windows-2019
+ runs-on: windows-2022
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Enable Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1
diff --git a/AirLib/AirLib.vcxproj b/AirLib/AirLib.vcxproj
index bb1c4f4a95..0e6d1b948f 100644
--- a/AirLib/AirLib.vcxproj
+++ b/AirLib/AirLib.vcxproj
@@ -205,40 +205,40 @@
StaticLibrarytrue
- v142
+ v143UnicodeStaticLibraryfalse
- v142
+ v143trueUnicodeStaticLibraryfalse
- v142
+ v143trueUnicodeStaticLibrarytrue
- v142
+ v143UnicodeStaticLibraryfalse
- v142
+ v143trueUnicodeStaticLibraryfalse
- v142
+ v143trueUnicode
diff --git a/AirLib/include/api/RpcLibClientBase.hpp b/AirLib/include/api/RpcLibClientBase.hpp
index 45669d1c99..6887dcf57c 100644
--- a/AirLib/include/api/RpcLibClientBase.hpp
+++ b/AirLib/include/api/RpcLibClientBase.hpp
@@ -162,8 +162,8 @@ namespace airlib
void simSetKinematics(const Kinematics::State& state, bool ignore_collision, const std::string& vehicle_name = "");
msr::airlib::Environment::State simGetGroundTruthEnvironment(const std::string& vehicle_name = "") const;
std::vector simSwapTextures(const std::string& tags, int tex_id = 0, int component_id = 0, int material_id = 0);
- bool simSetObjectMaterial(const std::string& object_name, const std::string& material_name);
- bool simSetObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path);
+ bool simSetObjectMaterial(const std::string& object_name, const std::string& material_name, const int component_id = 0);
+ bool simSetObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path, const int component_id = 0);
// Recording APIs
void startRecording();
diff --git a/AirLib/include/api/WorldSimApiBase.hpp b/AirLib/include/api/WorldSimApiBase.hpp
index a7a15fca89..db1e5518b4 100644
--- a/AirLib/include/api/WorldSimApiBase.hpp
+++ b/AirLib/include/api/WorldSimApiBase.hpp
@@ -78,8 +78,8 @@ namespace airlib
virtual bool setObjectScale(const std::string& object_name, const Vector3r& scale) = 0;
virtual std::unique_ptr> swapTextures(const std::string& tag, int tex_id = 0, int component_id = 0, int material_id = 0) = 0;
virtual bool setLightIntensity(const std::string& light_name, float intensity) = 0;
- virtual bool setObjectMaterial(const std::string& object_name, const std::string& material_name) = 0;
- virtual bool setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path) = 0;
+ virtual bool setObjectMaterial(const std::string& object_name, const std::string& material_name, const int component_id = 0) = 0;
+ virtual bool setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path, const int component_id = 0) = 0;
virtual vector getMeshPositionVertexBuffers() const = 0;
virtual bool createVoxelGrid(const Vector3r& position, const int& x_size, const int& y_size, const int& z_size, const float& res, const std::string& output_file) = 0;
diff --git a/AirLib/include/common/AirSimSettings.hpp b/AirLib/include/common/AirSimSettings.hpp
index 7977813ad4..e5442ff223 100644
--- a/AirLib/include/common/AirSimSettings.hpp
+++ b/AirLib/include/common/AirSimSettings.hpp
@@ -471,7 +471,7 @@ namespace airlib
Settings& settings_json = Settings::singleton();
//write some settings_json in new file otherwise the string "null" is written if all settings_json are empty
- settings_json.setString("SeeDocsAt", "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md");
+ settings_json.setString("SeeDocsAt", "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md");
settings_json.setDouble("SettingsVersion", 1.2);
std::string settings_filename = Settings::getUserDirectoryFullPath("settings.json");
diff --git a/AirLib/src/api/RpcLibClientBase.cpp b/AirLib/src/api/RpcLibClientBase.cpp
index 73ce72eba3..9ce96e0019 100644
--- a/AirLib/src/api/RpcLibClientBase.cpp
+++ b/AirLib/src/api/RpcLibClientBase.cpp
@@ -534,14 +534,14 @@ __pragma(warning(disable : 4239))
return pimpl_->client.call("simSwapTextures", tags, tex_id, component_id, material_id).as>();
}
- bool RpcLibClientBase::simSetObjectMaterial(const std::string& object_name, const std::string& material_name)
+ bool RpcLibClientBase::simSetObjectMaterial(const std::string& object_name, const std::string& material_name, const int component_id)
{
- return pimpl_->client.call("simSetObjectMaterial", object_name, material_name).as();
+ return pimpl_->client.call("simSetObjectMaterial", object_name, material_name, component_id).as();
}
- bool RpcLibClientBase::simSetObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path)
+ bool RpcLibClientBase::simSetObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path, const int component_id)
{
- return pimpl_->client.call("simSetObjectMaterialFromTexture", object_name, texture_path).as();
+ return pimpl_->client.call("simSetObjectMaterialFromTexture", object_name, texture_path, component_id).as();
}
bool RpcLibClientBase::simLoadLevel(const string& level_name)
diff --git a/AirLib/src/api/RpcLibServerBase.cpp b/AirLib/src/api/RpcLibServerBase.cpp
index 9b01650a91..d74acbb897 100644
--- a/AirLib/src/api/RpcLibServerBase.cpp
+++ b/AirLib/src/api/RpcLibServerBase.cpp
@@ -508,12 +508,12 @@ namespace airlib
return *getWorldSimApi()->swapTextures(tag, tex_id, component_id, material_id);
});
- pimpl_->server.bind("simSetObjectMaterial", [&](const std::string& object_name, const std::string& material_name) -> bool {
- return getWorldSimApi()->setObjectMaterial(object_name, material_name);
+ pimpl_->server.bind("simSetObjectMaterial", [&](const std::string& object_name, const std::string& material_name, const int component_id) -> bool {
+ return getWorldSimApi()->setObjectMaterial(object_name, material_name, component_id);
});
- pimpl_->server.bind("simSetObjectMaterialFromTexture", [&](const std::string& object_name, const std::string& texture_path) -> bool {
- return getWorldSimApi()->setObjectMaterialFromTexture(object_name, texture_path);
+ pimpl_->server.bind("simSetObjectMaterialFromTexture", [&](const std::string& object_name, const std::string& texture_path, const int component_id) -> bool {
+ return getWorldSimApi()->setObjectMaterialFromTexture(object_name, texture_path, component_id);
});
pimpl_->server.bind("startRecording", [&]() -> void {
diff --git a/AirLibUnitTests/AirLibUnitTests.vcxproj b/AirLibUnitTests/AirLibUnitTests.vcxproj
index 35c5bcce82..29a618edb6 100644
--- a/AirLibUnitTests/AirLibUnitTests.vcxproj
+++ b/AirLibUnitTests/AirLibUnitTests.vcxproj
@@ -39,40 +39,40 @@
Applicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicode
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6545cf2c09..cffbb5d544 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,3 @@
# Changelog
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/CHANGELOG.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/CHANGELOG.md).
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 99687b2855..c681a17f92 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,3 +1,3 @@
# Contributing
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/CONTRIBUTING.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/CONTRIBUTING.md).
\ No newline at end of file
diff --git a/DroneServer/DroneServer.vcxproj b/DroneServer/DroneServer.vcxproj
index 4c6eba6c89..df280d4804 100644
--- a/DroneServer/DroneServer.vcxproj
+++ b/DroneServer/DroneServer.vcxproj
@@ -47,40 +47,40 @@
Applicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicode
diff --git a/DroneShell/DroneShell.vcxproj b/DroneShell/DroneShell.vcxproj
index 7e5d849d75..ed2b265be3 100644
--- a/DroneShell/DroneShell.vcxproj
+++ b/DroneShell/DroneShell.vcxproj
@@ -39,40 +39,40 @@
Applicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicode
diff --git a/Examples/DataCollection/DataCollectorSGM_settings.json b/Examples/DataCollection/DataCollectorSGM_settings.json
index 47002ea8a9..8f074a4b18 100644
--- a/Examples/DataCollection/DataCollectorSGM_settings.json
+++ b/Examples/DataCollection/DataCollectorSGM_settings.json
@@ -1,5 +1,5 @@
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "ComputerVision",
"CameraDefaults": {
diff --git a/Examples/DepthNav/DepthNav_settings.json b/Examples/DepthNav/DepthNav_settings.json
index 686f697349..f8f79d5bbd 100644
--- a/Examples/DepthNav/DepthNav_settings.json
+++ b/Examples/DepthNav/DepthNav_settings.json
@@ -1,5 +1,5 @@
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "ComputerVision",
"CameraDefaults": {
diff --git a/Examples/Examples.vcxproj b/Examples/Examples.vcxproj
index 118dae6193..4088abf9f1 100644
--- a/Examples/Examples.vcxproj
+++ b/Examples/Examples.vcxproj
@@ -53,40 +53,40 @@
Applicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicode
diff --git a/GazeboDrone/README.md b/GazeboDrone/README.md
index 22f89a7d6d..1d607013b6 100644
--- a/GazeboDrone/README.md
+++ b/GazeboDrone/README.md
@@ -1,3 +1,3 @@
# Welcome to GazeboDrone
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/gazebo_drone.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/gazebo_drone.md).
\ No newline at end of file
diff --git a/HelloCar/HelloCar.vcxproj b/HelloCar/HelloCar.vcxproj
index 24db5b3e76..f6efb33118 100644
--- a/HelloCar/HelloCar.vcxproj
+++ b/HelloCar/HelloCar.vcxproj
@@ -1,280 +1,280 @@
-
-
-
-
- true
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
- RelWithDebInfo
- Win32
-
-
- RelWithDebInfo
- x64
-
-
-
-
-
-
-
- {4bfb7231-077a-4671-bd21-d3ade3ea36e7}
-
-
- {8510c7a4-bf63-41d2-94f6-d8731d137a5a}
-
-
-
- {4358ED90-CCA1-47A8-8D68-A260F212931E}
- Win32Proj
- HelloCar
-
-
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- $(ProjectDir)build\$(Platform)\$(Configuration)\
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
-
-
- true
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
- $(ProjectDir)build\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)build\$(Platform)\$(Configuration)\
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)build\$(Platform)\$(Configuration)\
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
- $(ProjectDir)build\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
- $(ProjectDir)build\$(Platform)\$(Configuration)\
-
-
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
- true
- /w34263 /w34266 %(AdditionalOptions)
- stdcpp17
-
-
- Console
- true
- rpc.lib;%(AdditionalDependencies)
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
-
-
-
-
-
-
- Level4
- Disabled
- _SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
- true
- /w34263 /w34266 %(AdditionalOptions)
- 4100;4505;4820;4464;4514;4710;4571;%(DisableSpecificWarnings)
- stdcpp17
-
-
- Console
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;%(AdditionalDependencies)
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
- true
- /w34263 /w34266 %(AdditionalOptions)
- stdcpp17
-
-
- Console
- true
- true
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;%(AdditionalDependencies)
-
-
-
-
- Level3
-
-
- Disabled
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
- true
- /w34263 /w34266 %(AdditionalOptions)
- stdcpp17
- false
-
-
- Console
- true
- true
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;%(AdditionalDependencies)
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
- true
- /w34263 /w34266 %(AdditionalOptions)
- stdcpp17
-
-
- Console
- true
- true
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;%(AdditionalDependencies)
-
-
-
-
- Level3
-
-
- Disabled
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
- true
- /w34263 /w34266 %(AdditionalOptions)
- stdcpp17
- false
-
-
- Console
- true
- true
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;%(AdditionalDependencies)
-
-
-
-
-
+
+
+
+
+ true
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ RelWithDebInfo
+ Win32
+
+
+ RelWithDebInfo
+ x64
+
+
+
+
+
+
+
+ {4bfb7231-077a-4671-bd21-d3ade3ea36e7}
+
+
+ {8510c7a4-bf63-41d2-94f6-d8731d137a5a}
+
+
+
+ {4358ED90-CCA1-47A8-8D68-A260F212931E}
+ Win32Proj
+ HelloCar
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ true
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+ true
+ /w34263 /w34266 %(AdditionalOptions)
+ stdcpp17
+
+
+ Console
+ true
+ rpc.lib;%(AdditionalDependencies)
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+
+
+
+
+
+
+ Level4
+ Disabled
+ _SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+ true
+ /w34263 /w34266 %(AdditionalOptions)
+ 4100;4505;4820;4464;4514;4710;4571;%(DisableSpecificWarnings)
+ stdcpp17
+
+
+ Console
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+ true
+ /w34263 /w34266 %(AdditionalOptions)
+ stdcpp17
+
+
+ Console
+ true
+ true
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+
+
+ Disabled
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+ true
+ /w34263 /w34266 %(AdditionalOptions)
+ stdcpp17
+ false
+
+
+ Console
+ true
+ true
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+ true
+ /w34263 /w34266 %(AdditionalOptions)
+ stdcpp17
+
+
+ Console
+ true
+ true
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+
+
+ Disabled
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+ true
+ /w34263 /w34266 %(AdditionalOptions)
+ stdcpp17
+ false
+
+
+ Console
+ true
+ true
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;%(AdditionalDependencies)
+
+
+
+
+
\ No newline at end of file
diff --git a/HelloDrone/HelloDrone.vcxproj b/HelloDrone/HelloDrone.vcxproj
index 13da80be32..5be3a8e1b2 100644
--- a/HelloDrone/HelloDrone.vcxproj
+++ b/HelloDrone/HelloDrone.vcxproj
@@ -50,40 +50,40 @@
Applicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationtrue
- v142
+ v143UnicodeApplicationfalse
- v142
+ v143trueUnicodeApplicationfalse
- v142
+ v143trueUnicode
diff --git a/HelloSpawnedDrones/HelloSpawnedDrones.vcxproj b/HelloSpawnedDrones/HelloSpawnedDrones.vcxproj
index 94f159a800..16caf34f0d 100644
--- a/HelloSpawnedDrones/HelloSpawnedDrones.vcxproj
+++ b/HelloSpawnedDrones/HelloSpawnedDrones.vcxproj
@@ -1,256 +1,256 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
- RelWithDebInfo
- Win32
-
-
- RelWithDebInfo
- x64
-
-
-
-
- {4bfb7231-077a-4671-bd21-d3ade3ea36e7}
-
-
- {8510c7a4-bf63-41d2-94f6-d8731d137a5a}
-
-
-
- 15.0
- {99CBF376-5EBA-4164-A657-E7D708C9D685}
- Win32Proj
- HelloSpawnedDrones
- 10.0
-
-
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- $(ProjectDir)build\$(Platform)\$(Configuration)\
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
-
-
- true
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
- $(ProjectDir)build\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)build\$(Platform)\$(Configuration)\
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)build\$(Platform)\$(Configuration)\
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
- $(ProjectDir)build\$(Platform)\$(Configuration)\
-
-
- false
- $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
- $(ProjectDir)build\$(Platform)\$(Configuration)\
-
-
-
- NotUsing
- Level3
- Disabled
- true
- _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
-
-
- Console
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;AirLib.lib;%(AdditionalDependencies)
-
-
-
-
- NotUsing
- Level3
- Disabled
- true
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- true
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
- Use
- Level3
- Disabled
- true
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- false
-
-
- Console
- true
- true
- true
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- true
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
-
-
- Console
- true
- true
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;AirLib.lib;%(AdditionalDependencies)
-
-
-
-
- NotUsing
- Level3
- Disabled
- true
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
- false
-
-
- Console
- true
- true
- true
- $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- rpc.lib;AirLib.lib;%(AdditionalDependencies)
-
-
-
-
-
-
-
-
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ RelWithDebInfo
+ Win32
+
+
+ RelWithDebInfo
+ x64
+
+
+
+
+ {4bfb7231-077a-4671-bd21-d3ade3ea36e7}
+
+
+ {8510c7a4-bf63-41d2-94f6-d8731d137a5a}
+
+
+
+ 15.0
+ {99CBF376-5EBA-4164-A657-E7D708C9D685}
+ Win32Proj
+ HelloSpawnedDrones
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ true
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+
+
+ false
+ $(ProjectDir)temp\$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectDir)build\$(Platform)\$(Configuration)\
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+
+
+ Console
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;AirLib.lib;%(AdditionalDependencies)
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ false
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+
+
+ Console
+ true
+ true
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;AirLib.lib;%(AdditionalDependencies)
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ $(ProjectDir)..\AirLib\deps\rpclib\include;include;$(ProjectDir)..\AirLib\deps\eigen3;$(ProjectDir)..\AirLib\include
+ false
+
+
+ Console
+ true
+ true
+ true
+ $(ProjectDir)\..\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\deps\rpclib\lib\$(Platform)\$(Configuration);$(ProjectDir)\..\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ rpc.lib;AirLib.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LogViewer/LogViewer/packages.config b/LogViewer/LogViewer/packages.config
index eb534d49cb..201c7de76d 100644
--- a/LogViewer/LogViewer/packages.config
+++ b/LogViewer/LogViewer/packages.config
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/LogViewer/Networking/packages.config b/LogViewer/Networking/packages.config
index 6576d885b6..6f34a11d94 100644
--- a/LogViewer/Networking/packages.config
+++ b/LogViewer/Networking/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/MavLinkCom/MavLinkCom.vcxproj b/MavLinkCom/MavLinkCom.vcxproj
index 58303aa002..c0d02931f6 100644
--- a/MavLinkCom/MavLinkCom.vcxproj
+++ b/MavLinkCom/MavLinkCom.vcxproj
@@ -3,7 +3,7 @@
true
- v142
+ v143
diff --git a/MavLinkCom/MavLinkMoCap/Readme.md b/MavLinkCom/MavLinkMoCap/Readme.md
index 073408f79f..32d47cdec6 100644
--- a/MavLinkCom/MavLinkMoCap/Readme.md
+++ b/MavLinkCom/MavLinkMoCap/Readme.md
@@ -1,3 +1,3 @@
# Welcome to MavLinkMoCap
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/mavlinkcom_mocap.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/mavlinkcom_mocap.md).
\ No newline at end of file
diff --git a/MavLinkCom/MavLinkTest/MavLinkTest.vcxproj b/MavLinkCom/MavLinkTest/MavLinkTest.vcxproj
index 24c4545ad7..86723de84d 100644
--- a/MavLinkCom/MavLinkTest/MavLinkTest.vcxproj
+++ b/MavLinkCom/MavLinkTest/MavLinkTest.vcxproj
@@ -40,7 +40,7 @@
- v142
+ v143{25EB67BE-468A-4AA5-910F-07EFD58C5516}
diff --git a/MavLinkCom/README.md b/MavLinkCom/README.md
index 6bd67cea31..23560fceb4 100644
--- a/MavLinkCom/README.md
+++ b/MavLinkCom/README.md
@@ -1,3 +1,3 @@
# Welcome to MavLinkCom
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/mavlinkcom.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/mavlinkcom.md).
\ No newline at end of file
diff --git a/PythonClient/README.md b/PythonClient/README.md
index a5ec115d93..b9e32423db 100644
--- a/PythonClient/README.md
+++ b/PythonClient/README.md
@@ -3,7 +3,7 @@
This package contains Python APIs for [AirSim](https://github.com/microsoft/airsim).
## How to Use
-See examples at [car/hello_car.py](https://github.com/Microsoft/AirSim/blob/master/PythonClient/car/hello_car.py) or [multirotor/hello_drone.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/hello_drone.py).
+See examples at [car/hello_car.py](https://github.com/Microsoft/AirSim/blob/main/PythonClient/car/hello_car.py) or [multirotor/hello_drone.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/hello_drone.py).
## Dependencies
This package depends on `msgpack` and would automatically install `msgpack-rpc-python` (this may need administrator/sudo prompt):
@@ -16,5 +16,5 @@ Some examples also requires opencv.
## More Info
More information on AirSim Python APIs can be found at:
-https://github.com/Microsoft/AirSim/blob/master/docs/python.md
+https://github.com/Microsoft/AirSim/blob/main/docs/python.md
diff --git a/PythonClient/airsim/__init__.py b/PythonClient/airsim/__init__.py
index a11c8fe3d0..17f3acac11 100644
--- a/PythonClient/airsim/__init__.py
+++ b/PythonClient/airsim/__init__.py
@@ -2,4 +2,4 @@
from .utils import *
from .types import *
-__version__ = "1.7.0"
+__version__ = "1.8.1"
diff --git a/PythonClient/airsim/client.py b/PythonClient/airsim/client.py
index bcda726478..4f139ac552 100644
--- a/PythonClient/airsim/client.py
+++ b/PythonClient/airsim/client.py
@@ -190,31 +190,33 @@ def simSwapTextures(self, tags, tex_id = 0, component_id = 0, material_id = 0):
"""
return self.client.call("simSwapTextures", tags, tex_id, component_id, material_id)
- def simSetObjectMaterial(self, object_name, material_name):
+ def simSetObjectMaterial(self, object_name, material_name, component_id = 0):
"""
Runtime Swap Texture API
See https://microsoft.github.io/AirSim/retexturing/ for details
Args:
object_name (str): name of object to set material for
material_name (str): name of material to set for object
+ component_id (int, optional) : index of material elements
Returns:
bool: True if material was set
"""
- return self.client.call("simSetObjectMaterial", object_name, material_name)
+ return self.client.call("simSetObjectMaterial", object_name, material_name, component_id)
- def simSetObjectMaterialFromTexture(self, object_name, texture_path):
+ def simSetObjectMaterialFromTexture(self, object_name, texture_path, component_id = 0):
"""
Runtime Swap Texture API
See https://microsoft.github.io/AirSim/retexturing/ for details
Args:
object_name (str): name of object to set material for
texture_path (str): path to texture to set for object
+ component_id (int, optional) : index of material elements
Returns:
bool: True if material was set
"""
- return self.client.call("simSetObjectMaterialFromTexture", object_name, texture_path)
+ return self.client.call("simSetObjectMaterialFromTexture", object_name, texture_path, component_id)
# time-of-day control
@@ -1616,4 +1618,4 @@ def getCarControls(self, vehicle_name=''):
CarControls:
"""
controls_raw = self.client.call('getCarControls', vehicle_name)
- return CarControls.from_msgpack(controls_raw)
+ return CarControls.from_msgpack(controls_raw)
\ No newline at end of file
diff --git a/PythonClient/computer_vision/cv_capture.py b/PythonClient/computer_vision/cv_capture.py
index 1ee625f82b..2701ce3009 100644
--- a/PythonClient/computer_vision/cv_capture.py
+++ b/PythonClient/computer_vision/cv_capture.py
@@ -1,5 +1,5 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import setup_path
import airsim
diff --git a/PythonClient/computer_vision/cv_mode.py b/PythonClient/computer_vision/cv_mode.py
index 66bca0c97a..3c05e08709 100644
--- a/PythonClient/computer_vision/cv_mode.py
+++ b/PythonClient/computer_vision/cv_mode.py
@@ -1,5 +1,5 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import setup_path
import airsim
diff --git a/PythonClient/computer_vision/cv_navigate.py b/PythonClient/computer_vision/cv_navigate.py
index 2a9bd5c113..592190f1a6 100644
--- a/PythonClient/computer_vision/cv_navigate.py
+++ b/PythonClient/computer_vision/cv_navigate.py
@@ -1,6 +1,6 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import setup_path
import airsim
diff --git a/PythonClient/computer_vision/getpos.py b/PythonClient/computer_vision/getpos.py
index 8304d429ee..52783e744e 100644
--- a/PythonClient/computer_vision/getpos.py
+++ b/PythonClient/computer_vision/getpos.py
@@ -1,5 +1,5 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import setup_path
import airsim
diff --git a/PythonClient/computer_vision/ground_truth.py b/PythonClient/computer_vision/ground_truth.py
index 5e04f12622..32c63796c6 100644
--- a/PythonClient/computer_vision/ground_truth.py
+++ b/PythonClient/computer_vision/ground_truth.py
@@ -1,5 +1,5 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import setup_path
import airsim
diff --git a/PythonClient/computer_vision/objects.py b/PythonClient/computer_vision/objects.py
index 09f61831cb..f5356c31cf 100644
--- a/PythonClient/computer_vision/objects.py
+++ b/PythonClient/computer_vision/objects.py
@@ -1,5 +1,5 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import setup_path
import airsim
diff --git a/PythonClient/computer_vision/segmentation.py b/PythonClient/computer_vision/segmentation.py
index 520dfa0270..8a6a550fb5 100644
--- a/PythonClient/computer_vision/segmentation.py
+++ b/PythonClient/computer_vision/segmentation.py
@@ -1,5 +1,5 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import airsim
import cv2
diff --git a/PythonClient/multirotor/multi_agent_drone.py b/PythonClient/multirotor/multi_agent_drone.py
index bfd044c3f2..2338b14962 100644
--- a/PythonClient/multirotor/multi_agent_drone.py
+++ b/PythonClient/multirotor/multi_agent_drone.py
@@ -9,7 +9,7 @@
# Use below in settings.json with Blocks environment
"""
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"ClockSpeed": 1,
diff --git a/PythonClient/multirotor/opencv_show.py b/PythonClient/multirotor/opencv_show.py
index e8efd1279b..75a5e48627 100644
--- a/PythonClient/multirotor/opencv_show.py
+++ b/PythonClient/multirotor/opencv_show.py
@@ -1,5 +1,5 @@
# In settings.json first activate computer vision mode:
-# https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md#computer-vision-mode
+# https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode
import setup_path
import airsim
diff --git a/PythonClient/multirotor/sensorframe_lidar_pointcloud.py b/PythonClient/multirotor/sensorframe_lidar_pointcloud.py
index 12af0be383..10e11d41a7 100644
--- a/PythonClient/multirotor/sensorframe_lidar_pointcloud.py
+++ b/PythonClient/multirotor/sensorframe_lidar_pointcloud.py
@@ -3,7 +3,7 @@
# Sample settings.json used for this script:
'''
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings_json.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings_json.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
diff --git a/PythonClient/multirotor/vehicleframe_lidar_pointcloud.py b/PythonClient/multirotor/vehicleframe_lidar_pointcloud.py
index 3aa92b9508..e4f50bf7e4 100644
--- a/PythonClient/multirotor/vehicleframe_lidar_pointcloud.py
+++ b/PythonClient/multirotor/vehicleframe_lidar_pointcloud.py
@@ -3,7 +3,7 @@
# Sample settings.json used for this script:
'''
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings_json.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings_json.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000000..766e6f8878
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,41 @@
+
+
+## Security
+
+Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
+
+If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
+
+If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/msrc/pgp-key-msrc).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+ * Full paths of source file(s) related to the manifestation of the issue
+ * The location of the affected source code (tag/branch/commit or direct URL)
+ * Any special configuration required to reproduce the issue
+ * Step-by-step instructions to reproduce the issue
+ * Proof-of-concept or exploit code (if possible)
+ * Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
+
+## Preferred Languages
+
+We prefer all communications to be in English.
+
+## Policy
+
+Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/msrc/cvd).
+
+
diff --git a/SGM/src/sgmstereo/sgmstereo.vcxproj b/SGM/src/sgmstereo/sgmstereo.vcxproj
index 898926b6ba..2352230f22 100644
--- a/SGM/src/sgmstereo/sgmstereo.vcxproj
+++ b/SGM/src/sgmstereo/sgmstereo.vcxproj
@@ -1,200 +1,200 @@
-
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
- RelWithDebInfo
- Win32
-
-
- RelWithDebInfo
- x64
-
-
-
-
-
-
-
-
-
-
-
- {A01E543F-EF34-46BB-8F3F-29AB84E7A5D4}
- Features
- SAK
- SAK
- SAK
- SAK
- sgmstereo
-
-
-
- StaticLibrary
- Unicode
- true
- v142
-
-
- StaticLibrary
- Unicode
- true
- v142
-
-
- StaticLibrary
- Unicode
- true
- v142
-
-
- StaticLibrary
- Unicode
- true
- v142
-
-
- StaticLibrary
- Unicode
- v142
-
-
- StaticLibrary
- Unicode
- v142
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
-
-
-
- Disabled
- VRLib\inc\VRLibCore;VRLib\inc\VRLibCV;VRLib\inc\VRLibImageIO;LibJpeg\inc;LibTiff\inc;%(AdditionalIncludeDirectories)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
- true
- Level4
- ProgramDatabase
- VRLIB_USES_LIBTIFF;VRLIB_USES_LIBJPEG;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
- false
-
-
-
-
- Disabled
- %(AdditionalIncludeDirectories)
- EnableFastChecks
- MultiThreadedDebugDLL
- true
- Level4
- ProgramDatabase
- NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
-
-
-
-
- MaxSpeed
- false
- VRLib\inc\VRLibCore;VRLib\inc\VRLibCV;VRLib\inc\VRLibImageIO;LibJpeg\inc;LibTiff\inc;%(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
- Level4
- ProgramDatabase
- VRLIB_USES_LIBTIFF;VRLIB_USES_LIBJPEG;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
- false
-
-
-
-
- Disabled
- false
- VRLib\inc\VRLibCore;VRLib\inc\VRLibCV;VRLib\inc\VRLibImageIO;LibJpeg\inc;LibTiff\inc;%(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
- Level4
- ProgramDatabase
- VRLIB_USES_LIBTIFF;VRLIB_USES_LIBJPEG;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
- false
-
-
-
-
- MaxSpeed
- false
- %(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
- Level4
- ProgramDatabase
- NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
- true
-
-
-
-
- Disabled
- false
- %(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
- Level4
- ProgramDatabase
- NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
- true
-
-
-
-
-
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+ RelWithDebInfo
+ Win32
+
+
+ RelWithDebInfo
+ x64
+
+
+
+
+
+
+
+
+
+
+
+ {A01E543F-EF34-46BB-8F3F-29AB84E7A5D4}
+ Features
+ SAK
+ SAK
+ SAK
+ SAK
+ sgmstereo
+
+
+
+ StaticLibrary
+ Unicode
+ true
+ v143
+
+
+ StaticLibrary
+ Unicode
+ true
+ v143
+
+
+ StaticLibrary
+ Unicode
+ true
+ v143
+
+
+ StaticLibrary
+ Unicode
+ true
+ v143
+
+
+ StaticLibrary
+ Unicode
+ v143
+
+
+ StaticLibrary
+ Unicode
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
+
+ Disabled
+ VRLib\inc\VRLibCore;VRLib\inc\VRLibCV;VRLib\inc\VRLibImageIO;LibJpeg\inc;LibTiff\inc;%(AdditionalIncludeDirectories)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ true
+ Level4
+ ProgramDatabase
+ VRLIB_USES_LIBTIFF;VRLIB_USES_LIBJPEG;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+ false
+
+
+
+
+ Disabled
+ %(AdditionalIncludeDirectories)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ true
+ Level4
+ ProgramDatabase
+ NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+
+
+
+
+ MaxSpeed
+ false
+ VRLib\inc\VRLibCore;VRLib\inc\VRLibCV;VRLib\inc\VRLibImageIO;LibJpeg\inc;LibTiff\inc;%(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+ Level4
+ ProgramDatabase
+ VRLIB_USES_LIBTIFF;VRLIB_USES_LIBJPEG;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+ false
+
+
+
+
+ Disabled
+ false
+ VRLib\inc\VRLibCore;VRLib\inc\VRLibCV;VRLib\inc\VRLibImageIO;LibJpeg\inc;LibTiff\inc;%(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+ Level4
+ ProgramDatabase
+ VRLIB_USES_LIBTIFF;VRLIB_USES_LIBJPEG;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+ false
+
+
+
+
+ MaxSpeed
+ false
+ %(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+ Level4
+ ProgramDatabase
+ NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+ true
+
+
+
+
+ Disabled
+ false
+ %(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+ Level4
+ ProgramDatabase
+ NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/SGM/src/stereoPipeline/stereoPipeline.vcxproj b/SGM/src/stereoPipeline/stereoPipeline.vcxproj
index 48f41d4ecd..322c6145a6 100644
--- a/SGM/src/stereoPipeline/stereoPipeline.vcxproj
+++ b/SGM/src/stereoPipeline/stereoPipeline.vcxproj
@@ -1,264 +1,264 @@
-
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
- RelWithDebInfo
- Win32
-
-
- RelWithDebInfo
- x64
-
-
-
-
-
-
-
-
-
-
- {E512EB59-4EAB-49D1-9174-0CAF1B40CED0}
- Win32Proj
- epnp
- stereoPipeline
-
-
-
- StaticLibrary
- true
- Unicode
- v142
-
-
- StaticLibrary
- true
- Unicode
- v142
-
-
- StaticLibrary
- false
- true
- Unicode
- v142
-
-
- StaticLibrary
- false
- true
- Unicode
- v142
-
-
- StaticLibrary
- false
- true
- Unicode
- v142
-
-
- StaticLibrary
- false
- true
- Unicode
- v142
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- ..\..\..\..\d\d;..\..\..\..\VisionTools\inc;$(IncludePath)
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
-
-
- true
- ..\..\..\..\d\d;..\..\..\..\VisionTools\inc;$(IncludePath)
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
-
-
- false
- $(SolutionDir)dep\sunflower\inc;$(SolutionDir)dep\VisionTools\inc;$(SolutionDir)dep\d\d;$(IncludePath)
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
-
-
- false
- $(SolutionDir)dep\sunflower\inc;$(SolutionDir)dep\VisionTools\inc;$(SolutionDir)dep\d\d;$(IncludePath)
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
-
-
- false
- $(IncludePath)
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
-
-
- false
- $(IncludePath)
- ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
- ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
-
-
-
- Create
- Level4
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- ..\sgmstereo;%(AdditionalIncludeDirectories)
- MultiThreadedDebugDLL
- true
-
-
- Console
- true
-
-
-
-
- NotUsing
- Level4
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- ..\sgmstereo;%(AdditionalIncludeDirectories)
- MultiThreadedDebugDLL
- true
- true
-
-
- Console
- true
-
-
-
-
- Level4
- Create
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- ..\sgmstereo;%(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
-
-
- Console
- true
- true
- true
- C:\OpenCV2.2\lib
- opencv_core220.lib; %(AdditionalDependencies)
-
-
-
-
- Level4
- Create
- Disabled
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- ..\sgmstereo;%(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
- false
-
-
- Console
- true
- true
- true
- C:\OpenCV2.2\lib
- opencv_core220.lib; %(AdditionalDependencies)
-
-
-
-
- Level4
- NotUsing
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- ..\sgmstereo;%(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
- true
-
-
- Console
- true
- true
- true
- C:\OpenCV2.2\lib
- opencv_core220.lib; %(AdditionalDependencies)
-
-
-
-
- Level4
- NotUsing
- Disabled
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- ..\sgmstereo;%(AdditionalIncludeDirectories)
- MultiThreadedDLL
- true
- true
- false
-
-
- Console
- true
- true
- true
- C:\OpenCV2.2\lib
- opencv_core220.lib; %(AdditionalDependencies)
-
-
-
-
-
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+ RelWithDebInfo
+ Win32
+
+
+ RelWithDebInfo
+ x64
+
+
+
+
+
+
+
+
+
+
+ {E512EB59-4EAB-49D1-9174-0CAF1B40CED0}
+ Win32Proj
+ epnp
+ stereoPipeline
+
+
+
+ StaticLibrary
+ true
+ Unicode
+ v143
+
+
+ StaticLibrary
+ true
+ Unicode
+ v143
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+ v143
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+ v143
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+ v143
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ ..\..\..\..\d\d;..\..\..\..\VisionTools\inc;$(IncludePath)
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
+ true
+ ..\..\..\..\d\d;..\..\..\..\VisionTools\inc;$(IncludePath)
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
+ false
+ $(SolutionDir)dep\sunflower\inc;$(SolutionDir)dep\VisionTools\inc;$(SolutionDir)dep\d\d;$(IncludePath)
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
+ false
+ $(SolutionDir)dep\sunflower\inc;$(SolutionDir)dep\VisionTools\inc;$(SolutionDir)dep\d\d;$(IncludePath)
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
+ false
+ $(IncludePath)
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+
+
+ false
+ $(IncludePath)
+ ..\..\obj\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\
+ ..\..\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\
+
+
+
+ Create
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ ..\sgmstereo;%(AdditionalIncludeDirectories)
+ MultiThreadedDebugDLL
+ true
+
+
+ Console
+ true
+
+
+
+
+ NotUsing
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ ..\sgmstereo;%(AdditionalIncludeDirectories)
+ MultiThreadedDebugDLL
+ true
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level4
+ Create
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ ..\sgmstereo;%(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+
+
+ Console
+ true
+ true
+ true
+ C:\OpenCV2.2\lib
+ opencv_core220.lib; %(AdditionalDependencies)
+
+
+
+
+ Level4
+ Create
+ Disabled
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ ..\sgmstereo;%(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+ false
+
+
+ Console
+ true
+ true
+ true
+ C:\OpenCV2.2\lib
+ opencv_core220.lib; %(AdditionalDependencies)
+
+
+
+
+ Level4
+ NotUsing
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ ..\sgmstereo;%(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+ true
+
+
+ Console
+ true
+ true
+ true
+ C:\OpenCV2.2\lib
+ opencv_core220.lib; %(AdditionalDependencies)
+
+
+
+
+ Level4
+ NotUsing
+ Disabled
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ ..\sgmstereo;%(AdditionalIncludeDirectories)
+ MultiThreadedDLL
+ true
+ true
+ false
+
+
+ Console
+ true
+ true
+ true
+ C:\OpenCV2.2\lib
+ opencv_core220.lib; %(AdditionalDependencies)
+
+
+
+
+
\ No newline at end of file
diff --git a/SUPPORT.md b/SUPPORT.md
index 4580e60494..be29ec8b41 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -1,3 +1,3 @@
# Support
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/SUPPORT.md).
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/SUPPORT.md).
diff --git a/Unity/AirLibWrapper/AirsimWrapper/AirsimWrapper.vcxproj b/Unity/AirLibWrapper/AirsimWrapper/AirsimWrapper.vcxproj
index 0eaf5d28d2..185d5b131b 100644
--- a/Unity/AirLibWrapper/AirsimWrapper/AirsimWrapper.vcxproj
+++ b/Unity/AirLibWrapper/AirsimWrapper/AirsimWrapper.vcxproj
@@ -1,246 +1,246 @@
-
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
-
- $(ProjectDir)..\..\..\..\MSAirSim_2
- {B3142B89-A825-4A07-84D3-45C65CF0D7B0}
-
-
- 15.0
- {B3142B89-A825-4A07-84D3-45C65CF0D7B0}
- Win32Proj
- AirsimWrapper
-
-
-
- DynamicLibrary
- true
- v142
- Unicode
-
-
- DynamicLibrary
- false
- v142
- true
- Unicode
-
-
- DynamicLibrary
- true
- v142
- Unicode
-
-
- DynamicLibrary
- false
- v142
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- $(VC_IncludePath);$(WindowsSDK_IncludePath);
- true
-
-
- true
-
-
- true
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
- true
- $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories)
- stdcpp17
-
-
- true
- Windows
- $(ProjectDir)..\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
-
-
- false
-
-
-
-
-
-
-
-
- Level3
- Disabled
- _DEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
- true
- $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories);
- false
- stdcpp17
-
-
- true
- Windows
- ..\$(Platform)\$(Configuration);..\..\..\AirLib\lib\$(Platform)\$(Configuration);..\..\..\MavLinkCom\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- MavLinkCom.lib;AirLib.lib;%(AdditionalDependencies)
- LinkVerbose
- false
- false
-
-
- true
-
-
-
-
-
-
-
-
- Level3
- MaxSpeed
- true
- true
- WIN32;NDEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
- true
- $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories)
- stdcpp17
-
-
- true
- true
- true
- Windows
- $(ProjectDir)..\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
-
-
- false
-
-
-
-
-
-
-
-
- Level3
- MaxSpeed
- true
- true
- NDEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
- true
- $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories);
- false
- stdcpp17
-
-
- true
- true
- true
- Windows
- ..\$(Platform)\$(Configuration);..\..\..\AirLib\lib\$(Platform)\$(Configuration);..\..\..\MavLinkCom\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
- MavLinkCom.lib;AirLib.lib;%(AdditionalDependencies)
- false
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ $(ProjectDir)..\..\..\..\MSAirSim_2
+ {B3142B89-A825-4A07-84D3-45C65CF0D7B0}
+
+
+ 15.0
+ {B3142B89-A825-4A07-84D3-45C65CF0D7B0}
+ Win32Proj
+ AirsimWrapper
+
+
+
+ DynamicLibrary
+ true
+ v143
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v143
+ true
+ Unicode
+
+
+ DynamicLibrary
+ true
+ v143
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ $(VC_IncludePath);$(WindowsSDK_IncludePath);
+ true
+
+
+ true
+
+
+ true
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories)
+ stdcpp17
+
+
+ true
+ Windows
+ $(ProjectDir)..\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+
+
+ false
+
+
+
+
+
+
+
+
+ Level3
+ Disabled
+ _DEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories);
+ false
+ stdcpp17
+
+
+ true
+ Windows
+ ..\$(Platform)\$(Configuration);..\..\..\AirLib\lib\$(Platform)\$(Configuration);..\..\..\MavLinkCom\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ MavLinkCom.lib;AirLib.lib;%(AdditionalDependencies)
+ LinkVerbose
+ false
+ false
+
+
+ true
+
+
+
+
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories)
+ stdcpp17
+
+
+ true
+ true
+ true
+ Windows
+ $(ProjectDir)..\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\deps\MavLinkCom\lib\$(Platform)\$(Configuration);$(AirSimDir)\AirLib\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+
+
+ false
+
+
+
+
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ NDEBUG;AIRSIMWRAPPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ $(ProjectDir)..\..\..\AirLib\include\vehicles\car;$(ProjectDir)..\..\..\AirLib\include;$(ProjectDir)..\..\..\AirLib\deps\eigen3;$(ProjectDir)..\..\..\external\rpclib\rpclib-2.2.1\include;$(ProjectDir)..\..\..\MavLinkCom\include;$(ProjectDir)include;%(AdditionalIncludeDirectories);
+ false
+ stdcpp17
+
+
+ true
+ true
+ true
+ Windows
+ ..\$(Platform)\$(Configuration);..\..\..\AirLib\lib\$(Platform)\$(Configuration);..\..\..\MavLinkCom\lib\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+ MavLinkCom.lib;AirLib.lib;%(AdditionalDependencies)
+ false
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp
index 6bdbe80c5a..dac9eb939d 100644
--- a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp
+++ b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp
@@ -75,7 +75,7 @@ std::unique_ptr> WorldSimApi::swapTextures(const std::s
return result;
}
-bool WorldSimApi::setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path)
+bool WorldSimApi::setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path, const int component_id)
{
throw std::invalid_argument(common_utils::Utils::stringf(
"setObjectMaterialFromTexture is not supported on unity")
@@ -83,7 +83,7 @@ bool WorldSimApi::setObjectMaterialFromTexture(const std::string& object_name, c
return false;
}
-bool WorldSimApi::setObjectMaterial(const std::string& object_name, const std::string& material_name)
+bool WorldSimApi::setObjectMaterial(const std::string& object_name, const std::string& material_name, const int component_id)
{
throw std::invalid_argument(common_utils::Utils::stringf(
"setObjectMaterial is not supported on unity")
diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h
index def2b04ed8..e458798c28 100644
--- a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h
+++ b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h
@@ -40,8 +40,8 @@ class WorldSimApi : public msr::airlib::WorldSimApiBase
virtual bool setLightIntensity(const std::string& light_name, float intensity) override;
virtual std::unique_ptr> swapTextures(const std::string& tag, int tex_id = 0, int component_id = 0, int material_id = 0) override;
- virtual bool setObjectMaterial(const std::string& object_name, const std::string& material_name) override;
- virtual bool setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path) override;
+ virtual bool setObjectMaterial(const std::string& object_name, const std::string& material_name, const int component_id = 0) override;
+ virtual bool setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path, const int component_id = 0) override;
virtual std::vector listSceneObjects(const std::string& name_regex) const override;
virtual Pose getObjectPose(const std::string& object_name) const override;
diff --git a/Unity/README.md b/Unity/README.md
index c9d5cd3ae8..0cf28e7395 100644
--- a/Unity/README.md
+++ b/Unity/README.md
@@ -1,3 +1,3 @@
# AirSim on Unity
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/Unity.md)
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/Unity.md)
\ No newline at end of file
diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/InitializeAirSim.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/InitializeAirSim.cs
index bc03525eb8..4bde3dfa28 100644
--- a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/InitializeAirSim.cs
+++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/InitializeAirSim.cs
@@ -25,6 +25,20 @@ void Awake()
{
LoadSceneAsPerSimMode(AirSimSettings.GetSettings().SimMode);
break;
+ }
+ case "":
+ {
+ break;
+ }
+ default:
+ {
+ Debug.LogError("'" + AirSimSettings.GetSettings().SimMode + "' is not a supported SimMode.");
+ #if UNITY_EDITOR
+ UnityEditor.EditorApplication.isPlaying = false;
+ #else
+ Application.Quit();
+ #endif
+ break;
}
}
}
@@ -76,7 +90,7 @@ private static bool CreateSettingsFileWithDefaultValues(string fileName)
else
Directory.CreateDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AirSim"));
- string content = "{\n \"SimMode\" : \"\", \n \"SettingsVersion\" : 1.2, \n \"SeeDocsAt\" : \"https://github.com/Microsoft/AirSim/blob/master/docs/settings.md\"\n}";
+ string content = "{\n \"SimMode\" : \"\", \n \"SettingsVersion\" : 1.2, \n \"SeeDocsAt\" : \"https://github.com/Microsoft/AirSim/blob/main/docs/settings.md\"\n}";
//settings file created at Documents\AirSim with name "setting.json".
StreamWriter writer = new StreamWriter(File.Open(fileName, FileMode.OpenOrCreate, FileAccess.Write));
writer.WriteLine(content);
diff --git a/Unity/UnityDemo/README.md b/Unity/UnityDemo/README.md
index efadc9e91f..9eca9dd5b4 100644
--- a/Unity/UnityDemo/README.md
+++ b/Unity/UnityDemo/README.md
@@ -1,6 +1,6 @@
# Unity AirSim Demo
-A Unity project to demonstrate the usage of [AirSimAssets](https://github.com/Microsoft/AirSim/tree/master/Unity/UnityDemo) for *Car* & *Multirotor* simulation.
+A Unity project to demonstrate the usage of [AirSimAssets](https://github.com/Microsoft/AirSim/tree/main/Unity/UnityDemo) for *Car* & *Multirotor* simulation.
## Usage
diff --git a/Unreal/Plugins/AirSim/AirSim.uplugin b/Unreal/Plugins/AirSim/AirSim.uplugin
index 5505563443..8d0420b2b2 100644
--- a/Unreal/Plugins/AirSim/AirSim.uplugin
+++ b/Unreal/Plugins/AirSim/AirSim.uplugin
@@ -1,7 +1,7 @@
{
"FileVersion" : 3,
- "Version" : "1.7.0",
- "VersionName": "1.7.0",
+ "Version" : "1.8.1",
+ "VersionName": "1.8.1",
"FriendlyName": "AirSim",
"Description": "AirSim - Autonomous Aerial Vehicles Simulator Plugin",
"Category" : "Science",
diff --git a/Unreal/Plugins/AirSim/Content/HUDAssets/OptionsMenu.uasset b/Unreal/Plugins/AirSim/Content/HUDAssets/OptionsMenu.uasset
index b4f4eb682c..3502374888 100644
Binary files a/Unreal/Plugins/AirSim/Content/HUDAssets/OptionsMenu.uasset and b/Unreal/Plugins/AirSim/Content/HUDAssets/OptionsMenu.uasset differ
diff --git a/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_RainDrop_Master.uasset b/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_RainDrop_Master.uasset
index 77ae874d59..9587265f0e 100644
Binary files a/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_RainDrop_Master.uasset and b/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_RainDrop_Master.uasset differ
diff --git a/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_SnowFlake_Master.uasset b/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_SnowFlake_Master.uasset
index cb14d32157..3a6bf1b365 100644
Binary files a/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_SnowFlake_Master.uasset and b/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/Materials/M_SnowFlake_Master.uasset differ
diff --git a/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/WeatherActor.uasset b/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/WeatherActor.uasset
index 10ff487fc5..79a81c5da3 100644
Binary files a/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/WeatherActor.uasset and b/Unreal/Plugins/AirSim/Content/Weather/WeatherFX/WeatherActor.uasset differ
diff --git a/Unreal/Plugins/AirSim/Source/AirBlueprintLib.cpp b/Unreal/Plugins/AirSim/Source/AirBlueprintLib.cpp
index e7289d6998..cc8dcb3112 100644
--- a/Unreal/Plugins/AirSim/Source/AirBlueprintLib.cpp
+++ b/Unreal/Plugins/AirSim/Source/AirBlueprintLib.cpp
@@ -9,7 +9,6 @@
#include "Components/StaticMeshComponent.h"
#include "EngineUtils.h"
#include "Runtime/Engine/Classes/Engine/StaticMesh.h"
-#include "Runtime/Engine/Classes/Engine/LevelStreamingDynamic.h"
#include "UObject/UObjectIterator.h"
#include "Camera/CameraComponent.h"
#include "Runtime/Engine/Classes/GameFramework/PlayerStart.h"
@@ -35,7 +34,6 @@ Methods -> CamelCase
parameters -> camel_case
*/
-ULevelStreamingDynamic* UAirBlueprintLib::CURRENT_LEVEL = nullptr;
bool UAirBlueprintLib::log_messages_hidden_ = false;
msr::airlib::AirSimSettings::SegmentationSetting::MeshNamingMethodType UAirBlueprintLib::mesh_naming_method_ =
msr::airlib::AirSimSettings::SegmentationSetting::MeshNamingMethodType::OwnerName;
@@ -76,18 +74,23 @@ void UAirBlueprintLib::setSimulatePhysics(AActor* actor, bool simulate_physics)
}
}
-ULevelStreamingDynamic* UAirBlueprintLib::loadLevel(UObject* context, const FString& level_name)
+bool UAirBlueprintLib::loadLevel(UObject* context, const FString& level_name)
{
+
bool success{ false };
- context->GetWorld()->SetNewWorldOrigin(FIntVector(0, 0, 0));
- ULevelStreamingDynamic* new_level = UAirsimLevelStreaming::LoadAirsimLevelInstance(
- context->GetWorld(), level_name, FVector(0, 0, 0), FRotator(0, 0, 0), success);
- if (success) {
- if (CURRENT_LEVEL != nullptr && CURRENT_LEVEL->IsValidLowLevel())
- CURRENT_LEVEL->SetShouldBeLoaded(false);
- CURRENT_LEVEL = new_level;
+ // Get name of current level
+ auto currMap = context->GetWorld()->GetMapName();
+ currMap.RemoveFromStart(context->GetWorld()->StreamingLevelsPrefix);
+ // Only load new level if different from current level
+ if (!currMap.Equals(level_name)) {
+ FString LongPackageName;
+ success = FPackageName::SearchForPackageOnDisk(level_name, &LongPackageName);
+ if (success) {
+ context->GetWorld()->SetNewWorldOrigin(FIntVector(0, 0, 0));
+ UGameplayStatics::OpenLevel(context->GetWorld(), FName(*LongPackageName), true);
+ }
}
- return CURRENT_LEVEL;
+ return success;
}
bool UAirBlueprintLib::spawnPlayer(UWorld* context)
@@ -455,8 +458,12 @@ std::vector UAirBlueprintLib::Ge
//Various checks if there is even a valid mesh
if (!comp->GetStaticMesh()) continue;
- if (!comp->GetStaticMesh()->RenderData) continue;
+ if (!comp->GetStaticMesh()->HasValidRenderData()) continue;
+#if ((ENGINE_MAJOR_VERSION > 4) || (ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 27))
+ if (comp->GetStaticMesh()->GetRenderData()->LODResources.Num() == 0) continue;
+#else
if (comp->GetStaticMesh()->RenderData->LODResources.Num() == 0) continue;
+#endif
msr::airlib::MeshPositionVertexBuffersResponse mesh;
mesh.name = name;
@@ -471,7 +478,11 @@ std::vector UAirBlueprintLib::Ge
mesh.orientation.y() = att.Y;
mesh.orientation.z() = att.Z;
+#if ((ENGINE_MAJOR_VERSION > 4) || (ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 27))
+ FPositionVertexBuffer* vertex_buffer = &comp->GetStaticMesh()->GetRenderData()->LODResources[0].VertexBuffers.PositionVertexBuffer;
+#else
FPositionVertexBuffer* vertex_buffer = &comp->GetStaticMesh()->RenderData->LODResources[0].VertexBuffers.PositionVertexBuffer;
+#endif
if (vertex_buffer) {
const int32 vertex_count = vertex_buffer->VertexBufferRHI->GetSize();
TArray vertices;
@@ -486,7 +497,11 @@ std::vector UAirBlueprintLib::Ge
RHIUnlockVertexBuffer(vertex_buffer->VertexBufferRHI);
});
+#if ((ENGINE_MAJOR_VERSION > 4) || (ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 27))
+ FStaticMeshLODResources& lod = comp->GetStaticMesh()->GetRenderData()->LODResources[0];
+#else
FStaticMeshLODResources& lod = comp->GetStaticMesh()->RenderData->LODResources[0];
+#endif
FRawStaticIndexBuffer* IndexBuffer = &lod.IndexBuffer;
int num_indices = IndexBuffer->IndexBufferRHI->GetSize() / IndexBuffer->IndexBufferRHI->GetStride();
diff --git a/Unreal/Plugins/AirSim/Source/AirBlueprintLib.h b/Unreal/Plugins/AirSim/Source/AirBlueprintLib.h
index 86bc8b21d9..46d2a8a936 100644
--- a/Unreal/Plugins/AirSim/Source/AirBlueprintLib.h
+++ b/Unreal/Plugins/AirSim/Source/AirBlueprintLib.h
@@ -19,15 +19,12 @@
#include "Engine/World.h"
#include "Runtime/Landscape/Classes/LandscapeComponent.h"
#include "Runtime/Engine/Classes/Kismet/GameplayStatics.h"
-#include "AirsimLevelStreaming.h"
#include "Runtime/Core/Public/HAL/FileManager.h"
#include "common/AirSimSettings.hpp"
#include
#include
#include "AirBlueprintLib.generated.h"
-class ULevelStreamingDynamic;
-
UENUM(BlueprintType)
enum class LogDebugLevel : uint8
{
@@ -74,11 +71,9 @@ class UAirBlueprintLib : public UBlueprintFunctionLibrary
UGameplayStatics::GetAllActorsOfClass(context, T::StaticClass(), foundActors);
}
- static ULevelStreamingDynamic* CURRENT_LEVEL;
-
static std::vector ListMatchingActors(const UObject* context, const std::string& name_regex);
UFUNCTION(BlueprintCallable, Category = "AirSim|LevelAPI")
- static ULevelStreamingDynamic* loadLevel(UObject* context, const FString& level_name);
+ static bool loadLevel(UObject* context, const FString& level_name);
UFUNCTION(BlueprintCallable, Category = "AirSim|LevelAPI")
static bool spawnPlayer(UWorld* context);
UFUNCTION(BlueprintPure, Category = "AirSim|LevelAPI")
diff --git a/Unreal/Plugins/AirSim/Source/AirsimLevelStreaming.cpp b/Unreal/Plugins/AirSim/Source/AirsimLevelStreaming.cpp
deleted file mode 100644
index f7871d56f4..0000000000
--- a/Unreal/Plugins/AirSim/Source/AirsimLevelStreaming.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#pragma once
-
-#include "AirsimLevelStreaming.h"
-#include "Engine/World.h"
-
-int32 UAirsimLevelStreaming::LevelInstanceId = 0;
-
-UAirsimLevelStreaming* UAirsimLevelStreaming::LoadAirsimLevelInstance(UWorld* WorldContextObject, FString LevelName, FVector Location, FRotator Rotation, bool& bOutSuccess)
-{
- if (!WorldContextObject) {
- return nullptr;
- }
-
- // Check whether requested map exists, this could be very slow if LevelName is a short package name
- FString LongPackageName;
- bool success = FPackageName::SearchForPackageOnDisk(LevelName, &LongPackageName);
- if (!success) {
- bOutSuccess = false;
- return nullptr;
- }
-
- // Create Unique Name for sub-level package
- const FString ShortPackageName = FPackageName::GetShortName(LongPackageName);
- const FString PackagePath = FPackageName::GetLongPackagePath(LongPackageName);
- FString UniqueLevelPackageName = PackagePath + TEXT("/") + WorldContextObject->StreamingLevelsPrefix + ShortPackageName;
- UniqueLevelPackageName += TEXT("_LevelInstance_") + FString::FromInt(++LevelInstanceId);
-
- // Setup streaming level object that will load specified map
- ULevelStreamingDynamic* level_pointer = NewObject(WorldContextObject, ULevelStreamingDynamic::StaticClass(), NAME_None, RF_Transient, NULL);
- level_pointer->SetWorldAssetByPackageName(FName(*UniqueLevelPackageName));
- level_pointer->LevelColor = FColor::MakeRandomColor();
- level_pointer->SetShouldBeLoaded(true);
- level_pointer->SetShouldBeVisible(true);
- level_pointer->bShouldBlockOnLoad = true;
- level_pointer->bInitiallyLoaded = true;
- level_pointer->bInitiallyVisible = true;
-
- // Transform
- level_pointer->LevelTransform = FTransform(Rotation, Location);
- // Map to Load
- level_pointer->PackageNameToLoad = FName(*LongPackageName);
- // Add the new level to world.
- WorldContextObject->AddStreamingLevel(level_pointer);
-
- bOutSuccess = true;
-
- return dynamic_cast(level_pointer);
-}
\ No newline at end of file
diff --git a/Unreal/Plugins/AirSim/Source/AirsimLevelStreaming.h b/Unreal/Plugins/AirSim/Source/AirsimLevelStreaming.h
deleted file mode 100644
index 9035875394..0000000000
--- a/Unreal/Plugins/AirSim/Source/AirsimLevelStreaming.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-#include "Runtime/Engine/Classes/Engine/LevelStreamingDynamic.h"
-
-class UAirsimLevelStreaming : public ULevelStreamingDynamic
-{
-public:
- static UAirsimLevelStreaming* LoadAirsimLevelInstance(UWorld* WorldContextObject, FString LevelName, FVector Location, FRotator Rotation, bool& bOutSuccess);
-
-private:
- static int32 LevelInstanceId;
-};
\ No newline at end of file
diff --git a/Unreal/Plugins/AirSim/Source/DetectionComponent.cpp b/Unreal/Plugins/AirSim/Source/DetectionComponent.cpp
index a72a9929e5..a1fc1281fa 100644
--- a/Unreal/Plugins/AirSim/Source/DetectionComponent.cpp
+++ b/Unreal/Plugins/AirSim/Source/DetectionComponent.cpp
@@ -142,7 +142,7 @@ bool UDetectionComponent::calcBoundingFromViewInfo(AActor* actor, FBox2D& box_ou
for (FVector& point : points) {
is_world_hit = GetWorld()->LineTraceSingleByChannel(result, GetComponentLocation(), point, ECC_WorldStatic);
if (is_world_hit) {
- if (result.Actor == actor) {
+ if (result.GetActor() == actor) {
is_visible = true;
break;
}
@@ -156,7 +156,7 @@ bool UDetectionComponent::calcBoundingFromViewInfo(AActor* actor, FBox2D& box_ou
FVector point = UKismetMathLibrary::RandomPointInBoundingBox(origin, extend);
is_world_hit = GetWorld()->LineTraceSingleByChannel(result, GetComponentLocation(), point, ECC_WorldStatic);
if (is_world_hit) {
- if (result.Actor == actor) {
+ if (result.GetActor() == actor) {
is_visible = true;
break;
}
diff --git a/Unreal/Plugins/AirSim/Source/PIPCamera.cpp b/Unreal/Plugins/AirSim/Source/PIPCamera.cpp
index 946cd9b753..114c08f314 100644
--- a/Unreal/Plugins/AirSim/Source/PIPCamera.cpp
+++ b/Unreal/Plugins/AirSim/Source/PIPCamera.cpp
@@ -778,7 +778,6 @@ void APIPCamera::copyCameraSettingsToSceneCapture(UCameraComponent* src, USceneC
{
if (src && dst) {
dst->SetWorldLocationAndRotation(src->GetComponentLocation(), src->GetComponentRotation());
- dst->FOVAngle = src->FieldOfView;
FMinimalViewInfo camera_view_info;
src->GetCameraView(/*DeltaTime =*/0.0f, camera_view_info);
diff --git a/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.cpp b/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.cpp
index 02bee7a5c7..147e9ec8ef 100644
--- a/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.cpp
+++ b/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.cpp
@@ -22,9 +22,12 @@ void ASimHUD::BeginPlay()
try {
UAirBlueprintLib::OnBeginPlay();
+ initializeSettings();
loadLevel();
- initializeSettings();
+ // Prevent a MavLink connection being established if changing levels
+ if (map_changed_) return;
+
setUnrealEngineSettings();
createSimMode();
createMainWidget();
@@ -253,11 +256,9 @@ std::string ASimHUD::getSimModeFromUser()
void ASimHUD::loadLevel()
{
- if (AirSimSettings::singleton().level_name != "")
- UAirBlueprintLib::RunCommandOnGameThread([&]() { UAirBlueprintLib::loadLevel(this->GetWorld(), FString(AirSimSettings::singleton().level_name.c_str())); }, true);
- else
- UAirBlueprintLib::RunCommandOnGameThread([&]() { UAirBlueprintLib::loadLevel(this->GetWorld(), FString("Blocks")); }, true);
+ UAirBlueprintLib::RunCommandOnGameThread([&]() { this->map_changed_ = UAirBlueprintLib::loadLevel(this->GetWorld(), FString(AirSimSettings::singleton().level_name.c_str())); }, true);
}
+
void ASimHUD::createSimMode()
{
std::string simmode_name = AirSimSettings::singleton().simmode_name;
diff --git a/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.h b/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.h
index cc4df14f7b..75ef7bc274 100644
--- a/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.h
+++ b/Unreal/Plugins/AirSim/Source/SimHUD/SimHUD.h
@@ -73,4 +73,5 @@ class AIRSIM_API ASimHUD : public AHUD
ASimModeBase* simmode_;
APIPCamera* subwindow_cameras_[AirSimSettings::kSubwindowCount];
+ bool map_changed_;
};
diff --git a/Unreal/Plugins/AirSim/Source/WorldSimApi.cpp b/Unreal/Plugins/AirSim/Source/WorldSimApi.cpp
index 15b8336896..2a6201edc3 100644
--- a/Unreal/Plugins/AirSim/Source/WorldSimApi.cpp
+++ b/Unreal/Plugins/AirSim/Source/WorldSimApi.cpp
@@ -26,19 +26,11 @@ bool WorldSimApi::loadLevel(const std::string& level_name)
// Add loading screen to viewport
simmode_->toggleLoadingScreen(true);
std::this_thread::sleep_for(0.1s);
- UAirBlueprintLib::RunCommandOnGameThread([this, level_name]() {
- this->current_level_ = UAirBlueprintLib::loadLevel(this->simmode_->GetWorld(), FString(level_name.c_str()));
+ UAirBlueprintLib::RunCommandOnGameThread([this, level_name, &success]() {
+ success = UAirBlueprintLib::loadLevel(this->simmode_->GetWorld(), FString(level_name.c_str()));
},
true);
- if (this->current_level_) {
- success = true;
- std::this_thread::sleep_for(1s);
- spawnPlayer();
- }
- else
- success = false;
-
//Remove Loading screen from viewport
UAirBlueprintLib::RunCommandOnGameThread([this, level_name]() {
this->simmode_->OnLevelLoaded.Broadcast();
@@ -521,10 +513,10 @@ std::unique_ptr> WorldSimApi::swapTextures(const std::s
return swappedObjectNames;
}
-bool WorldSimApi::setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path)
+bool WorldSimApi::setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path, const int component_id)
{
bool success = false;
- UAirBlueprintLib::RunCommandOnGameThread([this, &object_name, &texture_path, &success]() {
+ UAirBlueprintLib::RunCommandOnGameThread([this, &object_name, &texture_path, &success, &component_id]() {
if (!IsValid(simmode_->domain_rand_material_)) {
UAirBlueprintLib::LogMessageString("Cannot find material for domain randomization",
"",
@@ -540,7 +532,7 @@ bool WorldSimApi::setObjectMaterialFromTexture(const std::string& object_name, c
for (UStaticMeshComponent* staticMeshComponent : components) {
UMaterialInstanceDynamic* dynamic_material = UMaterialInstanceDynamic::Create(simmode_->domain_rand_material_, staticMeshComponent);
dynamic_material->SetTextureParameterValue("TextureParameter", texture_desired);
- staticMeshComponent->SetMaterial(0, dynamic_material);
+ staticMeshComponent->SetMaterial(component_id, dynamic_material);
}
success = true;
}
@@ -556,10 +548,10 @@ bool WorldSimApi::setObjectMaterialFromTexture(const std::string& object_name, c
return success;
}
-bool WorldSimApi::setObjectMaterial(const std::string& object_name, const std::string& material_name)
+bool WorldSimApi::setObjectMaterial(const std::string& object_name, const std::string& material_name, const int component_id)
{
bool success = false;
- UAirBlueprintLib::RunCommandOnGameThread([this, &object_name, &material_name, &success]() {
+ UAirBlueprintLib::RunCommandOnGameThread([this, &object_name, &material_name, &success, &component_id]() {
AActor* actor = UAirBlueprintLib::FindActor(simmode_, FString(object_name.c_str()));
UMaterial* material = static_cast(StaticLoadObject(UMaterial::StaticClass(), nullptr, *FString(material_name.c_str())));
@@ -573,7 +565,7 @@ bool WorldSimApi::setObjectMaterial(const std::string& object_name, const std::s
TArray components;
actor->GetComponents(components);
for (UStaticMeshComponent* staticMeshComponent : components) {
- staticMeshComponent->SetMaterial(0, material);
+ staticMeshComponent->SetMaterial(component_id, material);
}
success = true;
}
@@ -888,7 +880,6 @@ std::vector WorldSimApi::getWorldExtents() const
return result;
}
-
msr::airlib::CameraInfo WorldSimApi::getCameraInfo(const CameraDetails& camera_details) const
{
msr::airlib::CameraInfo info;
diff --git a/Unreal/Plugins/AirSim/Source/WorldSimApi.h b/Unreal/Plugins/AirSim/Source/WorldSimApi.h
index 7c32a6d776..f6c08377be 100644
--- a/Unreal/Plugins/AirSim/Source/WorldSimApi.h
+++ b/Unreal/Plugins/AirSim/Source/WorldSimApi.h
@@ -7,7 +7,6 @@
#include "SimMode/SimModeBase.h"
#include "Components/StaticMeshComponent.h"
#include "Runtime/Engine/Classes/Engine/StaticMesh.h"
-#include "Engine/LevelStreamingDynamic.h"
#include
class WorldSimApi : public msr::airlib::WorldSimApiBase
@@ -55,8 +54,8 @@ class WorldSimApi : public msr::airlib::WorldSimApiBase
virtual bool setLightIntensity(const std::string& light_name, float intensity) override;
virtual std::unique_ptr> swapTextures(const std::string& tag, int tex_id = 0, int component_id = 0, int material_id = 0) override;
- virtual bool setObjectMaterial(const std::string& object_name, const std::string& material_name) override;
- virtual bool setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path) override;
+ virtual bool setObjectMaterial(const std::string& object_name, const std::string& material_name, const int component_id = 0) override;
+ virtual bool setObjectMaterialFromTexture(const std::string& object_name, const std::string& texture_path, const int component_id = 0) override;
virtual std::vector listSceneObjects(const std::string& name_regex) const override;
virtual Pose getObjectPose(const std::string& object_name) const override;
virtual bool setObjectPose(const std::string& object_name, const Pose& pose, bool teleport) override;
@@ -136,6 +135,5 @@ class WorldSimApi : public msr::airlib::WorldSimApiBase
private:
ASimModeBase* simmode_;
- ULevelStreamingDynamic* current_level_;
std::vector voxel_grid_;
};
diff --git a/UnrealPluginFiles.vcxproj b/UnrealPluginFiles.vcxproj
index 98c8d9d4cc..d6a2e80f8e 100644
--- a/UnrealPluginFiles.vcxproj
+++ b/UnrealPluginFiles.vcxproj
@@ -1,175 +1,176 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
- RelWithDebInfo
- Win32
-
-
- RelWithDebInfo
- x64
-
-
-
- {39683523-C864-4D47-8350-33FC3EC0F00F}
- MakeFileProj
-
-
-
- Makefile
- true
- v140
-
-
- Makefile
- false
- v140
-
-
- Makefile
- false
- v140
-
-
- Application
- true
- v141
-
-
- Application
- false
- v141
-
-
- Application
- false
- v141
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- WIN32;_DEBUG;$(NMakePreprocessorDefinitions)
-
-
- WIN32;NDEBUG;$(NMakePreprocessorDefinitions)
-
-
- WIN32;NDEBUG;$(NMakePreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ RelWithDebInfo
+ Win32
+
+
+ RelWithDebInfo
+ x64
+
+
+
+ {39683523-C864-4D47-8350-33FC3EC0F00F}
+ MakeFileProj
+ 10.0
+
+
+
+ Makefile
+ true
+ v143
+
+
+ Makefile
+ false
+ v143
+
+
+ Makefile
+ false
+ v143
+
+
+ Application
+ true
+ v143
+
+
+ Application
+ false
+ v143
+
+
+ Application
+ false
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WIN32;_DEBUG;$(NMakePreprocessorDefinitions)
+
+
+ WIN32;NDEBUG;$(NMakePreprocessorDefinitions)
+
+
+ WIN32;NDEBUG;$(NMakePreprocessorDefinitions)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/azure/app/settings.json b/azure/app/settings.json
index 44b5a20009..ecd1e995a8 100644
--- a/azure/app/settings.json
+++ b/azure/app/settings.json
@@ -1,5 +1,5 @@
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings_json.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings_json.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"ClockSpeed": 1.0,
diff --git a/azure/azure-env-creation/vm-arm-template.json b/azure/azure-env-creation/vm-arm-template.json
index e87babba6d..7e7ddea9ca 100644
--- a/azure/azure-env-creation/vm-arm-template.json
+++ b/azure/azure-env-creation/vm-arm-template.json
@@ -39,7 +39,7 @@
"metadata": {
"description": "Location of the setup script"
},
- "defaultValue": "https://raw.githubusercontent.com/microsoft/airsim/master/azure/azure-env-creation"
+ "defaultValue": "https://raw.githubusercontent.com/microsoft/airsim/main/azure/azure-env-creation"
},
"ScriptFileName": {
"type": "string",
diff --git a/build.cmd b/build.cmd
index 9b84378acc..a3c1f37cf5 100644
--- a/build.cmd
+++ b/build.cmd
@@ -10,14 +10,14 @@ set "buildMode="
REM //check VS version
if "%VisualStudioVersion%" == "" (
echo(
- echo oh oh... You need to run this command from x64 Native Tools Command Prompt for VS 2019.
+ echo oh oh... You need to run this command from x64 Native Tools Command Prompt for VS 2022.
goto :buildfailed_nomsg
)
-if "%VisualStudioVersion%" lss "16.0" (
+if "%VisualStudioVersion%" lss "17.0" (
echo(
- echo Hello there! We just upgraded AirSim to Unreal Engine 4.24 and Visual Studio 2019.
+ echo Hello there! We just upgraded AirSim to Unreal Engine 4.27 and Visual Studio 2022.
echo Here are few easy steps for upgrade so everything is new and shiny:
- echo https://github.com/Microsoft/AirSim/blob/master/docs/unreal_upgrade.md
+ echo https://github.com/Microsoft/AirSim/blob/main/docs/unreal_upgrade.md
goto :buildfailed_nomsg
)
@@ -99,7 +99,7 @@ REM //---------- Build rpclib ------------
ECHO Starting cmake to build rpclib...
IF NOT EXIST external\rpclib\%RPC_VERSION_FOLDER%\build mkdir external\rpclib\%RPC_VERSION_FOLDER%\build
cd external\rpclib\%RPC_VERSION_FOLDER%\build
-cmake -G"Visual Studio 16 2019" ..
+cmake -G"Visual Studio 17 2022" ..
if "%buildMode%" == "" (
cmake --build .
@@ -204,6 +204,13 @@ if NOT exist Unreal\Plugins\AirSim\Source\AirLib mkdir Unreal\Plugins\AirSim\Sou
robocopy /MIR AirLib Unreal\Plugins\AirSim\Source\AirLib /XD temp *. /njh /njs /ndl /np
copy /y AirSim.props Unreal\Plugins\AirSim\Source\AirLib
+REM //---------- update all environments ----------
+FOR /D %%E IN (Unreal\Environments\*) DO (
+ cd %%E
+ call .\update_from_git.bat ..\..\..
+ cd ..\..\..
+)
+
REM //---------- done building ----------
exit /b 0
diff --git a/build.sh b/build.sh
index 4a750ac0d4..8b45d64ba1 100755
--- a/build.sh
+++ b/build.sh
@@ -134,10 +134,13 @@ rsync -a --delete MavLinkCom/include AirLib/deps/MavLinkCom
rsync -a --delete AirLib Unreal/Plugins/AirSim/Source
rm -rf Unreal/Plugins/AirSim/Source/AirLib/src
-# Update Blocks project
-Unreal/Environments/Blocks/clean.sh
-mkdir -p Unreal/Environments/Blocks/Plugins
-rsync -a --delete Unreal/Plugins/AirSim Unreal/Environments/Blocks/Plugins
+# Update all environment projects
+for d in Unreal/Environments/* ; do
+ [ -L "${d%/}" ] && continue
+ $d/clean.sh
+ mkdir -p $d/Plugins
+ rsync -a --delete Unreal/Plugins/AirSim $d/Plugins
+done
set +x
@@ -146,11 +149,9 @@ echo ""
echo "=================================================================="
echo " AirSim plugin is built! Here's how to build Unreal project."
echo "=================================================================="
-echo "If you are using Blocks environment, its already updated."
-echo "If you are using your own environment, update plugin using,"
-echo "rsync -a --delete Unreal/Plugins path/to/MyUnrealProject"
+echo "All environments under Unreal/Environments have been updated."
echo ""
-echo "For help see:"
+echo "For further info see:"
echo "https://github.com/Microsoft/AirSim/blob/master/docs/build_linux.md"
echo "=================================================================="
diff --git a/docker/settings.json b/docker/settings.json
index 8d64573241..25e4856dc3 100644
--- a/docker/settings.json
+++ b/docker/settings.json
@@ -1,5 +1,5 @@
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings_json.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings_json.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"ClockSpeed": 1.0,
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 7b311c033c..8fa71d4815 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -1,9 +1,9 @@
# What's new
-Below is summarized list of important changes. This does not include minor/less important changes or bug fixes or documentation update. This list updated every few months. For complete detailed changes, please review [commit history](https://github.com/Microsoft/AirSim/commits/master).
+Below is summarized list of important changes. This does not include minor/less important changes or bug fixes or documentation update. This list updated every few months. For complete detailed changes, please review [commit history](https://github.com/Microsoft/AirSim/commits/main).
-### Jan 2021
+### Jan 2022
* Latest release `v1.7.0` for [Windows](https://github.com/microsoft/AirSim/releases/tag/v1.7.0-windows) and [Linux](https://github.com/microsoft/AirSim/releases/tag/v1.7.0-linux)
### Dec 2021
@@ -180,7 +180,7 @@ Below is summarized list of important changes. This does not include minor/less
### November, 2018
* Added Weather Effects and [APIs](apis.md#weather-apis)
* Added [Time of Day API](apis.md#time-of-day-api)
-* An experimental integration of [AirSim on Unity](https://github.com/Microsoft/AirSim/tree/master/Unity) is now available. Learn more in [Unity blog post](https://blogs.unity3d.com/2018/11/14/airsim-on-unity-experiment-with-autonomous-vehicle-simulation).
+* An experimental integration of [AirSim on Unity](https://github.com/Microsoft/AirSim/tree/main/Unity) is now available. Learn more in [Unity blog post](https://blogs.unity3d.com/2018/11/14/airsim-on-unity-experiment-with-autonomous-vehicle-simulation).
* [New environments](https://github.com/Microsoft/AirSim/releases/tag/v1.2.1): Forest, Plains (windmill farm), TalkingHeads (human head simulation), TrapCam (animal detection via camera)
* Highly efficient [NoDisplay view mode](settings.md#viewmode) to turn off main screen rendering so you can capture images at high rate
* [Enable/disable sensors](https://github.com/Microsoft/AirSim/pull/1479) via settings
@@ -191,7 +191,7 @@ Below is summarized list of important changes. This does not include minor/less
* [Custom speed units](https://github.com/Microsoft/AirSim/pull/1181)
* [ROS publisher](https://github.com/Microsoft/AirSim/pull/1135)
* [simSetObjectPose API](https://github.com/Microsoft/AirSim/pull/1161)
-* [Character Control APIs](https://github.com/Microsoft/AirSim/blob/master/PythonClient/airsim/client.py#L137) (works on TalkingHeads binaries in release)
+* [Character Control APIs](https://github.com/Microsoft/AirSim/blob/main/PythonClient/airsim/client.py#L137) (works on TalkingHeads binaries in release)
* [Arducopter Solo Support](https://github.com/Microsoft/AirSim/pull/1387)
* [Linux install without sudo access](https://github.com/Microsoft/AirSim/pull/1434)
* [Kinect like ROS publisher](https://github.com/Microsoft/AirSim/pull/1298)
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index 23d4d59669..af4bc73545 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -13,5 +13,5 @@
- Keep your pull request small, ideally under 10 files.
- Make sure you don't include large binary files.
- When adding new includes, make dependency is absolutely necessary.
-- Rebase your branch frequently with master (once every 2-3 days is ideal).
+- Rebase your branch frequently with main (once every 2-3 days is ideal).
- Make sure your code would compile on Windows, Linux and OSX.
diff --git a/docs/InfraredCamera.md b/docs/InfraredCamera.md
index 28b1e2838b..99e78e29d7 100644
--- a/docs/InfraredCamera.md
+++ b/docs/InfraredCamera.md
@@ -3,12 +3,12 @@ This is a tutorial for generating simulated thermal infrared (IR) images using A
Pre-compiled Africa Environment can be downloaded from the Releases tab of this Github repo:
[Windows Pre-compiled binary](https://github.com/Microsoft/AirSim/releases/tag/v1.2.1)
-To generate your own data, you may use two python files: [create_ir_segmentation_map.py](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/create_ir_segmentation_map.py) and
-[capture_ir_segmentation.py](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/capture_ir_segmentation.py).
+To generate your own data, you may use two python files: [create_ir_segmentation_map.py](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/create_ir_segmentation_map.py) and
+[capture_ir_segmentation.py](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/capture_ir_segmentation.py).
-[create_ir_segmentation_map.py](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/create_ir_segmentation_map.py) uses temperature, emissivity, and camera response information to estimate the thermal digital count that could be expected for the objects in the environment, and then reassigns the segmentation IDs in AirSim to match these digital counts. It should be run before starting to capture thermal IR data. Otherwise, digital counts in the IR images will be incorrect. The camera response, temperature, and emissivity data are all included for the Africa environment.
+[create_ir_segmentation_map.py](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/create_ir_segmentation_map.py) uses temperature, emissivity, and camera response information to estimate the thermal digital count that could be expected for the objects in the environment, and then reassigns the segmentation IDs in AirSim to match these digital counts. It should be run before starting to capture thermal IR data. Otherwise, digital counts in the IR images will be incorrect. The camera response, temperature, and emissivity data are all included for the Africa environment.
-[capture_ir_segmentation.py](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/capture_ir_segmentation.py) is run after the segmentation IDs have been reassigned. It tracks objects of interest and records the infrared and scene images from the multirotor. It uses Computer Vision mode.
+[capture_ir_segmentation.py](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/capture_ir_segmentation.py) is run after the segmentation IDs have been reassigned. It tracks objects of interest and records the infrared and scene images from the multirotor. It uses Computer Vision mode.
Finally, the details about how temperatures were estimated for plants and animals in the Africa environment, etc. can be found in this paper:
diff --git a/docs/Unity.md b/docs/Unity.md
index efe5bffee9..bade4e62c1 100644
--- a/docs/Unity.md
+++ b/docs/Unity.md
@@ -118,7 +118,7 @@ chmod +x "{project_name}.{configuration}"
./{project_name}.{configuration}
```
### Using Airsim API
-* For quickstart with the Python APIs for the car or the drone, simply run the [`hello_car.py`](https://github.com/Microsoft/AirSim/blob/master/PythonClient/car/hello_car.py) or the [`hello_drone.py`](https://github.com/Microsoft/AirSim/blob/master/PythonClient/multirotor/hello_drone.py) script accordingly.
+* For quickstart with the Python APIs for the car or the drone, simply run the [`hello_car.py`](https://github.com/Microsoft/AirSim/blob/main/PythonClient/car/hello_car.py) or the [`hello_drone.py`](https://github.com/Microsoft/AirSim/blob/main/PythonClient/multirotor/hello_drone.py) script accordingly.
* Details of the AirSim C++ and Python APIs are [here](apis.md).
### Acknowledgements
diff --git a/docs/adding_new_apis.md b/docs/adding_new_apis.md
index c236c8d918..7f8d10fad8 100644
--- a/docs/adding_new_apis.md
+++ b/docs/adding_new_apis.md
@@ -32,19 +32,19 @@ The APIs use [msgpack-rpc protocol](https://github.com/msgpack-rpc/msgpack-rpc)
To add the RPC code to call the new API, follow the steps below. Follow the implementation of other APIs defined in the files.
-1. Add an RPC handler in the server which calls your implemented method in [RpcLibServerBase.cpp](https://github.com/microsoft/AirSim/blob/master/AirLib/src/api/RpcLibServerBase.cpp). Vehicle-specific APIs are in their respective vehicle subfolder.
+1. Add an RPC handler in the server which calls your implemented method in [RpcLibServerBase.cpp](https://github.com/microsoft/AirSim/blob/main/AirLib/src/api/RpcLibServerBase.cpp). Vehicle-specific APIs are in their respective vehicle subfolder.
-2. Add the C++ client API method in [RpcClientBase.cpp](https://github.com/microsoft/AirSim/blob/master/AirLib/src/api/RpcLibClientBase.cpp)
+2. Add the C++ client API method in [RpcClientBase.cpp](https://github.com/microsoft/AirSim/blob/main/AirLib/src/api/RpcLibClientBase.cpp)
-3. Add the Python client API method in [client.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/airsim/client.py). If needed, add or modify a structure definition in [types.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/airsim/types.py)
+3. Add the Python client API method in [client.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/airsim/client.py). If needed, add or modify a structure definition in [types.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/airsim/types.py)
## Testing
Testing is required to ensure that the API is working as expected. For this, as expected, you'll have to use the source-built AirSim and Blocks environment. Apart from this, if using the Python APIs, you'll have to use the `airsim` package from source rather than the PyPI package. Below are 2 ways described to go about using the package from source -
-1. Use [setup_path.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/setup_path.py). It will setup the path such that the local airsim module is used instead of the pip installed package. This is the method used in many of the scripts since the user doesn't need to do anything other than run the script.
+1. Use [setup_path.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/setup_path.py). It will setup the path such that the local airsim module is used instead of the pip installed package. This is the method used in many of the scripts since the user doesn't need to do anything other than run the script.
Place your example script in one of the folders inside `PythonClient` like `multirotor`, `car`, etc. You can also create one to keep things separate, and copy the `setup_path.py` file from another folder.
- Add `import setup_path` before `import airsim` in your files. Now the latest master API (or any branch currently checked out) will be used.
+ Add `import setup_path` before `import airsim` in your files. Now the latest main API (or any branch currently checked out) will be used.
2. Use a [local project pip install](https://pip.pypa.io/en/stable/cli/pip_install/#local-project-installs). Regular install would create a copy of the current source and use it, whereas Editable install (`pip install -e .` from inside the `PythonClient` folder) would change the package whenever the Python API files are changed. Editable install has the benefit when working on several branches or API is not finalized.
diff --git a/docs/airsim_ros_pkgs.md b/docs/airsim_ros_pkgs.md
index 98ac1ecba9..76d76d196a 100644
--- a/docs/airsim_ros_pkgs.md
+++ b/docs/airsim_ros_pkgs.md
@@ -76,7 +76,7 @@ Let's look at the ROS API for both nodes:
#### Publishers:
-- `/airsim_node/origin_geo_point` [airsim_ros_pkgs/GPSYaw](https://github.com/microsoft/AirSim/tree/master/ros/src/airsim_ros_pkgs/msg/GPSYaw.msg)
+- `/airsim_node/origin_geo_point` [airsim_ros_pkgs/GPSYaw](https://github.com/microsoft/AirSim/tree/main/ros/src/airsim_ros_pkgs/msg/GPSYaw.msg)
GPS coordinates corresponding to global NED frame. This is set in the airsim's [settings.json](https://microsoft.github.io/AirSim/settings/) file under the `OriginGeopoint` key.
- `/airsim_node/VEHICLE_NAME/global_gps` [sensor_msgs/NavSatFix](https://docs.ros.org/api/sensor_msgs/html/msg/NavSatFix.html)
@@ -92,7 +92,7 @@ Odometry in NED frame (default name: odom_local_ned, launch name and frame type
- `/tf` [tf2_msgs/TFMessage](https://docs.ros.org/api/tf2_msgs/html/msg/TFMessage.html)
-- `/airsim_node/VEHICLE_NAME/altimeter/SENSOR_NAME` [airsim_ros_pkgs/Altimeter](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_ros_pkgs/msg/Altimeter.msg)
+- `/airsim_node/VEHICLE_NAME/altimeter/SENSOR_NAME` [airsim_ros_pkgs/Altimeter](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_ros_pkgs/msg/Altimeter.msg)
This the current altimeter reading for altitude, pressure, and [QNH](https://en.wikipedia.org/wiki/QNH)
- `/airsim_node/VEHICLE_NAME/imu/SENSOR_NAME` [sensor_msgs::Imu](http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html)
@@ -109,20 +109,20 @@ IMU sensor data
#### Subscribers:
-- `/airsim_node/vel_cmd_body_frame` [airsim_ros_pkgs/VelCmd](https://github.com/microsoft/AirSim/tree/master/ros/src/airsim_ros_pkgs/msg/VelCmd.msg)
+- `/airsim_node/vel_cmd_body_frame` [airsim_ros_pkgs/VelCmd](https://github.com/microsoft/AirSim/tree/main/ros/src/airsim_ros_pkgs/msg/VelCmd.msg)
Ignore `vehicle_name` field, leave it to blank. We will use `vehicle_name` in future for multiple drones.
-- `/airsim_node/vel_cmd_world_frame` [airsim_ros_pkgs/VelCmd](https://github.com/microsoft/AirSim/tree/master/ros/src/airsim_ros_pkgs/msg/VelCmd.msg)
+- `/airsim_node/vel_cmd_world_frame` [airsim_ros_pkgs/VelCmd](https://github.com/microsoft/AirSim/tree/main/ros/src/airsim_ros_pkgs/msg/VelCmd.msg)
Ignore `vehicle_name` field, leave it to blank. We will use `vehicle_name` in future for multiple drones.
-- `/gimbal_angle_euler_cmd` [airsim_ros_pkgs/GimbalAngleEulerCmd](https://github.com/microsoft/AirSim/tree/master/ros/src/airsim_ros_pkgs/msg/GimbalAngleEulerCmd.msg)
+- `/gimbal_angle_euler_cmd` [airsim_ros_pkgs/GimbalAngleEulerCmd](https://github.com/microsoft/AirSim/tree/main/ros/src/airsim_ros_pkgs/msg/GimbalAngleEulerCmd.msg)
Gimbal set point in euler angles.
-- `/gimbal_angle_quat_cmd` [airsim_ros_pkgs/GimbalAngleQuatCmd](https://github.com/microsoft/AirSim/tree/master/ros/src/airsim_ros_pkgs/msg/GimbalAngleQuatCmd.msg)
+- `/gimbal_angle_quat_cmd` [airsim_ros_pkgs/GimbalAngleQuatCmd](https://github.com/microsoft/AirSim/tree/main/ros/src/airsim_ros_pkgs/msg/GimbalAngleQuatCmd.msg)
Gimbal set point in quaternion.
-- `/airsim_node/VEHICLE_NAME/car_cmd` [airsim_ros_pkgs/CarControls](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_ros_pkgs/msg/CarControls.msg)
-Throttle, brake, steering and gear selections for control. Both automatic and manual transmission control possible, see the [`car_joy.py`](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_ros_pkgs/scripts/car_joy) script for use.
+- `/airsim_node/VEHICLE_NAME/car_cmd` [airsim_ros_pkgs/CarControls](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_ros_pkgs/msg/CarControls.msg)
+Throttle, brake, steering and gear selections for control. Both automatic and manual transmission control possible, see the [`car_joy.py`](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_ros_pkgs/scripts/car_joy) script for use.
#### Services:
@@ -197,16 +197,16 @@ Throttle, brake, steering and gear selections for control. Both automatic and ma
#### Services:
-- `/airsim_node/VEHICLE_NAME/gps_goal` [Request: [srv/SetGPSPosition](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_ros_pkgs/srv/SetGPSPosition.srv)]
+- `/airsim_node/VEHICLE_NAME/gps_goal` [Request: [srv/SetGPSPosition](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_ros_pkgs/srv/SetGPSPosition.srv)]
Target gps position + yaw.
In **absolute** altitude.
-- `/airsim_node/VEHICLE_NAME/local_position_goal` [Request: [srv/SetLocalPosition](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_ros_pkgs/srv/SetLocalPosition.srv)]
+- `/airsim_node/VEHICLE_NAME/local_position_goal` [Request: [srv/SetLocalPosition](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_ros_pkgs/srv/SetLocalPosition.srv)]
Target local position + yaw in global NED frame.
#### Subscribers:
-- `/airsim_node/origin_geo_point` [airsim_ros_pkgs/GPSYaw](https://github.com/microsoft/AirSim/tree/master/ros/src/airsim_ros_pkgs/msg/GPSYaw.msg)
+- `/airsim_node/origin_geo_point` [airsim_ros_pkgs/GPSYaw](https://github.com/microsoft/AirSim/tree/main/ros/src/airsim_ros_pkgs/msg/GPSYaw.msg)
Listens to home geo coordinates published by `airsim_node`.
- `/airsim_node/VEHICLE_NAME/odom_local_ned` [nav_msgs/Odometry](https://docs.ros.org/api/nav_msgs/html/msg/Odometry.html)
@@ -214,7 +214,7 @@ Throttle, brake, steering and gear selections for control. Both automatic and ma
#### Publishers:
-- `/vel_cmd_world_frame` [airsim_ros_pkgs/VelCmd](https://github.com/microsoft/AirSim/tree/master/ros/src/airsim_ros_pkgs/msg/VelCmd.msg)
+- `/vel_cmd_world_frame` [airsim_ros_pkgs/VelCmd](https://github.com/microsoft/AirSim/tree/main/ros/src/airsim_ros_pkgs/msg/VelCmd.msg)
Sends velocity command to `airsim_node`
#### Global params
@@ -298,7 +298,7 @@ roslaunch airsim_ros_pkgs rviz.launch
### Using Docker for ROS
-A Dockerfile is present in the [`tools`](https://github.com/microsoft/AirSim/tree/master/tools/Dockerfile-ROS) directory. To build the `airsim-ros` image -
+A Dockerfile is present in the [`tools`](https://github.com/microsoft/AirSim/tree/main/tools/Dockerfile-ROS) directory. To build the `airsim-ros` image -
```shell
cd tools
diff --git a/docs/airsim_tutorial_pkgs.md b/docs/airsim_tutorial_pkgs.md
index 6f2719cba2..288640b884 100644
--- a/docs/airsim_tutorial_pkgs.md
+++ b/docs/airsim_tutorial_pkgs.md
@@ -1,7 +1,7 @@
# AirSim ROS Tutorials
This is a set of sample AirSim `settings.json`s, roslaunch and rviz files to give a starting point for using AirSim with ROS.
-See [airsim_ros_pkgs](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_ros_pkgs/README.md) for the ROS API.
+See [airsim_ros_pkgs](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_ros_pkgs/README.md) for the ROS API.
## Setup
@@ -26,7 +26,7 @@ catkin build airsim_tutorial_pkgs -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=
## Examples
### Single drone with monocular and depth cameras, and lidar
- - Settings.json - [front_stereo_and_center_mono.json](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_tutorial_pkgs/settings/front_stereo_and_center_mono.json)
+ - Settings.json - [front_stereo_and_center_mono.json](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_tutorial_pkgs/settings/front_stereo_and_center_mono.json)
```shell
$ source PATH_TO/AirSim/ros/devel/setup.bash
$ roscd airsim_tutorial_pkgs
@@ -40,11 +40,11 @@ catkin build airsim_tutorial_pkgs -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=
$ source PATH_TO/AirSim/ros/devel/setup.bash
$ roslaunch airsim_tutorial_pkgs front_stereo_and_center_mono.launch
```
- The above would start rviz with tf's, registered RGBD cloud using [depth_image_proc](https://wiki.ros.org/depth_image_proc) using the [`depth_to_pointcloud` launch file](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_tutorial_pkgs/launch/front_stereo_and_center_mono/depth_to_pointcloud.launch), and the lidar point cloud.
+ The above would start rviz with tf's, registered RGBD cloud using [depth_image_proc](https://wiki.ros.org/depth_image_proc) using the [`depth_to_pointcloud` launch file](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_tutorial_pkgs/launch/front_stereo_and_center_mono/depth_to_pointcloud.launch), and the lidar point cloud.
### Two drones, with cameras, lidar, IMU each
-- Settings.json - [two_drones_camera_lidar_imu.json](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_tutorial_pkgs/settings/two_drones_camera_lidar_imu.json)
+- Settings.json - [two_drones_camera_lidar_imu.json](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_tutorial_pkgs/settings/two_drones_camera_lidar_imu.json)
```shell
$ source PATH_TO/AirSim/ros/devel/setup.bash
@@ -59,7 +59,7 @@ catkin build airsim_tutorial_pkgs -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=
You can view the tfs in rviz. And do a `rostopic list` and `rosservice list` to inspect the services avaiable.
### Twenty-five drones in a square pattern
-- Settings.json - [twenty_five_drones.json](https://github.com/microsoft/AirSim/blob/master/ros/src/airsim_tutorial_pkgs/settings/twenty_five_drones.json)
+- Settings.json - [twenty_five_drones.json](https://github.com/microsoft/AirSim/blob/main/ros/src/airsim_tutorial_pkgs/settings/twenty_five_drones.json)
```shell
$ source PATH_TO/AirSim/ros/devel/setup.bash
diff --git a/docs/apis.md b/docs/apis.md
index 5030a4b92a..de14e5fe90 100644
--- a/docs/apis.md
+++ b/docs/apis.md
@@ -125,13 +125,13 @@ for response in responses:
* `simGetObjectPose`, `simSetObjectPose`: Gets and sets the pose of specified object in Unreal environment. Here the object means "actor" in Unreal terminology. They are searched by tag as well as name. Please note that the names shown in UE Editor are *auto-generated* in each run and are not permanent. So if you want to refer to actor by name, you must change its auto-generated name in UE Editor. Alternatively you can add a tag to actor which can be done by clicking on that actor in Unreal Editor and then going to [Tags property](https://answers.unrealengine.com/questions/543807/whats-the-difference-between-tag-and-tag.html), click "+" sign and add some string value. If multiple actors have same tag then the first match is returned. If no matches are found then NaN pose is returned. The returned pose is in NED coordinates in SI units in the world frame. For `simSetObjectPose`, the specified actor must have [Mobility](https://docs.unrealengine.com/en-us/Engine/Actors/Mobility) set to Movable or otherwise you will get undefined behavior. The `simSetObjectPose` has parameter `teleport` which means object is [moved through other objects](https://www.unrealengine.com/en-US/blog/moving-physical-objects) in its way and it returns true if move was successful
### Image / Computer Vision APIs
-AirSim offers comprehensive images APIs to retrieve synchronized images from multiple cameras along with ground truth including depth, disparity, surface normals and vision. You can set the resolution, FOV, motion blur etc parameters in [settings.json](settings.md). There is also API for detecting collision state. See also [complete code](https://github.com/Microsoft/AirSim/tree/master/Examples/DataCollection/StereoImageGenerator.hpp) that generates specified number of stereo images and ground truth depth with normalization to camera plane, computation of disparity image and saving it to [pfm format](pfm.md).
+AirSim offers comprehensive images APIs to retrieve synchronized images from multiple cameras along with ground truth including depth, disparity, surface normals and vision. You can set the resolution, FOV, motion blur etc parameters in [settings.json](settings.md). There is also API for detecting collision state. See also [complete code](https://github.com/Microsoft/AirSim/tree/main/Examples/DataCollection/StereoImageGenerator.hpp) that generates specified number of stereo images and ground truth depth with normalization to camera plane, computation of disparity image and saving it to [pfm format](pfm.md).
More on [image APIs and Computer Vision mode](image_apis.md).
For vision problems that can benefit from domain randomization, there is also an [object retexturing API](retexturing.md), which can be used in supported scenes.
### Pause and Continue APIs
-AirSim allows to pause and continue the simulation through `pause(is_paused)` API. To pause the simulation call `pause(True)` and to continue the simulation call `pause(False)`. You may have scenario, especially while using reinforcement learning, to run the simulation for specified amount of time and then automatically pause. While simulation is paused, you may then do some expensive computation, send a new command and then again run the simulation for specified amount of time. This can be achieved by API `continueForTime(seconds)`. This API runs the simulation for the specified number of seconds and then pauses the simulation. For example usage, please see [pause_continue_car.py](https://github.com/Microsoft/AirSim/tree/master/PythonClient//car/pause_continue_car.py) and [pause_continue_drone.py](https://github.com/Microsoft/AirSim/tree/master/PythonClient//multirotor/pause_continue_drone.py).
+AirSim allows to pause and continue the simulation through `pause(is_paused)` API. To pause the simulation call `pause(True)` and to continue the simulation call `pause(False)`. You may have scenario, especially while using reinforcement learning, to run the simulation for specified amount of time and then automatically pause. While simulation is paused, you may then do some expensive computation, send a new command and then again run the simulation for specified amount of time. This can be achieved by API `continueForTime(seconds)`. This API runs the simulation for the specified number of seconds and then pauses the simulation. For example usage, please see [pause_continue_car.py](https://github.com/Microsoft/AirSim/tree/main/PythonClient//car/pause_continue_car.py) and [pause_continue_drone.py](https://github.com/Microsoft/AirSim/tree/main/PythonClient//multirotor/pause_continue_drone.py).
### Collision API
@@ -180,9 +180,9 @@ class WeatherParameter:
Fog = 7
```
-Please note that `Roadwetness`, `RoadSnow` and `RoadLeaf` effects requires adding [materials](https://github.com/Microsoft/AirSim/tree/master/Unreal/Plugins/AirSim/Content/Weather/WeatherFX) to your scene.
+Please note that `Roadwetness`, `RoadSnow` and `RoadLeaf` effects requires adding [materials](https://github.com/Microsoft/AirSim/tree/main/Unreal/Plugins/AirSim/Content/Weather/WeatherFX) to your scene.
-Please see [example code](https://github.com/Microsoft/AirSim/blob/master/PythonClient/environment/weather.py) for more details.
+Please see [example code](https://github.com/Microsoft/AirSim/blob/main/PythonClient/environment/weather.py) for more details.
### Recording APIs
@@ -210,7 +210,7 @@ wind = airsim.Vector3r(20, 0, 0)
client.simSetWind(wind)
```
-Also see example script in [set_wind.py](https://github.com/Microsoft/AirSim/blob/master/PythonClient/multirotor/set_wind.py)
+Also see example script in [set_wind.py](https://github.com/Microsoft/AirSim/blob/main/PythonClient/multirotor/set_wind.py)
### Lidar APIs
AirSim offers API to retrieve point cloud data from Lidar sensors on vehicles. You can set the number of channels, points per second, horizontal and vertical FOV, etc parameters in [settings.json](settings.md).
@@ -294,9 +294,9 @@ See the [Adding New APIs](adding_new_apis.md) page
## References and Examples
* [C++ API Examples](apis_cpp.md)
-* [Car Examples](https://github.com/Microsoft/AirSim/tree/master/PythonClient//car)
-* [Multirotor Examples](https://github.com/Microsoft/AirSim/tree/master/PythonClient//multirotor)
-* [Computer Vision Examples](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision)
+* [Car Examples](https://github.com/Microsoft/AirSim/tree/main/PythonClient//car)
+* [Multirotor Examples](https://github.com/Microsoft/AirSim/tree/main/PythonClient//multirotor)
+* [Computer Vision Examples](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision)
* [Move on Path](https://github.com/Microsoft/AirSim/wiki/moveOnPath-demo) demo showing video of fast multirotor flight through Modular Neighborhood environment
* [Building a Hexacopter](https://github.com/Microsoft/AirSim/wiki/hexacopter)
* [Building Point Clouds](https://github.com/Microsoft/AirSim/wiki/Point-Clouds)
diff --git a/docs/apis_cpp.md b/docs/apis_cpp.md
index 8339066e8f..4354806f35 100644
--- a/docs/apis_cpp.md
+++ b/docs/apis_cpp.md
@@ -4,7 +4,7 @@ Please read [general API doc](apis.md) first if you haven't already. This docume
## Quick Start
-Fastest way to get started is to open AirSim.sln in Visual Studio 2019. You will see [Hello Car](https://github.com/Microsoft/AirSim/tree/master/HelloCar/) and [Hello Drone](https://github.com/Microsoft/AirSim/tree/master/HelloDrone/) examples in the solution. These examples will show you the include paths and lib paths you will need to setup in your VC++ projects. If you are using Linux then you will specify these paths either in your [cmake file](https://github.com/Microsoft/AirSim/tree/master/cmake//HelloCar/CMakeLists.txt) or on compiler command line.
+Fastest way to get started is to open AirSim.sln in Visual Studio 2019. You will see [Hello Car](https://github.com/Microsoft/AirSim/tree/main/HelloCar/) and [Hello Drone](https://github.com/Microsoft/AirSim/tree/main/HelloDrone/) examples in the solution. These examples will show you the include paths and lib paths you will need to setup in your VC++ projects. If you are using Linux then you will specify these paths either in your [cmake file](https://github.com/Microsoft/AirSim/tree/main/cmake//HelloCar/CMakeLists.txt) or on compiler command line.
#### Include and Lib Folders
@@ -19,7 +19,7 @@ Here's how to use AirSim APIs using C++ to control simulated car (see also [Pyth
```cpp
-// ready to run example: https://github.com/Microsoft/AirSim/blob/master/HelloCar/main.cpp
+// ready to run example: https://github.com/Microsoft/AirSim/blob/main/HelloCar/main.cpp
#include
#include "vehicles/car/api/CarRpcLibClient.hpp"
@@ -57,7 +57,7 @@ Here's how to use AirSim APIs using C++ to control simulated quadrotor (see also
```cpp
-// ready to run example: https://github.com/Microsoft/AirSim/blob/master/HelloDrone/main.cpp
+// ready to run example: https://github.com/Microsoft/AirSim/blob/main/HelloDrone/main.cpp
#include
#include "vehicles/multirotor/api/MultirotorRpcLibClient.hpp"
@@ -88,7 +88,7 @@ int main()
## See Also
-* [Examples](https://github.com/microsoft/AirSim/tree/master/Examples) of how to use internal infrastructure in AirSim in your other projects
-* [DroneShell](https://github.com/microsoft/AirSim/tree/master/DroneShell) app shows how to make simple interface using C++ APIs to control drones
-* [HelloSpawnedDrones](https://github.com/microsoft/AirSim/tree/master/HelloSpawnedDrones) app shows how to make additional vehicles on the fly
+* [Examples](https://github.com/microsoft/AirSim/tree/main/Examples) of how to use internal infrastructure in AirSim in your other projects
+* [DroneShell](https://github.com/microsoft/AirSim/tree/main/DroneShell) app shows how to make simple interface using C++ APIs to control drones
+* [HelloSpawnedDrones](https://github.com/microsoft/AirSim/tree/main/HelloSpawnedDrones) app shows how to make additional vehicles on the fly
* [Python APIs](apis.md)
diff --git a/docs/azure.md b/docs/azure.md
index fc588d318d..5562c22577 100644
--- a/docs/azure.md
+++ b/docs/azure.md
@@ -72,12 +72,12 @@ docker build -t / -f ./docker/Dockerfile .`
To use a different AirSim binary, first check the official documentation on [How to Build AirSim on Windows](build_windows.md) and [How to Build AirSim on Linux](build_linux.md) if you also want to run it with Docker
Once you have a zip file with the new AirSim environment (or prefer to use one from the [Official Releases](https://github.com/microsoft/AirSim/releases)), you need to modify some of the scripts in the `azure` directory of the repository to point to the new environment:
-- In [`azure/azure-env-creation/configure-vm.ps1`](https://github.com/microsoft/AirSim/blob/master/azure/azure-env-creation/configure-vm.ps1), modify all the parameters starting with `$airSimBinary` with the new values
-- In [`azure/start-airsim.ps1`](https://github.com/microsoft/AirSim/blob/master/azure/start-airsim.ps1), modify `$airSimExecutable` and `$airSimProcessName` with the new values
+- In [`azure/azure-env-creation/configure-vm.ps1`](https://github.com/microsoft/AirSim/blob/main/azure/azure-env-creation/configure-vm.ps1), modify all the parameters starting with `$airSimBinary` with the new values
+- In [`azure/start-airsim.ps1`](https://github.com/microsoft/AirSim/blob/main/azure/start-airsim.ps1), modify `$airSimExecutable` and `$airSimProcessName` with the new values
If you are using the docker image, you also need a linux binary zip file and modify the following Docker-related files:
-- In [`azure/docker/Dockerfile`](https://github.com/microsoft/AirSim/blob/master/azure/docker/Dockerfile), modify the `AIRSIM_BINARY_ZIP_URL` and `AIRSIM_BINARY_ZIP_FILENAME` ENV declarations with the new values
-- In [`azure/docker/docker-entrypoint.sh`](https://github.com/microsoft/AirSim/blob/master/azure/docker/docker-entrypoint.sh), modify `AIRSIM_EXECUTABLE` with the new value
+- In [`azure/docker/Dockerfile`](https://github.com/microsoft/AirSim/blob/main/azure/docker/Dockerfile), modify the `AIRSIM_BINARY_ZIP_URL` and `AIRSIM_BINARY_ZIP_FILENAME` ENV declarations with the new values
+- In [`azure/docker/docker-entrypoint.sh`](https://github.com/microsoft/AirSim/blob/main/azure/docker/docker-entrypoint.sh), modify `AIRSIM_EXECUTABLE` with the new value
## Maintaining this development environment
diff --git a/docs/build_linux.md b/docs/build_linux.md
index 81940f0365..ffb0523f7e 100644
--- a/docs/build_linux.md
+++ b/docs/build_linux.md
@@ -16,11 +16,11 @@ Please see instructions [here](docker_ubuntu.md)
- Make sure you are [registered with Epic Games](https://docs.unrealengine.com/en-US/SharingAndReleasing/Linux/BeginnerLinuxDeveloper/SettingUpAnUnrealWorkflow/index.html). This is required to get source code access for Unreal Engine.
-- Clone Unreal in your favorite folder and build it (this may take a while!). **Note**: We only support Unreal >= 4.25 at present. We recommend using 4.25.
+- Clone Unreal in your favorite folder and build it (this may take a while!). **Note**: We only support Unreal >= 4.27 at present. We recommend using 4.27.
```bash
# go to the folder where you clone GitHub projects
-git clone -b 4.25 git@github.com:EpicGames/UnrealEngine.git
+git clone -b 4.27 git@github.com:EpicGames/UnrealEngine.git
cd UnrealEngine
./Setup.sh
./GenerateProjectFiles.sh
@@ -37,7 +37,7 @@ git clone https://github.com/Microsoft/AirSim.git
cd AirSim
```
-By default AirSim uses clang 8 to build for compatibility with UE 4.25. The setup script will install the right version of cmake, llvm, and eigen.
+By default AirSim uses clang 8 to build for compatibility with UE 4.27. The setup script will install the right version of cmake, llvm, and eigen.
```bash
./setup.sh
diff --git a/docs/build_windows.md b/docs/build_windows.md
index 6b8e7fbc95..e675750c67 100644
--- a/docs/build_windows.md
+++ b/docs/build_windows.md
@@ -4,7 +4,7 @@
1. [Download](https://www.unrealengine.com/download) the Epic Games Launcher. While the Unreal Engine is open source and free to download, registration is still required.
2. Run the Epic Games Launcher, open the `Unreal Engine` tab on the left pane.
-Click on the `Install` button on the top right, which should show the option to download **Unreal Engine >= 4.25**. Chose the install location to suit your needs, as shown in the images below. If you have multiple versions of Unreal installed then **make sure the version you are using is set to `current`** by clicking down arrow next to the Launch button for the version.
+Click on the `Install` button on the top right, which should show the option to download **Unreal Engine >= 4.27**. Chose the install location to suit your needs, as shown in the images below. If you have multiple versions of Unreal installed then **make sure the version you are using is set to `current`** by clicking down arrow next to the Launch button for the version.
**Note**: If you have UE 4.16 or older projects, please see the [upgrade guide](unreal_upgrade.md) to upgrade your projects.
@@ -13,9 +13,9 @@ Click on the `Install` button on the top right, which should show the option to

## Build AirSim
-* Install Visual Studio 2019.
-**Make sure** to select **Desktop Development with C++** and **Windows 10 SDK 10.0.18362** (should be selected by default) and select the latest .NET Framework SDK under the 'Individual Components' tab while installing VS 2019.
-* Start `Developer Command Prompt for VS 2019`.
+* Install Visual Studio 2022.
+**Make sure** to select **Desktop Development with C++** and **Windows 10 SDK 10.0.19041** (should be selected by default) and select the latest .NET Framework SDK under the 'Individual Components' tab while installing VS 2022.
+* Start `Developer Command Prompt for VS 2022`.
* Clone the repo: `git clone https://github.com/Microsoft/AirSim.git`, and go the AirSim directory by `cd AirSim`.
**Note:** It's generally not a good idea to install AirSim in C drive. This can cause scripts to fail, and requires running VS in Admin mode. Instead clone in a different drive such as D or E.
@@ -37,6 +37,9 @@ Alternatively, you can use [APIs](apis.md) for programmatic control or use the s
Once AirSim is set up by following above steps, you can,
1. Double click on .sln file to load the Blocks project in `Unreal\Environments\Blocks` (or .sln file in your own [custom](unreal_custenv.md) Unreal project). If you don't see .sln file then you probably haven't completed steps in Build Unreal Project section above.
+
+ **Note**: Unreal 4.27 will auto-generate the .sln file targetting Visual Studio 2019. Visual Studio 2022 will be able to load and run this .sln, but if you want full Visual Studio 2022 support, you will need to explicitly enable support by going to 'Edit->Editor Preferences->Source Code' and selecting 'Visual Studio 2022' for the 'Source Code Editor' setting.
+
2. Select your Unreal project as Start Up project (for example, Blocks project) and make sure Build config is set to "Develop Editor" and x64.
3. After Unreal Editor loads, press Play button.
diff --git a/docs/code_structure.md b/docs/code_structure.md
index ac2431c203..f7c3817f7a 100644
--- a/docs/code_structure.md
+++ b/docs/code_structure.md
@@ -6,27 +6,27 @@ Majority of the code is located in AirLib. This is a self-contained library that
AirLib consists of the following components:
-1. [*Physics engine:*](https://github.com/microsoft/AirSim/tree/master/AirLib/include/physics) This is header-only physics engine. It is designed to be fast and extensible to implement different vehicles.
-2. [*Sensor models:*](https://github.com/microsoft/AirSim/tree/master/AirLib/include/sensors) This is header-only models for Barometer, IMU, GPS and Magnetometer.
-3. [*Vehicle models:*](https://github.com/microsoft/AirSim/tree/master/AirLib/include/vehiclesr) This is header-only models for vehicle configurations and models. Currently we have implemented model for a MultiRotor and a configuration for PX4 QuadRotor in the X config. There are several different Multirotor models defined in MultiRotorParams.hpp including a hexacopter as well.
-4. [*API-related files:*](https://github.com/microsoft/AirSim/tree/master/AirLib/include/api) This part of AirLib provides abstract base class for our APIs and concrete implementation for specific vehicle platforms such as MavLink. It also has classes for the RPC client and server.
+1. [*Physics engine:*](https://github.com/microsoft/AirSim/tree/main/AirLib/include/physics) This is header-only physics engine. It is designed to be fast and extensible to implement different vehicles.
+2. [*Sensor models:*](https://github.com/microsoft/AirSim/tree/main/AirLib/include/sensors) This is header-only models for Barometer, IMU, GPS and Magnetometer.
+3. [*Vehicle models:*](https://github.com/microsoft/AirSim/tree/main/AirLib/include/vehiclesr) This is header-only models for vehicle configurations and models. Currently we have implemented model for a MultiRotor and a configuration for PX4 QuadRotor in the X config. There are several different Multirotor models defined in MultiRotorParams.hpp including a hexacopter as well.
+4. [*API-related files:*](https://github.com/microsoft/AirSim/tree/main/AirLib/include/api) This part of AirLib provides abstract base class for our APIs and concrete implementation for specific vehicle platforms such as MavLink. It also has classes for the RPC client and server.
-Apart from these, all common utilities are defined in [`common/`](https://github.com/microsoft/AirSim/tree/master/AirLib/include/common) subfolder. One important file here is [AirSimSettings.hpp](https://github.com/microsoft/AirSim/blob/master/AirLib/include/common/AirSimSettings.hpp) which should be modified if any new fields are to be added in `settings.json`.
+Apart from these, all common utilities are defined in [`common/`](https://github.com/microsoft/AirSim/tree/main/AirLib/include/common) subfolder. One important file here is [AirSimSettings.hpp](https://github.com/microsoft/AirSim/blob/main/AirLib/include/common/AirSimSettings.hpp) which should be modified if any new fields are to be added in `settings.json`.
-AirSim supports different firmwares for Multirotor such as its own SimpleFlight, PX4 and ArduPilot, files for communicating with each firmware are placed in their respective subfolders in [`multirotor/firmwares`](https://github.com/microsoft/AirSim/tree/master/AirLib/include/vehicles/multirotor/firmwares).
+AirSim supports different firmwares for Multirotor such as its own SimpleFlight, PX4 and ArduPilot, files for communicating with each firmware are placed in their respective subfolders in [`multirotor/firmwares`](https://github.com/microsoft/AirSim/tree/main/AirLib/include/vehicles/multirotor/firmwares).
-The vehicle-specific APIs are defined in the `api/` subfolder, along-with required structs. The [`AirLib/src/`](https://github.com/microsoft/AirSim/tree/master/AirLib/src) contains .cpp files with implementations of various mehtods defined in the .hpp files. For e.g. [MultirotorApiBase.cpp](https://github.com/microsoft/AirSim/blob/master/AirLib/src/vehicles/multirotor/api/MultirotorApiBase.cpp) contains the base implementation of the multirotor APIs, which can also be overridden in the specific firmware files if required.
+The vehicle-specific APIs are defined in the `api/` subfolder, along-with required structs. The [`AirLib/src/`](https://github.com/microsoft/AirSim/tree/main/AirLib/src) contains .cpp files with implementations of various mehtods defined in the .hpp files. For e.g. [MultirotorApiBase.cpp](https://github.com/microsoft/AirSim/blob/main/AirLib/src/vehicles/multirotor/api/MultirotorApiBase.cpp) contains the base implementation of the multirotor APIs, which can also be overridden in the specific firmware files if required.
## Unreal/Plugins/AirSim
This is the only portion of project which is dependent on Unreal engine. We have kept it isolated so we can implement simulator for other platforms as well, as has been done for [Unity](https://microsoft.github.io/AirSim/Unity.html). The Unreal code takes advantage of its UObject based classes including Blueprints. The `Source/` folder contains the C++ files, while the `Content/` folder has the blueprints and assets. Some main components are described below:
-1. *SimMode_ classes*: The SimMode classes help implement many different modes, such as pure Computer Vision mode, where there is no vehicle or simulation for a specific vehicle (currently car and multirotor). The vehicle classes are located in [`Vehicles/`](https://github.com/microsoft/AirSim/tree/master/Unreal/Plugins/AirSim/Source/Vehicles)
-2. *PawnSimApi*: This is the [base class](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Source/PawnSimApi.cpp) for all vehicle pawn visualizations. Each vehicle has their own child (Multirotor|Car|ComputerVision)Pawn class.
-3. [UnrealSensors](https://github.com/microsoft/AirSim/tree/master/Unreal/Plugins/AirSim/Source/UnrealSensors): Contains implementation of Distance and Lidar sensors.
+1. *SimMode_ classes*: The SimMode classes help implement many different modes, such as pure Computer Vision mode, where there is no vehicle or simulation for a specific vehicle (currently car and multirotor). The vehicle classes are located in [`Vehicles/`](https://github.com/microsoft/AirSim/tree/main/Unreal/Plugins/AirSim/Source/Vehicles)
+2. *PawnSimApi*: This is the [base class](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Source/PawnSimApi.cpp) for all vehicle pawn visualizations. Each vehicle has their own child (Multirotor|Car|ComputerVision)Pawn class.
+3. [UnrealSensors](https://github.com/microsoft/AirSim/tree/main/Unreal/Plugins/AirSim/Source/UnrealSensors): Contains implementation of Distance and Lidar sensors.
4. *WorldSimApi*: Implements most of the environment and vehicle-agnostic APIs
-Apart from these, [`PIPCamera`](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Source/PIPCamera.cpp) contains the camera initialization, and [`UnrealImageCapture`](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Source/UnrealImageCapture.cpp) & [`RenderRequest`](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Source/RenderRequest.cpp) the image rendering code. [`AirBlueprintLib`](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Source/AirBlueprintLib.cpp) has a lot of utility and wrapper methods used to interface with the UE4 engine.
+Apart from these, [`PIPCamera`](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Source/PIPCamera.cpp) contains the camera initialization, and [`UnrealImageCapture`](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Source/UnrealImageCapture.cpp) & [`RenderRequest`](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Source/RenderRequest.cpp) the image rendering code. [`AirBlueprintLib`](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Source/AirBlueprintLib.cpp) has a lot of utility and wrapper methods used to interface with the UE4 engine.
## MavLinkCom
@@ -40,7 +40,7 @@ DroneShell demonstrates how to connect to the simulator using UDP. The simulato
## PythonClient
-[PythonClient](https://github.com/microsoft/AirSim/tree/master/PythonClient) contains Python API wrapper files and sample programs demonstrating their uses.
+[PythonClient](https://github.com/microsoft/AirSim/tree/main/PythonClient) contains Python API wrapper files and sample programs demonstrating their uses.
## Contributing
diff --git a/docs/custom_drone.md b/docs/custom_drone.md
index fc3429ea97..332f39aa5a 100644
--- a/docs/custom_drone.md
+++ b/docs/custom_drone.md
@@ -62,8 +62,8 @@ You can run the MavlinkCom library and MavLinkTest app to test the connection
between your companion computer and flight controller.
## How Does This Work?
-AirSim uses MavLinkCom component developed by @lovettchris. The MavLinkCom has a proxy architecture where you can open a connection to PX4 either using serial or UDP and then other components share this connection. When PX4 sends MavLink message, all components receive that message. If any component sends a message then it's received by PX4 only. This allows you to connect any number of components to PX4 [This code](https://github.com/microsoft/AirSim/blob/master/AirLib/include/vehicles/multirotor/firmwares/mavlink/MavLinkMultirotorApi.hpp#L600) opens a connection for LogViewer and QGC. You can add something more if you like.
+AirSim uses MavLinkCom component developed by @lovettchris. The MavLinkCom has a proxy architecture where you can open a connection to PX4 either using serial or UDP and then other components share this connection. When PX4 sends MavLink message, all components receive that message. If any component sends a message then it's received by PX4 only. This allows you to connect any number of components to PX4 [This code](https://github.com/microsoft/AirSim/blob/main/AirLib/include/vehicles/multirotor/firmwares/mavlink/MavLinkMultirotorApi.hpp#L600) opens a connection for LogViewer and QGC. You can add something more if you like.
If you want to use QGC + AirSim together than you will need QGC to let own the serial port. QGC opens up TCP connection that acts as a proxy so any other component can connect to QGC and send MavLinkMessage to QGC and then QGC forwards that message to PX4. So you tell AirSim to connect to QGC and let QGC own serial port.
-For companion board, the way we did it earlier was to have Gigabyte Brix on the drone. This x86 full-fledged computer that will connect to PX4 through USB. We had Ubuntu on Brix and ran [DroneServer](https://github.com/Microsoft/AirSim/tree/master/DroneServer). The DroneServer created an API endpoint that we can talk to via C++ client code (or Python code) and it translated API calls to MavLink messages. That way you can write your code against the same API, test it in the simulator and then run the same code on an actual vehicle. So the companion computer has DroneServer running along with client code.
+For companion board, the way we did it earlier was to have Gigabyte Brix on the drone. This x86 full-fledged computer that will connect to PX4 through USB. We had Ubuntu on Brix and ran [DroneServer](https://github.com/Microsoft/AirSim/tree/main/DroneServer). The DroneServer created an API endpoint that we can talk to via C++ client code (or Python code) and it translated API calls to MavLink messages. That way you can write your code against the same API, test it in the simulator and then run the same code on an actual vehicle. So the companion computer has DroneServer running along with client code.
diff --git a/docs/distance_sensor.md b/docs/distance_sensor.md
index f6d5ee4ac7..557745ea8f 100644
--- a/docs/distance_sensor.md
+++ b/docs/distance_sensor.md
@@ -22,4 +22,4 @@ For example, to make the sensor point towards the ground (for altitude measureme
}
```
-**Note:** For Cars, the sensor is placed 1 meter above the vehicle center by default. This is required since otherwise the sensor gives strange data due it being inside the vehicle. This doesn't affect the sensor values say when measuring the distance between 2 cars. See [`PythonClient/car/distance_sensor_multi.py`](https://github.com/Microsoft/AirSim/blob/master/PythonClient/car/distance_sensor_multi.py) for an example usage.
\ No newline at end of file
+**Note:** For Cars, the sensor is placed 1 meter above the vehicle center by default. This is required since otherwise the sensor gives strange data due it being inside the vehicle. This doesn't affect the sensor values say when measuring the distance between 2 cars. See [`PythonClient/car/distance_sensor_multi.py`](https://github.com/Microsoft/AirSim/blob/main/PythonClient/car/distance_sensor_multi.py) for an example usage.
\ No newline at end of file
diff --git a/docs/docker_ubuntu.md b/docs/docker_ubuntu.md
index 8c5684932f..5cabffe6f7 100644
--- a/docs/docker_ubuntu.md
+++ b/docs/docker_ubuntu.md
@@ -128,7 +128,7 @@ You can test it by running `/home/ue4/Binaries/Blocks/LinuxNoEditor/Blocks.sh -w
### Specifying settings.json
#### `airsim_binary` docker image:
- We're mapping the host machine's `PATH/TO/Airsim/docker/settings.json` to the docker container's `/home/airsim_user/Documents/AirSim/settings.json`.
- - Hence, we can load any settings file by simply modifying `PATH_TO_YOUR/settings.json` by modifying the following snippets in [`run_airsim_image_binary.sh`](https://github.com/Microsoft/AirSim/blob/master/docker/run_airsim_image_binary.sh)
+ - Hence, we can load any settings file by simply modifying `PATH_TO_YOUR/settings.json` by modifying the following snippets in [`run_airsim_image_binary.sh`](https://github.com/Microsoft/AirSim/blob/main/docker/run_airsim_image_binary.sh)
```bash
nvidia-docker run --runtime=nvidia -it \
@@ -157,7 +157,7 @@ docker run --gpus all -it \
#### `airsim_source` docker image:
* We're mapping the host machine's `PATH/TO/Airsim/docker/settings.json` to the docker container's `/home/airsim_user/Documents/AirSim/settings.json`.
- * Hence, we can load any settings file by simply modifying `PATH_TO_YOUR/settings.json` by modifying the following snippets in [`run_airsim_image_source.sh`](https://github.com/Microsoft/AirSim/blob/master/docker/run_airsim_image_source.sh):
+ * Hence, we can load any settings file by simply modifying `PATH_TO_YOUR/settings.json` by modifying the following snippets in [`run_airsim_image_source.sh`](https://github.com/Microsoft/AirSim/blob/main/docker/run_airsim_image_source.sh):
```bash
nvidia-docker run --runtime=nvidia -it \
diff --git a/docs/drone_survey.md b/docs/drone_survey.md
index 50988da1a7..6d7d186b7e 100644
--- a/docs/drone_survey.md
+++ b/docs/drone_survey.md
@@ -2,7 +2,7 @@
Moved here from [https://github.com/microsoft/AirSim/wiki/Implementing-a-Drone-Survey-script](https://github.com/microsoft/AirSim/wiki/Implementing-a-Drone-Survey-script)
-Ever wanted to capture a bunch of top-down pictures of a certain location? Well, the Python API makes this really simple. See the [code available here](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/survey.py).
+Ever wanted to capture a bunch of top-down pictures of a certain location? Well, the Python API makes this really simple. See the [code available here](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/survey.py).

diff --git a/docs/event_sim.md b/docs/event_sim.md
index f269d98ef6..567e0edc51 100644
--- a/docs/event_sim.md
+++ b/docs/event_sim.md
@@ -14,14 +14,14 @@ x and y are the pixel locations of the event firing, timestamp is the global tim

#### Usage
-An example script to run the event simulator alongside AirSim is located at https://github.com/microsoft/AirSim/blob/master/PythonClient/eventcamera_sim/test_event_sim.py. The following optional command-line arguments can be passed to this script.
+An example script to run the event simulator alongside AirSim is located at https://github.com/microsoft/AirSim/blob/main/PythonClient/eventcamera_sim/test_event_sim.py. The following optional command-line arguments can be passed to this script.
```
args.width, args.height (float): Simulated event camera resolution
args.save (bool): Whether or not to save the event data to a file, args.debug (bool): Whether or not to display the simulated events as an image
```
-The implementation of the actual event simulation, written in Python and numba, is at https://github.com/microsoft/AirSim/blob/master/PythonClient/eventcamera_sim/event_simulator.py. The event simulator is initialized as follows, with the arguments controlling the resolution of the camera.
+The implementation of the actual event simulation, written in Python and numba, is at https://github.com/microsoft/AirSim/blob/main/PythonClient/eventcamera_sim/event_simulator.py. The event simulator is initialized as follows, with the arguments controlling the resolution of the camera.
```
from event_simulator import *
diff --git a/docs/hello_drone.md b/docs/hello_drone.md
index 49928eab67..1fc7eb90b9 100644
--- a/docs/hello_drone.md
+++ b/docs/hello_drone.md
@@ -3,4 +3,4 @@
## How does Hello Drone work?
Hello Drone uses the RPC client to connect to the RPC server that is automatically started by the AirSim.
-The RPC server routes all the commands to a class that implements [MultirotorApiBase](https://github.com/Microsoft/AirSim/tree/master/AirLib//include/vehicles/multirotor/api/MultirotorApiBase.hpp). In essence, MultirotorApiBase defines our abstract interface for getting data from the quadrotor and sending back commands. We currently have concrete implementation for MultirotorApiBase for MavLink based vehicles. The implementation for DJI drone platforms, specifically Matrice, is in works.
+The RPC server routes all the commands to a class that implements [MultirotorApiBase](https://github.com/Microsoft/AirSim/tree/main/AirLib//include/vehicles/multirotor/api/MultirotorApiBase.hpp). In essence, MultirotorApiBase defines our abstract interface for getting data from the quadrotor and sending back commands. We currently have concrete implementation for MultirotorApiBase for MavLink based vehicles. The implementation for DJI drone platforms, specifically Matrice, is in works.
diff --git a/docs/image_apis.md b/docs/image_apis.md
index 963f24702e..2f8a0fb136 100644
--- a/docs/image_apis.md
+++ b/docs/image_apis.md
@@ -124,13 +124,13 @@ int getStereoAndDepthImages()
### Python
-For a more complete ready to run sample code please see [sample code in AirSimClient project](https://github.com/Microsoft/AirSim/tree/master/PythonClient//multirotor/hello_drone.py) for multirotors or [HelloCar sample](https://github.com/Microsoft/AirSim/tree/master/PythonClient//car/hello_car.py). This code also demonstrates simple activities such as saving images in files or using `numpy` to manipulate images.
+For a more complete ready to run sample code please see [sample code in AirSimClient project](https://github.com/Microsoft/AirSim/tree/main/PythonClient//multirotor/hello_drone.py) for multirotors or [HelloCar sample](https://github.com/Microsoft/AirSim/tree/main/PythonClient//car/hello_car.py). This code also demonstrates simple activities such as saving images in files or using `numpy` to manipulate images.
### C++
-For a more complete ready to run sample code please see [sample code in HelloDrone project](https://github.com/Microsoft/AirSim/tree/master/HelloDrone//main.cpp) for multirotors or [HelloCar project](https://github.com/Microsoft/AirSim/tree/master/HelloCar//main.cpp).
+For a more complete ready to run sample code please see [sample code in HelloDrone project](https://github.com/Microsoft/AirSim/tree/main/HelloDrone//main.cpp) for multirotors or [HelloCar project](https://github.com/Microsoft/AirSim/tree/main/HelloCar//main.cpp).
-See also [other example code](https://github.com/Microsoft/AirSim/tree/master/Examples/DataCollection/StereoImageGenerator.hpp) that generates specified number of stereo images along with ground truth depth and disparity and saving it to [pfm format](pfm.md).
+See also [other example code](https://github.com/Microsoft/AirSim/tree/main/Examples/DataCollection/StereoImageGenerator.hpp) that generates specified number of stereo images along with ground truth depth and disparity and saving it to [pfm format](pfm.md).
## Available Cameras
@@ -159,7 +159,7 @@ To active this mode, edit [settings.json](settings.md) that you can find in your
}
```
-[Here's the Python code example](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/cv_mode.py) to move camera around and capture images.
+[Here's the Python code example](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/cv_mode.py) to move camera around and capture images.
This mode was inspired from [UnrealCV project](http://unrealcv.org/).
@@ -167,7 +167,7 @@ This mode was inspired from [UnrealCV project](http://unrealcv.org/).
To move around the environment using APIs you can use `simSetVehiclePose` API. This API takes position and orientation and sets that on the invisible vehicle where the front-center camera is located. All rest of the cameras move along keeping the relative position. If you don't want to change position (or orientation) then just set components of position (or orientation) to floating point nan values. The `simGetVehiclePose` allows to retrieve the current pose. You can also use `simGetGroundTruthKinematics` to get the quantities kinematics quantities for the movement. Many other non-vehicle specific APIs are also available such as segmentation APIs, collision APIs and camera APIs.
## Camera APIs
-The `simGetCameraInfo` returns the pose (in world frame, NED coordinates, SI units) and FOV (in degrees) for the specified camera. Please see [example usage](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/cv_mode.py).
+The `simGetCameraInfo` returns the pose (in world frame, NED coordinates, SI units) and FOV (in degrees) for the specified camera. Please see [example usage](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/cv_mode.py).
The `simSetCameraPose` sets the pose for the specified camera while taking an input pose as a combination of relative position and a quaternion in NED frame. The handy `airsim.to_quaternion()` function allows to convert pitch, roll, yaw to quaternion. For example, to set camera-0 to 15-degree pitch while maintaining the same position, you can use:
```
@@ -178,12 +178,12 @@ client.simSetCameraPose(0, camera_pose);
- `simSetCameraFov` allows changing the Field-of-View of the camera at runtime.
- `simSetDistortionParams`, `simGetDistortionParams` allow setting and fetching the distortion parameters K1, K2, K3, P1, P2
-All Camera APIs take in 3 common parameters apart from the API-specific ones, `camera_name`(str), `vehicle_name`(str) and `external`(bool, to indicate [External Camera](settings.md#external-cameras)). Camera and vehicle name is used to get the specific camera, if `external` is set to `true`, then the vehicle name is ignored. Also see [external_camera.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/computer_vision/external_camera.py) for example usage of these APIs.
+All Camera APIs take in 3 common parameters apart from the API-specific ones, `camera_name`(str), `vehicle_name`(str) and `external`(bool, to indicate [External Camera](settings.md#external-cameras)). Camera and vehicle name is used to get the specific camera, if `external` is set to `true`, then the vehicle name is ignored. Also see [external_camera.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/computer_vision/external_camera.py) for example usage of these APIs.
### Gimbal
You can set stabilization for pitch, roll or yaw for any camera [using settings](settings.md#gimbal).
-Please see [example usage](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/cv_mode.py).
+Please see [example usage](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/cv_mode.py).
## Changing Resolution and Camera Parameters
To change resolution, FOV etc, you can use [settings.json](settings.md). For example, below addition in settings.json sets parameters for scene capture and uses "Computer Vision" mode described above. If you omit any setting then below default values will be used. For more information see [settings doc](settings.md). If you are using stereo camera, currently the distance between left and right is fixed at 25 cm.
@@ -232,7 +232,7 @@ When you specify `ImageType = DepthVis` in `ImageRequest`, you get an image that
You normally want to retrieve disparity image as float (i.e. set `pixels_as_float = true` and specify `ImageType = DisparityNormalized` in `ImageRequest`) in which case each pixel is `(Xl - Xr)/Xmax`, which is thereby normalized to values between 0 to 1.
### Segmentation
-When you specify `ImageType = Segmentation` in `ImageRequest`, you get an image that gives you ground truth segmentation of the scene. At the startup, AirSim assigns value 0 to 255 to each mesh available in environment. This value is then mapped to a specific color in [the pallet](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Content/HUDAssets/seg_color_palette.png). The RGB values for each object ID can be found in [this file](seg_rgbs.txt).
+When you specify `ImageType = Segmentation` in `ImageRequest`, you get an image that gives you ground truth segmentation of the scene. At the startup, AirSim assigns value 0 to 255 to each mesh available in environment. This value is then mapped to a specific color in [the pallet](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Content/HUDAssets/seg_color_palette.png). The RGB values for each object ID can be found in [this file](seg_rgbs.txt).
You can assign a specific value (limited to the range 0-255) to a specific mesh using APIs. For example, below Python code sets the object ID for the mesh called "Ground" to 20 in Blocks environment and hence changes its color in Segmentation view:
@@ -263,7 +263,7 @@ print(np.unique(img_rgb[:,:,1], return_counts=True)) #green
print(np.unique(img_rgb[:,:,2], return_counts=True)) #blue
```
-A complete ready-to-run example can be found in [segmentation.py](https://github.com/Microsoft/AirSim/tree/master/PythonClient//computer_vision/segmentation.py).
+A complete ready-to-run example can be found in [segmentation.py](https://github.com/Microsoft/AirSim/tree/main/PythonClient//computer_vision/segmentation.py).
#### Unsetting object ID
An object's ID can be set to -1 to make it not show up on the segmentation image.
@@ -278,7 +278,7 @@ If you don't know how to open Unreal Environment in Unreal Editor then try follo
Once you decide on the meshes you are interested, note down their names and use above API to set their object IDs. There are [few settings](settings.md#segmentation-settings) available to change object ID generation behavior.
#### Changing Colors for Object IDs
-At present the color for each object ID is fixed as in [this pallet](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Content/HUDAssets/seg_color_palette.png). We will be adding ability to change colors for object IDs to desired values shortly. In the meantime you can open the segmentation image in your favorite image editor and get the RGB values you are interested in.
+At present the color for each object ID is fixed as in [this pallet](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Content/HUDAssets/seg_color_palette.png). We will be adding ability to change colors for object IDs to desired values shortly. In the meantime you can open the segmentation image in your favorite image editor and get the RGB values you are interested in.
#### Startup Object IDs
At the start, AirSim assigns object ID to each object found in environment of type `UStaticMeshComponent` or `ALandscapeProxy`. It then either uses mesh name or owner name (depending on settings), lower cases it, removes any chars below ASCII 97 to remove numbers and some punctuations, sums int value of all chars and modulo 255 to generate the object ID. In other words, all object with same alphabet chars would get same object ID. This heuristic is simple and effective for many Unreal environments but may not be what you want. In that case, please use above APIs to change object IDs to your desired values. There are [few settings](settings.md#segmentation-settings) available to change this behavior.
@@ -293,4 +293,4 @@ Currently this is just a map from object ID to grey scale 0-255. So any mesh wit
These image types return information about motion perceived by the point of view of the camera. OpticalFlow returns a 2-channel image where the channels correspond to vx and vy respectively. OpticalFlowVis is similar to OpticalFlow but converts flow data to RGB for a more 'visual' output.
## Example Code
-A complete example of setting vehicle positions at random locations and orientations and then taking images can be found in [GenerateImageGenerator.hpp](https://github.com/Microsoft/AirSim/tree/master/Examples/DataCollection/StereoImageGenerator.hpp). This example generates specified number of stereo images and ground truth disparity image and saving it to [pfm format](pfm.md).
+A complete example of setting vehicle positions at random locations and orientations and then taking images can be found in [GenerateImageGenerator.hpp](https://github.com/Microsoft/AirSim/tree/main/Examples/DataCollection/StereoImageGenerator.hpp). This example generates specified number of stereo images and ground truth disparity image and saving it to [pfm format](pfm.md).
diff --git a/docs/lidar.md b/docs/lidar.md
index bfc39b3de6..a6fb1dc9a6 100644
--- a/docs/lidar.md
+++ b/docs/lidar.md
@@ -94,7 +94,7 @@ By default, the lidar points are not drawn on the viewport. To enable the drawin
},
```
-**Note:** Enabling `DrawDebugPoints` can cause excessive memory usage and crash in releases `v1.3.1`, `v1.3.0`. This has been fixed in master and should work in later releases
+**Note:** Enabling `DrawDebugPoints` can cause excessive memory usage and crash in releases `v1.3.1`, `v1.3.0`. This has been fixed in the main branch and should work in later releases
## Client API
@@ -112,10 +112,10 @@ Use `getLidarData()` API to retrieve the Lidar data.
* Segmentation: The segmentation of each lidar point's collided object
### Python Examples
-- [drone_lidar.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/drone_lidar.py)
-- [car_lidar.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/car/car_lidar.py)
-- [sensorframe_lidar_pointcloud.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/sensorframe_lidar_pointcloud.py)
-- [vehicleframe_lidar_pointcloud.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/vehicleframe_lidar_pointcloud.py)
+- [drone_lidar.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/drone_lidar.py)
+- [car_lidar.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/car/car_lidar.py)
+- [sensorframe_lidar_pointcloud.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/sensorframe_lidar_pointcloud.py)
+- [vehicleframe_lidar_pointcloud.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/vehicleframe_lidar_pointcloud.py)
## Coming soon
* Visualization of lidar data on client side.
diff --git a/docs/modify_recording_data.md b/docs/modify_recording_data.md
index 3b5d6ce9a3..07035b30a7 100644
--- a/docs/modify_recording_data.md
+++ b/docs/modify_recording_data.md
@@ -24,7 +24,7 @@ Note that this requires building and using AirSim from source. You can compile a
The primary method which fills the data to be stored is [`PawnSimApi::getRecordFileLine`](https://github.com/microsoft/AirSim/blob/880c5541fd4824ee2cd9bb82ca5f611eb1ab236a/Unreal/Plugins/AirSim/Source/PawnSimApi.cpp#L544), it's the base method for all the vehicles, and Car overrides it to log additional data, as can be seen in [`CarPawnSimApi::getRecordFileLine`](https://github.com/microsoft/AirSim/blob/880c5541fd4824ee2cd9bb82ca5f611eb1ab236a/Unreal/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp#L34).
-To record additional data for multirotor, you can add a similar method in [MultirotorPawnSimApi.cpp/h](https://github.com/microsoft/AirSim/tree/master/Unreal/Plugins/AirSim/Source/Vehicles/Multirotor) files which overrides the base class implementation and append other data. The currently logged data can also be modified and removed as needed.
+To record additional data for multirotor, you can add a similar method in [MultirotorPawnSimApi.cpp/h](https://github.com/microsoft/AirSim/tree/main/Unreal/Plugins/AirSim/Source/Vehicles/Multirotor) files which overrides the base class implementation and append other data. The currently logged data can also be modified and removed as needed.
E.g. recording GPS, IMU and Barometer data also for multirotor -
diff --git a/docs/multi_vehicle.md b/docs/multi_vehicle.md
index deac7ae5ef..372be78f80 100644
--- a/docs/multi_vehicle.md
+++ b/docs/multi_vehicle.md
@@ -53,9 +53,9 @@ It's as easy as specifying them in [settings.json](settings.md). The `Vehicles`
The new APIs since AirSim 1.2 allows you to specify `vehicle_name`. This name corresponds to keys in json settings (for example, Car1 or Drone2 above).
-[Example code for cars](https://github.com/microsoft/AirSim/blob/master/PythonClient/car/multi_agent_car.py)
+[Example code for cars](https://github.com/microsoft/AirSim/blob/main/PythonClient/car/multi_agent_car.py)
-[Example code for multirotors](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/multi_agent_drone.py)
+[Example code for multirotors](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/multi_agent_drone.py)
Using APIs for multi-vehicles requires specifying the `vehicle_name`, which needs to be hardcoded in the script or requires parsing of the settings file. There's also a simple API `listVehicles()` which returns a list (vector in C++) of strings containing names of the current vehicles. For example, with the above settings for 2 Cars -
@@ -70,7 +70,7 @@ Using APIs for multi-vehicles requires specifying the `vehicle_name`, which need
### Creating vehicles at runtime through API
-In the latest master of AirSim, the `simAddVehicle` API can be used to create vehicles at runtime. This is useful to create many such vehicles without needing to specify them in the settings. There are some limitations of this currently, described below -
+In the latest main branch of AirSim, the `simAddVehicle` API can be used to create vehicles at runtime. This is useful to create many such vehicles without needing to specify them in the settings. There are some limitations of this currently, described below -
`simAddVehicle` takes in the following arguments:
@@ -84,10 +84,10 @@ Returns: `bool` Whether vehicle was created
The usual APIs can be used to control and interact with the vehicle once created, with the `vehicle_name` parameter. Specifying other settings such as additional cameras, etc. isn't possible currently, a future enhancement could be passing JSON string of settings for the vehicle. It also works with the `listVehicles()` API described above, so the vehicles spawned would be included in the list.
-For some examples, check out [HelloSpawnedDrones.cpp](https://github.com/microsoft/AirSim/blob/master/HelloSpawnedDrones/HelloSpawnedDrones.cpp) -
+For some examples, check out [HelloSpawnedDrones.cpp](https://github.com/microsoft/AirSim/blob/main/HelloSpawnedDrones/HelloSpawnedDrones.cpp) -

-And [runtime_car.py](https://github.com/microsoft/AirSim/tree/master/PythonClient/car/runtime_car.py) -
+And [runtime_car.py](https://github.com/microsoft/AirSim/tree/main/PythonClient/car/runtime_car.py) -

diff --git a/docs/object_detection.md b/docs/object_detection.md
index 670b1a7138..66b506ce72 100644
--- a/docs/object_detection.md
+++ b/docs/object_detection.md
@@ -29,7 +29,7 @@ DetectionInfo
relative_pose = Pose()
```
## Usage example
-Python script [detection.py](https://github.com/microsoft/AirSim/blob/master/PythonClient/detection/detection.py) shows how to set detection parameters and shows the result in OpenCV capture.
+Python script [detection.py](https://github.com/microsoft/AirSim/blob/main/PythonClient/detection/detection.py) shows how to set detection parameters and shows the result in OpenCV capture.
A minimal example using API with Blocks environment to detect Cylinder objects:
```python
diff --git a/docs/orbit.md b/docs/orbit.md
index 78209fe7e7..d2ff8ce9f2 100644
--- a/docs/orbit.md
+++ b/docs/orbit.md
@@ -4,7 +4,7 @@ Moved here from [https://github.com/microsoft/AirSim/wiki/An-Orbit-Trajectory](h
Have you ever wanted to fly a nice smooth circular orbit? This can be handy for capturing 3D objects from all sides especially if you get multiple orbits at different altitudes.
-So the `PythonClient/multirotor` folder contains a script named [Orbit](https://github.com/microsoft/AirSim/blob/master/PythonClient/multirotor/orbit.py) that will do precisely that.
+So the `PythonClient/multirotor` folder contains a script named [Orbit](https://github.com/microsoft/AirSim/blob/main/PythonClient/multirotor/orbit.py) that will do precisely that.
See [demo video](https://youtu.be/RFG5CTQi3Us)
diff --git a/docs/pfm.md b/docs/pfm.md
index f6cd54af2c..20dc2c3f39 100644
--- a/docs/pfm.md
+++ b/docs/pfm.md
@@ -4,4 +4,4 @@ Pfm (or Portable FloatMap) image format stores image as floating point pixels an
One of the good viewer to view this file format is [PfmPad](https://sourceforge.net/projects/pfmpad/). We don't recommend Maverick photo viewer because it doesn't seem to show depth images properly.
-AirSim has code to write pfm file for [C++](https://github.com/Microsoft/AirSim/blob/master/AirLib/include/common/common_utils/Utils.hpp#L637) and read as well as write for [Python](https://github.com/Microsoft/AirSim/tree/master/PythonClient//airsim/utils.py#L122).
+AirSim has code to write pfm file for [C++](https://github.com/Microsoft/AirSim/blob/main/AirLib/include/common/common_utils/Utils.hpp#L637) and read as well as write for [Python](https://github.com/Microsoft/AirSim/tree/main/PythonClient//airsim/utils.py#L122).
diff --git a/docs/point_clouds.md b/docs/point_clouds.md
index eb9e06cc19..0923145858 100644
--- a/docs/point_clouds.md
+++ b/docs/point_clouds.md
@@ -2,7 +2,7 @@
Moved here from [https://github.com/microsoft/AirSim/wiki/Point-Clouds](https://github.com/microsoft/AirSim/wiki/Point-Clouds)
-A Python script [point_cloud.py](https://github.com/Microsoft/AirSim/blob/master/PythonClient/multirotor/point_cloud.py) shows how to convert the depth image returned from AirSim into a point cloud.
+A Python script [point_cloud.py](https://github.com/Microsoft/AirSim/blob/main/PythonClient/multirotor/point_cloud.py) shows how to convert the depth image returned from AirSim into a point cloud.
The following depth image was captured using the Modular Neighborhood environment:
diff --git a/docs/px4_multi_vehicle.md b/docs/px4_multi_vehicle.md
index 9d6c6c71e9..d5e1a6e8f5 100644
--- a/docs/px4_multi_vehicle.md
+++ b/docs/px4_multi_vehicle.md
@@ -70,7 +70,7 @@ API does not require RC, see [`No Remote Control`](px4_sitl.md#No-Remote-Control
## Starting SITL instances with PX4 console
-If you want to start your SITL instances while being able to view the PX4 console, you will need to run the shell scripts found [here](https://github.com/microsoft/AirSim/tree/master/PX4Scripts) rather than `sitl_multiple_run.sh`.
+If you want to start your SITL instances while being able to view the PX4 console, you will need to run the shell scripts found [here](https://github.com/microsoft/AirSim/tree/main/PX4Scripts) rather than `sitl_multiple_run.sh`.
Here is how you would do so:
**Note** This script also assumes PX4 is built with `make px4_sitl_default none_iris` as shown [here](px4_sitl.md#setting-up-px4-software-in-loop) before trying to run multiple PX4 instances.
@@ -80,8 +80,8 @@ Here is how you would do so:
cd PX4
mkdir -p Scripts
cd Scripts
- wget https://github.com/microsoft/AirSim/raw/master/PX4Scripts/sitl_kill.sh
- wget https://github.com/microsoft/AirSim/raw/master/PX4Scripts/run_airsim_sitl.sh
+ wget https://github.com/microsoft/AirSim/raw/main/PX4Scripts/sitl_kill.sh
+ wget https://github.com/microsoft/AirSim/raw/main/PX4Scripts/run_airsim_sitl.sh
```
**Note** the shell scripts expect the `Scripts` and `Firmware` directories to be within the same parent directory. Also, you may need to make the scripts executable by running `chmod +x sitl_kill.sh` and `chmod +x run_airsim_sitl.sh`.
2. Run the `sitl_kill.sh` script to kill all active PX4 SITL instances
diff --git a/docs/reinforcement_learning.md b/docs/reinforcement_learning.md
index 69d9c24c98..fc4003eaeb 100644
--- a/docs/reinforcement_learning.md
+++ b/docs/reinforcement_learning.md
@@ -12,7 +12,7 @@ In order to use AirSim as a gym environment, we extend and reimplement the base
## RL with Car
-[Source code](https://github.com/Microsoft/AirSim/tree/master/PythonClient/reinforcement_learning)
+[Source code](https://github.com/Microsoft/AirSim/tree/main/PythonClient/reinforcement_learning)
This example works with AirSimNeighborhood environment available in [releases](https://github.com/Microsoft/AirSim/releases).
@@ -127,7 +127,7 @@ Note that the simulation needs to be up and running before you execute `dqn_car.
## RL with Quadrotor
-[Source code](https://github.com/Microsoft/AirSim/tree/master/PythonClient/reinforcement_learning)
+[Source code](https://github.com/Microsoft/AirSim/tree/main/PythonClient/reinforcement_learning)
This example works with AirSimMountainLandscape environment available in [releases](https://github.com/Microsoft/AirSim/releases).
diff --git a/docs/remote_control.md b/docs/remote_control.md
index 70515b0037..8bc8d9685c 100644
--- a/docs/remote_control.md
+++ b/docs/remote_control.md
@@ -10,14 +10,14 @@ You can either use XBox controller or [FrSky Taranis X9D Plus](https://hobbyking
### Other Devices
-AirSim can detect large variety of devices however devices other than above *might* need extra configuration. In future we will add ability to set this config through settings.json. For now, if things are not working then you might want to try workarounds such as [x360ce](http://www.x360ce.com/) or change code in [SimJoystick.cpp file](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Source/SimJoyStick/SimJoyStick.cpp#L50).
+AirSim can detect large variety of devices however devices other than above *might* need extra configuration. In future we will add ability to set this config through settings.json. For now, if things are not working then you might want to try workarounds such as [x360ce](http://www.x360ce.com/) or change code in [SimJoystick.cpp file](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Source/SimJoyStick/SimJoyStick.cpp#L50).
### Note on FrSky Taranis X9D Plus
[FrSky Taranis X9D Plus](https://hobbyking.com/en_us/frsky-2-4ghz-accst-taranis-x9d-plus-and-x8r-combo-digital-telemetry-radio-system-mode-2.html) is real UAV remote control with an advantage that it has USB port so it can be directly connected to PC. You can [download AirSim config file](misc/AirSim_FrSkyTaranis.bin) and [follow this tutorial](https://www.youtube.com/watch?v=qe-13Gyb0sw) to import it in your RC. You should then see "sim" model in RC with all channels configured properly.
### Note on Linux
-Currently default config on Linux is for using Xbox controller. This means other devices might not work properly. In future we will add ability to configure RC in settings.json but for now you *might* have to change code in [SimJoystick.cpp file](https://github.com/microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Source/SimJoyStick/SimJoyStick.cpp#L340) to use other devices.
+Currently default config on Linux is for using Xbox controller. This means other devices might not work properly. In future we will add ability to configure RC in settings.json but for now you *might* have to change code in [SimJoystick.cpp file](https://github.com/microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Source/SimJoyStick/SimJoyStick.cpp#L340) to use other devices.
## RC Setup for PX4
diff --git a/docs/sensors.md b/docs/sensors.md
index afef8bf158..838abcf5d6 100644
--- a/docs/sensors.md
+++ b/docs/sensors.md
@@ -29,7 +29,7 @@ If no sensors are specified in the `settings.json`, then the following sensors a
### ComputerVision
* None
-Behind the scenes, `createDefaultSensorSettings` method in [AirSimSettings.hpp](https://github.com/Microsoft/AirSim/blob/master/AirLib/include/common/AirSimSettings.hpp) sets up the above sensors with their default parameters, depending on the sim mode specified in the `settings.json` file.
+Behind the scenes, `createDefaultSensorSettings` method in [AirSimSettings.hpp](https://github.com/Microsoft/AirSim/blob/main/AirLib/include/common/AirSimSettings.hpp) sets up the above sensors with their default parameters, depending on the sim mode specified in the `settings.json` file.
## Configuring the default sensor list
@@ -173,7 +173,7 @@ Be default, the points hit by distance sensor are not drawn on the viewport. To
```
## Sensor APIs
-Jump straight to [`hello_drone.py`](https://github.com/Microsoft/AirSim/blob/master/PythonClient/multirotor/hello_drone.py) or [`hello_drone.cpp`](https://github.com/Microsoft/AirSim/blob/master/HelloDrone/main.cpp) for example usage, or see follow below for the full API.
+Jump straight to [`hello_drone.py`](https://github.com/Microsoft/AirSim/blob/main/PythonClient/multirotor/hello_drone.py) or [`hello_drone.cpp`](https://github.com/Microsoft/AirSim/blob/main/HelloDrone/main.cpp) for example usage, or see follow below for the full API.
### Barometer
```cpp
diff --git a/docs/settings.md b/docs/settings.md
index 85ee537bb5..25f5332ea0 100644
--- a/docs/settings.md
+++ b/docs/settings.md
@@ -51,6 +51,7 @@ Below are complete list of settings available along with their default values. I
"ApiServerPort": 41451,
"RecordUIVisible": true,
"LogMessagesVisible": true,
+ "ShowLosDebugLines": false,
"ViewMode": "",
"RpcEnabled": true,
"EngineSound": true,
@@ -321,7 +322,7 @@ The `CaptureSettings` determines how different image types such as scene, depth,
For explanation of other settings, please see [this article](https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/AutomaticExposure/).
### NoiseSettings
-The `NoiseSettings` allows to add noise to the specified image type with a goal of simulating camera sensor noise, interference and other artifacts. By default no noise is added, i.e., `Enabled: false`. If you set `Enabled: true` then following different types of noise and interference artifacts are enabled, each can be further tuned using setting. The noise effects are implemented as shader created as post processing material in Unreal Engine called [CameraSensorNoise](https://github.com/Microsoft/AirSim/blob/master/Unreal/Plugins/AirSim/Content/HUDAssets/CameraSensorNoise.uasset).
+The `NoiseSettings` allows to add noise to the specified image type with a goal of simulating camera sensor noise, interference and other artifacts. By default no noise is added, i.e., `Enabled: false`. If you set `Enabled: true` then following different types of noise and interference artifacts are enabled, each can be further tuned using setting. The noise effects are implemented as shader created as post processing material in Unreal Engine called [CameraSensorNoise](https://github.com/Microsoft/AirSim/blob/main/Unreal/Plugins/AirSim/Content/HUDAssets/CameraSensorNoise.uasset).
Demo of camera noise and interference simulation:
@@ -497,7 +498,7 @@ PX4 connection. See [Setting up PX4 Software-in-Loop](px4_sitl.md) for an exampl
### Using ArduPilot
-[ArduPilot](https://ardupilot.org/) Copter & Rover vehicles are supported in latest AirSim master & releases `v1.3.0` and later. For settings and how to use, please see [ArduPilot SITL with AirSim](https://ardupilot.org/dev/docs/sitl-with-airsim.html)
+[ArduPilot](https://ardupilot.org/) Copter & Rover vehicles are supported in latest AirSim main branch & releases `v1.3.0` and later. For settings and how to use, please see [ArduPilot SITL with AirSim](https://ardupilot.org/dev/docs/sitl-with-airsim.html)
## Other Settings
diff --git a/docs/unreal_blocks.md b/docs/unreal_blocks.md
index 4a4f6795be..1713a790c4 100644
--- a/docs/unreal_blocks.md
+++ b/docs/unreal_blocks.md
@@ -1,37 +1,36 @@
-
-# Setup Blocks Environment for AirSim
-
-Blocks environment is available in repo in folder `Unreal/Environments/Blocks` and is designed to be lightweight in size. That means its very basic but fast.
-
-Here are quick steps to get Blocks environment up and running:
-
-## Windows
-
-1. Make sure you have [installed Unreal and built AirSim](build_windows.md).
-2. Navigate to folder `AirSim\Unreal\Environments\Blocks` and run `update_from_git.bat`.
-3. Double click on generated .sln file to open in Visual Studio 2019 or newer.
-4. Make sure `Blocks` project is the startup project, build configuration is set to `DebugGame_Editor` and `Win64`. Hit F5 to run.
-5. Press the Play button in Unreal Editor and you will see something like in below video. Also see [how to use AirSim](https://github.com/Microsoft/AirSim/#how-to-use-it).
-
-### Changing Code and Rebuilding
-For Windows, you can just change the code in Visual Studio, press F5 and re-run. There are few batch files available in folder `AirSim\Unreal\Environments\Blocks` that lets you sync code, clean etc.
-
-## Linux
-1. Make sure you have [built the Unreal Engine and AirSim](build_linux.md).
-2. Navigate to your UnrealEngine repo folder and run `Engine/Binaries/Linux/UE4Editor` which will start Unreal Editor.
-3. On first start you might not see any projects in UE4 editor. Click on Projects tab, Browse button and then navigate to `AirSim/Unreal/Environments/Blocks/Blocks.uproject`.
-4. If you get prompted for incompatible version and conversion, select In-place conversion which is usually under "More" options. If you get prompted for missing modules, make sure to select No so you don't exit.
-5. Finally, when prompted with building AirSim, select Yes. Now it might take a while so go get some coffee :).
-6. Press the Play button in Unreal Editor and you will see something like in below video. Also see [how to use AirSim](https://github.com/microsoft/AirSim/#how-to-use-it).
-
-[](https://www.youtube.com/watch?v=-r_QGaxMT4A)
-
-### Changing Code and Rebuilding
-For Linux, make code changes in AirLib or Unreal/Plugins folder and then run `./build.sh` to rebuild. This step also copies the build output to Blocks sample project. You can then follow above steps again to re-run.
-
-## Chosing Your Vehicle: Car or Multirotor
-By default AirSim spawns multirotor. You can easily change this to car and use all of AirSim goodies. Please see [using car](using_car.md) guide.
-
-## FAQ
-#### I see warnings about like "_BuitData" file is missing.
-These are intermediate files and you can safely ignore it.
+
+# Setup Blocks Environment for AirSim
+
+Blocks environment is available in repo in folder `Unreal/Environments/Blocks` and is designed to be lightweight in size. That means its very basic but fast.
+
+Here are quick steps to get Blocks environment up and running:
+
+## Windows
+
+1. Make sure you have [installed Unreal and built AirSim](build_windows.md).
+2. Navigate to folder `AirSim\Unreal\Environments\Blocks`, double click on Blocks.sln file to open in Visual Studio. By default, this project is configured for Visual Studio 2019. However, if you want to generate this project for Visual Studio 2022, go to 'Edit->Editor Preferences->Source Code' inside the Unreal Editor and select 'Visual Studio 2022' for the 'Source Code Editor' setting.
+3. Make sure `Blocks` project is the startup project, build configuration is set to `DebugGame_Editor` and `Win64`. Hit F5 to run.
+4. Press the Play button in Unreal Editor and you will see something like in below video. Also see [how to use AirSim](https://github.com/Microsoft/AirSim/#how-to-use-it).
+
+### Changing Code and Rebuilding
+For Windows, you can just change the code in Visual Studio, press F5 and re-run. There are few batch files available in folder `AirSim\Unreal\Environments\Blocks` that lets you sync code, clean etc.
+
+## Linux
+1. Make sure you have [built the Unreal Engine and AirSim](build_linux.md).
+2. Navigate to your UnrealEngine repo folder and run `Engine/Binaries/Linux/UE4Editor` which will start Unreal Editor.
+3. On first start you might not see any projects in UE4 editor. Click on Projects tab, Browse button and then navigate to `AirSim/Unreal/Environments/Blocks/Blocks.uproject`.
+4. If you get prompted for incompatible version and conversion, select In-place conversion which is usually under "More" options. If you get prompted for missing modules, make sure to select No so you don't exit.
+5. Finally, when prompted with building AirSim, select Yes. Now it might take a while so go get some coffee :).
+6. Press the Play button in Unreal Editor and you will see something like in below video. Also see [how to use AirSim](https://github.com/microsoft/AirSim/#how-to-use-it).
+
+[](https://www.youtube.com/watch?v=-r_QGaxMT4A)
+
+### Changing Code and Rebuilding
+For Linux, make code changes in AirLib or Unreal/Plugins folder and then run `./build.sh` to rebuild. This step also copies the build output to Blocks sample project. You can then follow above steps again to re-run.
+
+## Chosing Your Vehicle: Car or Multirotor
+By default AirSim spawns multirotor. You can easily change this to car and use all of AirSim goodies. Please see [using car](using_car.md) guide.
+
+## FAQ
+#### I see warnings about like "_BuitData" file is missing.
+These are intermediate files and you can safely ignore it.
diff --git a/docs/unreal_custenv.md b/docs/unreal_custenv.md
index 4fd7f5cc36..bba72b1845 100644
--- a/docs/unreal_custenv.md
+++ b/docs/unreal_custenv.md
@@ -8,7 +8,7 @@ There is no `Epic Games Launcher` for Linux which means that if you need to crea
## Step by Step Instructions
-1. Make sure AirSim is built and Unreal 4.25 is installed as described in [build instructions](build_windows.md).
+1. Make sure AirSim is built and Unreal 4.27 is installed as described in [build instructions](build_windows.md).
1. In `Epic Games Launcher` click the Learn tab then scroll down and find `Landscape Mountains`. Click the `Create Project` and download this content (~2GB download).

@@ -19,7 +19,7 @@ There is no `Epic Games Launcher` for Linux which means that if you need to crea
!!!note
- The Landscape Mountains project is supported up to Unreal Engine version 4.24. If you do not have 4.24 installed, you should see a dialog titled `Select Unreal Engine Version` with a dropdown to select from installed versions. Select 4.25 or greater to migrate the project to a supported engine version. If you have 4.24 installed, you can manually migrate the project by navigating to the corresponding .uproject file in Windows Explorer, right-clicking it, and selecting the `Switch Unreal Engine version...` option.
+ The Landscape Mountains project is supported up to Unreal Engine version 4.24. If you do not have 4.24 installed, you should see a dialog titled `Select Unreal Engine Version` with a dropdown to select from installed versions. Select 4.27 or greater to migrate the project to a supported engine version. If you have 4.24 installed, you can manually migrate the project by navigating to the corresponding .uproject file in Windows Explorer, right-clicking it, and selecting the `Switch Unreal Engine version...` option.
1. From the `File menu` select `New C++ class`, leave default `None` on the type of class, click `Next`, leave default name `MyClass`, and click `Create Class`. We need to do this because Unreal requires at least one source file in project. It should trigger compile and open up Visual Studio solution `LandscapeMountains.sln`.
@@ -34,7 +34,7 @@ There is no `Epic Games Launcher` for Linux which means that if you need to crea
```json
{
"FileVersion": 3,
- "EngineAssociation": "4.24",
+ "EngineAssociation": "4.27",
"Category": "Samples",
"Description": "",
"Modules": [
@@ -100,7 +100,7 @@ By default AirSim prompts user for which vehicle to use. You can easily change t
## Updating Your Environment to Latest Version of AirSim
Once you have your environment using above instructions, you should frequently update your local AirSim code to latest version from GitHub. Below are the instructions to do this:
-1. First put [clean.bat](https://github.com/Microsoft/AirSim/blob/master/Unreal/Environments/Blocks/clean.bat) (or [clean.sh](https://github.com/Microsoft/AirSim/blob/master/Unreal/Environments/Blocks/clean.sh) for Linux users) in the root folder of your environment. Run this file to clean up all intermediate files in your Unreal project.
+1. First put [clean.bat](https://github.com/Microsoft/AirSim/blob/main/Unreal/Environments/Blocks/clean.bat) (or [clean.sh](https://github.com/Microsoft/AirSim/blob/main/Unreal/Environments/Blocks/clean.sh) for Linux users) in the root folder of your environment. Run this file to clean up all intermediate files in your Unreal project.
2. Do `git pull` in your AirSim repo followed by `build.cmd` (or `./build.sh` for Linux users).
3. Replace [your project]/Plugins folder with AirSim/Unreal/Plugins folder.
4. Right click on your .uproject file and chose "Generate Visual Studio project files" option. This is not required for Linux.
diff --git a/docs/unreal_upgrade.md b/docs/unreal_upgrade.md
index 7fd44af5d8..0ac54402f8 100644
--- a/docs/unreal_upgrade.md
+++ b/docs/unreal_upgrade.md
@@ -1,28 +1,28 @@
-# Upgrading to Unreal Engine 4.24
+# Upgrading to Unreal Engine 4.27
-These instructions apply if you are already using AirSim on Unreal Engine 4.16. If you have never installed AirSim, please see [How to get it](https://github.com/microsoft/airsim#how-to-get-it).
+These instructions apply if you are already using AirSim on Unreal Engine 4.25. If you have never installed AirSim, please see [How to get it](https://github.com/microsoft/airsim#how-to-get-it).
**Caution:** The below steps will delete any of your unsaved work in AirSim or Unreal folder.
## Do this first
### For Windows Users
-1. Install Visual Studio 2019 with VC++, Python and C#.
-2. Install UE 4.24 through Epic Games Launcher.
-3. Start `x64 Native Tools Command Prompt for VS 2019` and navigate to AirSim repo.
+1. Install Visual Studio 2022 with VC++, Python and C#.
+2. Install UE 4.27 through Epic Games Launcher.
+3. Start `x64 Native Tools Command Prompt for VS 2022` and navigate to AirSim repo.
4. Run `clean_rebuild.bat` to remove all unchecked/extra stuff and rebuild everything.
5. See also [Build AirSim on Windows](build_windows.md) for more information.
### For Linux Users
1. From your AirSim repo folder, run 'clean_rebuild.sh`.
2. Rename or delete your existing folder for Unreal Engine.
-3. Follow step 1 and 2 to [install Unreal Engine 4.24](build_linux.md).
+3. Follow step 1 and 2 to [install Unreal Engine 4.27](build_linux.md).
4. See also [Build AirSim on Linux](build_linux.md) for more information.
## Upgrading Your Custom Unreal Project
-If you have your own Unreal project created in an older version of Unreal Engine then you need to upgrade your project to Unreal 4.24. To do this,
+If you have your own Unreal project created in an older version of Unreal Engine then you need to upgrade your project to Unreal 4.27. To do this,
-1. Open .uproject file and look for the line `"EngineAssociation"` and make sure it reads like `"EngineAssociation": "4.24"`.
+1. Open .uproject file and look for the line `"EngineAssociation"` and make sure it reads like `"EngineAssociation": "4.27"`.
2. Delete `Plugins/AirSim` folder in your Unreal project's folder.
3. Go to your AirSim repo folder and copy `Unreal\Plugins` folder to your Unreal project's folder.
4. Copy *.bat (or *.sh for Linux) from `Unreal\Environments\Blocks` to your project's folder.
@@ -33,7 +33,7 @@ If you have your own Unreal project created in an older version of Unreal Engine
### I have an Unreal project that is older than 4.16. How do I upgrade it?
#### Option 1: Just Recreate Project
-If your project doesn't have any code or assets other than environment you downloaded then you can also simply [recreate the project in Unreal 4.24 Editor](unreal_custenv.md) and then copy Plugins folder from `AirSim/Unreal/Plugins`.
+If your project doesn't have any code or assets other than environment you downloaded then you can also simply [recreate the project in Unreal 4.27 Editor](unreal_custenv.md) and then copy Plugins folder from `AirSim/Unreal/Plugins`.
#### Option 2: Modify Few Files
Unreal versions newer than Unreal 4.15 has breaking changes. So you need to modify your *.Build.cs and *.Target.cs which you can find in the `Source` folder of your Unreal project. So what are those changes? Below is the gist of it but you should really refer to [Unreal's official 4.16 transition post](https://forums.unrealengine.com/showthread.php?145757-C-4-16-Transition-Guide).
diff --git a/docs/upgrade_apis.md b/docs/upgrade_apis.md
index adb9da0163..036a1616b4 100644
--- a/docs/upgrade_apis.md
+++ b/docs/upgrade_apis.md
@@ -2,7 +2,7 @@
There have been several API changes in AirSim v1.2 that we hope removes inconsistency, adds future extensibility and presents cleaner interface. Many of these changes are however *breaking changes* which means you will need to modify your client code that talks to AirSim.
## Quicker Way
-While most changes you need to do in your client code are fairly easy, a quicker way is simply to take a look at the example code such as [Hello Drone](https://github.com/Microsoft/AirSim/tree/master/PythonClient//multirotor/hello_drone.py)or [Hello Car](https://github.com/Microsoft/AirSim/tree/master/PythonClient//car/hello_car.py) to get gist of changes.
+While most changes you need to do in your client code are fairly easy, a quicker way is simply to take a look at the example code such as [Hello Drone](https://github.com/Microsoft/AirSim/tree/main/PythonClient//multirotor/hello_drone.py)or [Hello Car](https://github.com/Microsoft/AirSim/tree/main/PythonClient//car/hello_car.py) to get gist of changes.
## Importing AirSim
Instead of,
diff --git a/mkdocs.yml b/mkdocs.yml
index 09cc62366c..cf25e6817f 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -122,6 +122,7 @@ nav:
- "Orbit Trajectory": "orbit.md"
- "Importing a custom multirotor mesh": 'https://youtu.be/Bp86WiLUC80'
- "Object Detection": "object_detection.md"
+ - "AirSim with MAVROS and PX4": 'https://youtu.be/ZonkdMcwXH4'
- "Misc":
- "AirSim on Real Drones": 'custom_drone.md'
- "Installing cmake on Linux": 'cmake_linux.md'
diff --git a/pipelines/ci.yml b/pipelines/ci.yml
index 02d9bfa6bc..4e7a775995 100644
--- a/pipelines/ci.yml
+++ b/pipelines/ci.yml
@@ -1,128 +1,128 @@
-variables:
- container_linux: airsimci.azurecr.io/ue4p25p1/ubuntu18:debugeditor_fulldebugoff
- ue4_root_linux: /home/ue4/ue-4.25.1-linux-debugeditor
- container_win: airsimci.azurecr.io/ue4p25p1/win1809:pipe
- ue4_root_win: C:\ue-4.25.1-win
-
-stages:
- - stage: AirSimCI
- jobs:
- - job: Ubuntu_1804
- pool:
- name: 'AirSim'
- demands:
- - Spec -equals Ubuntu_18.04
- container:
- image: $(container_linux)
- endpoint: airsimci_acr_connection
- variables:
- ue4_root: $(ue4_root_linux)
- workspace:
- clean: all
- steps:
- # Setup / Prereq
- - checkout: self
- - script: |
- ./setup.sh
- displayName: Install system dependencies
-
- # Build AirLib
- - script: |
- ./build.sh
- displayName: Build AirLib
-
- # Build UE Blocks project
- - script: |
- ./update_from_git.sh
- workingDirectory: Unreal/Environments/Blocks
- displayName: Copy AirLib to Blocks (update_from_git.sh)
-
- # Build Blocks
- - script: |
- $(UE4_ROOT)/Engine/Build/BatchFiles/Linux/Build.sh Blocks Linux Development \
- -project=$(pwd)/Unreal/Environments/Blocks/Blocks.uproject
- $(UE4_ROOT)/Engine/Build/BatchFiles/Linux/Build.sh BlocksEditor Linux Development \
- -project=$(pwd)/Unreal/Environments/Blocks/Blocks.uproject
- displayName: Build Blocks - Development
-
- # Package Blocks
- - script: |
- $(UE4_ROOT)/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun \
- -project="$(pwd)/Unreal/Environments/Blocks/Blocks.uproject" \
- -nop4 -nocompile -build -cook -compressed -pak -allmaps -stage \
- -archive -archivedirectory="$(pwd)/Unreal/Environments/Blocks/Packaged/Development" \
- -clientconfig=Development -clean -utf8output
- displayName: Package Blocks - Development
-
- # Publish Artifact for Blocks Linux
- - task: PublishPipelineArtifact@1
- inputs:
- targetPath: 'Unreal/Environments/Blocks/Packaged'
- artifactName: 'Blocks_Linux'
- displayName: Artifact for Blocks Linux
- condition: succeededOrFailed()
-
- - task: ArchiveFiles@2
- displayName: Blocks Linux Zip
- inputs:
- rootFolderOrFile: 'Unreal/Environments/Blocks/Packaged'
- includeRootFolder: false
- archiveType: 'zip'
- archiveFile: 'Unreal/Environments/Blocks/Packaged/Blocks_Linux.zip'
- replaceExistingArchive: true
-
- - job: Windows_VS2019
- pool:
- name: 'AirSim'
- demands:
- - Spec -equals WinServer2019_VS2019_Datacenter
- container:
- image: $(container_win)
- endpoint: airsimci_acr_connection
- variables:
- ue4_root: $(ue4_root_win)
- workspace:
- clean: all
-
- steps:
- - checkout: self
-
- # Build AirLib
- - script: |
- call "C:\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
- call .\build.cmd
- displayName: Build AirLib
-
- - script: |
- call "C:\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
- call .\update_from_git_ci.bat
- workingDirectory: Unreal/Environments/Blocks
- displayName: Copy AirLib to Blocks (update_from_git_ci.bat)
-
- # Build Blocks
- - script: |
- call "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat" Blocks Win64 Development -project="%CD%\Unreal\Environments\Blocks\Blocks.uproject"
- call "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat" BlocksEditor Win64 Development -project="%CD%\Unreal\Environments\Blocks\Blocks.uproject"
- displayName: Build Blocks - Development
-
- # Package Blocks
- - script: |
- call "%UE4_ROOT%\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -project="%CD%\Unreal\Environments\Blocks\Blocks.uproject" -nop4 -nocompile -build -cook -compressed -pak -allmaps -stage -archive -archivedirectory="%CD%\Unreal\Environments\Blocks\Packaged\Development" -clientconfig=Development -clean -utf8output
- displayName: Package Blocks - Development
-
- # Publish Artifact for Blocks Windows
- - task: PublishPipelineArtifact@1
- inputs:
- targetPath: 'Unreal/Environments/Blocks/Packaged'
- artifactName: 'Blocks_Windows'
- displayName: Artifact for Blocks Windows
- condition: succeededOrFailed()
-
- - task: ArchiveFiles@2
- displayName: Blocks Windows Zip
- inputs:
- rootFolderOrFile: 'Unreal/Environments/Blocks/Packaged'
- includeRootFolder: false
- archiveType: 'zip'
- archiveFile: 'Unreal/Environments/Blocks/Packaged/Blocks_Windows.zip'
- replaceExistingArchive: true
+variables:
+ container_linux: airsimci.azurecr.io/ue4p25p1/ubuntu18:debugeditor_fulldebugoff
+ ue4_root_linux: /home/ue4/ue-4.25.1-linux-debugeditor
+ container_win: airsimci.azurecr.io/ue4p27p2/win1809:pipe
+ ue4_root_win: C:\ue-4.27.2-win
+
+stages:
+ - stage: AirSimCI
+ jobs:
+ - job: Ubuntu_1804
+ pool:
+ name: 'AirSim'
+ demands:
+ - Spec -equals Ubuntu_18.04
+ container:
+ image: $(container_linux)
+ endpoint: airsimci_acr_connection
+ variables:
+ ue4_root: $(ue4_root_linux)
+ workspace:
+ clean: all
+ steps:
+ # Setup / Prereq
+ - checkout: self
+ - script: |
+ ./setup.sh
+ displayName: Install system dependencies
+
+ # Build AirLib
+ - script: |
+ ./build.sh
+ displayName: Build AirLib
+
+ # Build UE Blocks project
+ - script: |
+ ./update_from_git.sh
+ workingDirectory: Unreal/Environments/Blocks
+ displayName: Copy AirLib to Blocks (update_from_git.sh)
+
+ # Build Blocks
+ - script: |
+ $(UE4_ROOT)/Engine/Build/BatchFiles/Linux/Build.sh Blocks Linux Development \
+ -project=$(pwd)/Unreal/Environments/Blocks/Blocks.uproject
+ $(UE4_ROOT)/Engine/Build/BatchFiles/Linux/Build.sh BlocksEditor Linux Development \
+ -project=$(pwd)/Unreal/Environments/Blocks/Blocks.uproject
+ displayName: Build Blocks - Development
+
+ # Package Blocks
+ - script: |
+ $(UE4_ROOT)/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun \
+ -project="$(pwd)/Unreal/Environments/Blocks/Blocks.uproject" \
+ -nop4 -nocompile -build -cook -compressed -pak -allmaps -stage \
+ -archive -archivedirectory="$(pwd)/Unreal/Environments/Blocks/Packaged/Development" \
+ -clientconfig=Development -clean -utf8output
+ displayName: Package Blocks - Development
+
+ # Publish Artifact for Blocks Linux
+ - task: PublishPipelineArtifact@1
+ inputs:
+ targetPath: 'Unreal/Environments/Blocks/Packaged'
+ artifactName: 'Blocks_Linux'
+ displayName: Artifact for Blocks Linux
+ condition: succeededOrFailed()
+
+ - task: ArchiveFiles@2
+ displayName: Blocks Linux Zip
+ inputs:
+ rootFolderOrFile: 'Unreal/Environments/Blocks/Packaged'
+ includeRootFolder: false
+ archiveType: 'zip'
+ archiveFile: 'Unreal/Environments/Blocks/Packaged/Blocks_Linux.zip'
+ replaceExistingArchive: true
+
+ - job: Windows_VS2019
+ pool:
+ name: 'AirSim'
+ demands:
+ - Spec -equals WinServer2019_VS2019_Datacenter
+ container:
+ image: $(container_win)
+ endpoint: airsimci_acr_connection
+ variables:
+ ue4_root: $(ue4_root_win)
+ workspace:
+ clean: all
+
+ steps:
+ - checkout: self
+
+ # Build AirLib
+ - script: |
+ call "C:\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
+ call .\build.cmd
+ displayName: Build AirLib
+
+ - script: |
+ call "C:\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
+ call .\update_from_git_ci.bat
+ workingDirectory: Unreal/Environments/Blocks
+ displayName: Copy AirLib to Blocks (update_from_git_ci.bat)
+
+ # Build Blocks
+ - script: |
+ call "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat" Blocks Win64 Development -project="%CD%\Unreal\Environments\Blocks\Blocks.uproject"
+ call "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat" BlocksEditor Win64 Development -project="%CD%\Unreal\Environments\Blocks\Blocks.uproject"
+ displayName: Build Blocks - Development
+
+ # Package Blocks
+ - script: |
+ call "%UE4_ROOT%\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -project="%CD%\Unreal\Environments\Blocks\Blocks.uproject" -nop4 -nocompile -build -cook -compressed -pak -allmaps -stage -archive -archivedirectory="%CD%\Unreal\Environments\Blocks\Packaged\Development" -clientconfig=Development -clean -utf8output
+ displayName: Package Blocks - Development
+
+ # Publish Artifact for Blocks Windows
+ - task: PublishPipelineArtifact@1
+ inputs:
+ targetPath: 'Unreal/Environments/Blocks/Packaged'
+ artifactName: 'Blocks_Windows'
+ displayName: Artifact for Blocks Windows
+ condition: succeededOrFailed()
+
+ - task: ArchiveFiles@2
+ displayName: Blocks Windows Zip
+ inputs:
+ rootFolderOrFile: 'Unreal/Environments/Blocks/Packaged'
+ includeRootFolder: false
+ archiveType: 'zip'
+ archiveFile: 'Unreal/Environments/Blocks/Packaged/Blocks_Windows.zip'
+ replaceExistingArchive: true
diff --git a/ros/src/airsim_ros_pkgs/README.md b/ros/src/airsim_ros_pkgs/README.md
index 9edb213962..b8566890a8 100644
--- a/ros/src/airsim_ros_pkgs/README.md
+++ b/ros/src/airsim_ros_pkgs/README.md
@@ -1,3 +1,3 @@
# airsim_ros_pkgs
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/airsim_ros_pkgs.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/airsim_ros_pkgs.md).
\ No newline at end of file
diff --git a/ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h b/ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h
index 6f0e05ce81..1f5ee65dfc 100644
--- a/ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h
+++ b/ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h
@@ -288,7 +288,7 @@ class AirsimROSWrapper
sensor_msgs::Imu get_imu_msg_from_airsim(const msr::airlib::ImuBase::Output& imu_data) const;
airsim_ros_pkgs::Altimeter get_altimeter_msg_from_airsim(const msr::airlib::BarometerBase::Output& alt_data) const;
sensor_msgs::Range get_range_from_airsim(const msr::airlib::DistanceSensorData& dist_data) const;
- sensor_msgs::PointCloud2 get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name) const;
+ sensor_msgs::PointCloud2 get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name, const std::string& sensor_name) const;
sensor_msgs::NavSatFix get_gps_msg_from_airsim(const msr::airlib::GpsBase::Output& gps_data) const;
sensor_msgs::MagneticField get_mag_msg_from_airsim(const msr::airlib::MagnetometerBase::Output& mag_data) const;
airsim_ros_pkgs::Environment get_environment_msg_from_airsim(const msr::airlib::Environment::State& env_data) const;
diff --git a/ros/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp b/ros/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp
index a174479aca..e17a0f7381 100644
--- a/ros/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp
+++ b/ros/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp
@@ -727,11 +727,11 @@ nav_msgs::Odometry AirsimROSWrapper::get_odom_msg_from_multirotor_state(const ms
// https://docs.ros.org/jade/api/sensor_msgs/html/point__cloud__conversion_8h_source.html#l00066
// look at UnrealLidarSensor.cpp UnrealLidarSensor::getPointCloud() for math
// read this carefully https://docs.ros.org/kinetic/api/sensor_msgs/html/msg/PointCloud2.html
-sensor_msgs::PointCloud2 AirsimROSWrapper::get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name) const
+sensor_msgs::PointCloud2 AirsimROSWrapper::get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name, const std::string& sensor_name) const
{
sensor_msgs::PointCloud2 lidar_msg;
lidar_msg.header.stamp = ros::Time::now();
- lidar_msg.header.frame_id = vehicle_name;
+ lidar_msg.header.frame_id = vehicle_name + "/" + sensor_name;
if (lidar_data.point_cloud.size() > 3) {
lidar_msg.height = 1;
@@ -1326,7 +1326,7 @@ void AirsimROSWrapper::lidar_timer_cb(const ros::TimerEvent& event)
if (!vehicle_name_ptr_pair.second->lidar_pubs.empty()) {
for (auto& lidar_publisher : vehicle_name_ptr_pair.second->lidar_pubs) {
auto lidar_data = airsim_client_lidar_.getLidarData(lidar_publisher.sensor_name, vehicle_name_ptr_pair.first);
- sensor_msgs::PointCloud2 lidar_msg = get_lidar_msg_from_airsim(lidar_data, vehicle_name_ptr_pair.first);
+ sensor_msgs::PointCloud2 lidar_msg = get_lidar_msg_from_airsim(lidar_data, vehicle_name_ptr_pair.first, lidar_publisher.sensor_name);
lidar_publisher.publisher.publish(lidar_msg);
}
}
diff --git a/ros/src/airsim_tutorial_pkgs/README.md b/ros/src/airsim_tutorial_pkgs/README.md
index e7a07ea8d1..195b4d180d 100644
--- a/ros/src/airsim_tutorial_pkgs/README.md
+++ b/ros/src/airsim_tutorial_pkgs/README.md
@@ -1,3 +1,3 @@
# AirSim ROS Tutorials
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/airsim_tutorial_pkgs.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/airsim_tutorial_pkgs.md).
\ No newline at end of file
diff --git a/ros/src/airsim_tutorial_pkgs/scripts/multi_drone_json_creator.py b/ros/src/airsim_tutorial_pkgs/scripts/multi_drone_json_creator.py
index 66ff981937..7a7dca6cb2 100644
--- a/ros/src/airsim_tutorial_pkgs/scripts/multi_drone_json_creator.py
+++ b/ros/src/airsim_tutorial_pkgs/scripts/multi_drone_json_creator.py
@@ -28,7 +28,7 @@ def __init__(self, sim_mode="Multirotor"):
self.data = {}
def add_minimal(self):
- self.data["SeeDocsAt"] = "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md"
+ self.data["SeeDocsAt"] = "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md"
self.data["SettingsVersion"] = 1.2
self.data["SimMode"] = self.sim_mode #"Multirotor"
self.data["ClockSpeed"] = 1
diff --git a/ros/src/airsim_tutorial_pkgs/settings/car.json b/ros/src/airsim_tutorial_pkgs/settings/car.json
index 5969b9dc96..c5efb8552b 100644
--- a/ros/src/airsim_tutorial_pkgs/settings/car.json
+++ b/ros/src/airsim_tutorial_pkgs/settings/car.json
@@ -1,5 +1,5 @@
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "Car",
"ViewMode": "SpringArmChase",
diff --git a/ros/src/airsim_tutorial_pkgs/settings/front_stereo_and_center_mono.json b/ros/src/airsim_tutorial_pkgs/settings/front_stereo_and_center_mono.json
index 5672ffa357..435d951848 100644
--- a/ros/src/airsim_tutorial_pkgs/settings/front_stereo_and_center_mono.json
+++ b/ros/src/airsim_tutorial_pkgs/settings/front_stereo_and_center_mono.json
@@ -1,5 +1,5 @@
{
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"ViewMode": "SpringArmChase",
diff --git a/ros/src/airsim_tutorial_pkgs/settings/twenty_five_drones.json b/ros/src/airsim_tutorial_pkgs/settings/twenty_five_drones.json
index 998f74a0fd..e4f45882ca 100644
--- a/ros/src/airsim_tutorial_pkgs/settings/twenty_five_drones.json
+++ b/ros/src/airsim_tutorial_pkgs/settings/twenty_five_drones.json
@@ -1,6 +1,6 @@
{
"ClockSpeed": 1,
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
diff --git a/ros/src/airsim_tutorial_pkgs/settings/two_drones_camera_lidar_imu.json b/ros/src/airsim_tutorial_pkgs/settings/two_drones_camera_lidar_imu.json
index 8c48ab125c..7cb3fe1d95 100644
--- a/ros/src/airsim_tutorial_pkgs/settings/two_drones_camera_lidar_imu.json
+++ b/ros/src/airsim_tutorial_pkgs/settings/two_drones_camera_lidar_imu.json
@@ -1,6 +1,6 @@
{
"ClockSpeed": 1,
- "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
+ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/main/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
diff --git a/ros2/src/airsim_ros_pkgs/README.md b/ros2/src/airsim_ros_pkgs/README.md
index 3f32237f5a..101cf96ab7 100755
--- a/ros2/src/airsim_ros_pkgs/README.md
+++ b/ros2/src/airsim_ros_pkgs/README.md
@@ -1,3 +1,3 @@
# airsim_ros_pkgs
-This page has moved [here](https://github.com/microsoft/AirSim/blob/master/docs/airsim_ros_pkgs.md).
\ No newline at end of file
+This page has moved [here](https://github.com/microsoft/AirSim/blob/main/docs/airsim_ros_pkgs.md).
\ No newline at end of file
diff --git a/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h b/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h
index a8ac98d476..a5126034b7 100755
--- a/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h
+++ b/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h
@@ -264,7 +264,7 @@ class AirsimROSWrapper
sensor_msgs::msg::Imu get_imu_msg_from_airsim(const msr::airlib::ImuBase::Output& imu_data) const;
airsim_interfaces::msg::Altimeter get_altimeter_msg_from_airsim(const msr::airlib::BarometerBase::Output& alt_data) const;
sensor_msgs::msg::Range get_range_from_airsim(const msr::airlib::DistanceSensorData& dist_data) const;
- sensor_msgs::msg::PointCloud2 get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name) const;
+ sensor_msgs::msg::PointCloud2 get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name, const std::string& sensor_name) const;
sensor_msgs::msg::NavSatFix get_gps_msg_from_airsim(const msr::airlib::GpsBase::Output& gps_data) const;
sensor_msgs::msg::MagneticField get_mag_msg_from_airsim(const msr::airlib::MagnetometerBase::Output& mag_data) const;
airsim_interfaces::msg::Environment get_environment_msg_from_airsim(const msr::airlib::Environment::State& env_data) const;
diff --git a/ros2/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp b/ros2/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp
index b2100f3197..ce3f3390df 100755
--- a/ros2/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp
+++ b/ros2/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp
@@ -84,7 +84,7 @@ void AirsimROSWrapper::initialize_airsim()
}
catch (rpc::rpc_error& e) {
std::string msg = e.get_error().as();
- RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API, something went wrong.\n%s", msg);
+ RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API, something went wrong.\n%s", msg.c_str());
rclcpp::shutdown();
}
}
@@ -645,11 +645,11 @@ nav_msgs::msg::Odometry AirsimROSWrapper::get_odom_msg_from_multirotor_state(con
// https://docs.ros.org/jade/api/sensor_msgs/html/point__cloud__conversion_8h_source.html#l00066
// look at UnrealLidarSensor.cpp UnrealLidarSensor::getPointCloud() for math
// read this carefully https://docs.ros.org/kinetic/api/sensor_msgs/html/msg/PointCloud2.html
-sensor_msgs::msg::PointCloud2 AirsimROSWrapper::get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name) const
+sensor_msgs::msg::PointCloud2 AirsimROSWrapper::get_lidar_msg_from_airsim(const msr::airlib::LidarData& lidar_data, const std::string& vehicle_name, const std::string& sensor_name) const
{
sensor_msgs::msg::PointCloud2 lidar_msg;
lidar_msg.header.stamp = rclcpp::Time(lidar_data.time_stamp);
- lidar_msg.header.frame_id = vehicle_name;
+ lidar_msg.header.frame_id = vehicle_name + "/" + sensor_name;
if (lidar_data.point_cloud.size() > 3) {
lidar_msg.height = 1;
@@ -682,7 +682,7 @@ sensor_msgs::msg::PointCloud2 AirsimROSWrapper::get_lidar_msg_from_airsim(const
if (isENU_) {
try {
sensor_msgs::msg::PointCloud2 lidar_msg_enu;
- auto transformStampedENU = tf_buffer_->lookupTransform(AIRSIM_FRAME_ID, vehicle_name, rclcpp::Time(0), rclcpp::Duration(1));
+ auto transformStampedENU = tf_buffer_->lookupTransform(AIRSIM_FRAME_ID, vehicle_name, rclcpp::Time(0), rclcpp::Duration::from_nanoseconds(1));
tf2::doTransform(lidar_msg, lidar_msg_enu, transformStampedENU);
lidar_msg_enu.header.stamp = lidar_msg.header.stamp;
@@ -925,7 +925,7 @@ void AirsimROSWrapper::drone_state_timer_cb()
}
catch (rpc::rpc_error& e) {
std::string msg = e.get_error().as();
- RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API:\n%s", msg);
+ RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API:\n%s", msg.c_str());
}
}
@@ -1202,15 +1202,15 @@ void AirsimROSWrapper::append_static_camera_tf(VehicleROS* vehicle_ros, const st
{
geometry_msgs::msg::TransformStamped static_cam_tf_body_msg;
static_cam_tf_body_msg.header.frame_id = vehicle_ros->vehicle_name_ + "/" + odom_frame_id_;
- static_cam_tf_body_msg.child_frame_id = camera_name + "_body/static";
+ static_cam_tf_body_msg.child_frame_id = vehicle_ros->vehicle_name_ + "/" + camera_name + "_body/static";
static_cam_tf_body_msg.transform = get_transform_msg_from_airsim(camera_setting.position, camera_setting.rotation);
if (isENU_) {
convert_tf_msg_to_enu(static_cam_tf_body_msg);
}
- geometry_msgs::msg::TransformStamped static_cam_tf_optical_msg;
- static_cam_tf_optical_msg.header.frame_id = static_cam_tf_body_msg.header.frame_id;
+ geometry_msgs::msg::TransformStamped static_cam_tf_optical_msg = static_cam_tf_body_msg;
+ static_cam_tf_optical_msg.child_frame_id = vehicle_ros->vehicle_name_ + "/" + camera_name + "_optical/static";
static_cam_tf_optical_msg.child_frame_id = camera_name + "_optical/static";
static_cam_tf_optical_msg.transform = get_camera_optical_tf_from_body_tf(static_cam_tf_body_msg.transform);
@@ -1234,7 +1234,7 @@ void AirsimROSWrapper::img_response_timer_cb()
catch (rpc::rpc_error& e) {
std::string msg = e.get_error().as();
- RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API, didn't get image response.\n%s", msg);
+ RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API, didn't get image response.\n%s", msg.c_str());
}
}
@@ -1245,7 +1245,7 @@ void AirsimROSWrapper::lidar_timer_cb()
if (!vehicle_name_ptr_pair.second->lidar_pubs_.empty()) {
for (auto& lidar_publisher : vehicle_name_ptr_pair.second->lidar_pubs_) {
auto lidar_data = airsim_client_lidar_.getLidarData(lidar_publisher.sensor_name, vehicle_name_ptr_pair.first);
- sensor_msgs::msg::PointCloud2 lidar_msg = get_lidar_msg_from_airsim(lidar_data, vehicle_name_ptr_pair.first);
+ sensor_msgs::msg::PointCloud2 lidar_msg = get_lidar_msg_from_airsim(lidar_data, vehicle_name_ptr_pair.first, lidar_publisher.sensor_name);
lidar_publisher.publisher->publish(lidar_msg);
}
}
@@ -1253,7 +1253,7 @@ void AirsimROSWrapper::lidar_timer_cb()
}
catch (rpc::rpc_error& e) {
std::string msg = e.get_error().as();
- RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API, didn't get image response.\n%s", msg);
+ RCLCPP_ERROR(nh_->get_logger(), "Exception raised by the API, didn't get image response.\n%s", msg.c_str());
}
}
@@ -1356,7 +1356,7 @@ void AirsimROSWrapper::publish_camera_tf(const ImageResponse& img_response, cons
geometry_msgs::msg::TransformStamped cam_tf_body_msg;
cam_tf_body_msg.header.stamp = rclcpp::Time(img_response.time_stamp);
cam_tf_body_msg.header.frame_id = frame_id;
- cam_tf_body_msg.child_frame_id = child_frame_id + "_body";
+ cam_tf_body_msg.child_frame_id = frame_id + "/" + child_frame_id + "_body";
cam_tf_body_msg.transform = get_transform_msg_from_airsim(img_response.camera_position, img_response.camera_orientation);
if (isENU_) {
@@ -1366,7 +1366,7 @@ void AirsimROSWrapper::publish_camera_tf(const ImageResponse& img_response, cons
geometry_msgs::msg::TransformStamped cam_tf_optical_msg;
cam_tf_optical_msg.header.stamp = rclcpp::Time(img_response.time_stamp);
cam_tf_optical_msg.header.frame_id = frame_id;
- cam_tf_optical_msg.child_frame_id = child_frame_id + "_optical";
+ cam_tf_optical_msg.child_frame_id = frame_id + "/" + child_frame_id + "_optical";
cam_tf_optical_msg.transform = get_camera_optical_tf_from_body_tf(cam_tf_body_msg.transform);
tf_broadcaster_->sendTransform(cam_tf_body_msg);