Browse Source

Robotics (ROS 2) project template (#74)

* Introduce two gems : RosBotSample and WarehouseSample

 - RosBotSample is simple skid-steering mobile robot to use with ROS2.
 - WarehouseSample is simplistic scene with warehouse.

Co-authored-by: Paweł Budziszewski <[email protected]>
Co-authored-by: Michał Pełka <[email protected]>

Signed-off-by: Michał Pełka <[email protected]>

* ROS2 project template

Co-authored-by: Piotr Jaroszek <[email protected]>
Co-authored-by: Paweł Budziszewski <[email protected]>
Co-authored-by: Michał Pełka <[email protected]>

Signed-off-by: Michał Pełka <[email protected]>

---------

Signed-off-by: Michał Pełka <[email protected]>
Co-authored-by: Paweł Budziszewski <[email protected]>
Co-authored-by: Piotr Jaroszek <[email protected]>
Adam Dąbrowski 2 years ago
parent
commit
930806fb3b
100 changed files with 4539 additions and 29 deletions
  1. 201 0
      Gems/RosRobotSample/Assets/robot/rosbot_xl_description/rosbot_xl.urdf
  2. 201 27
      LICENSE.txt
  3. 1 1
      Templates/Multiplayer/Template/Config/shader_global_build_options.json
  4. 1 1
      Templates/Multiplayer/Template/Registry/physxsystemconfiguration.setreg
  5. 120 0
      Templates/Ros2ProjectTemplate/README.md
  6. 9 0
      Templates/Ros2ProjectTemplate/Template/.gitattributes
  7. 7 0
      Templates/Ros2ProjectTemplate/Template/.gitignore
  8. 20 0
      Templates/Ros2ProjectTemplate/Template/CMakeLists.txt
  9. 8 0
      Templates/Ros2ProjectTemplate/Template/CMakePresets.json
  10. 6 0
      Templates/Ros2ProjectTemplate/Template/Config/default_aws_resource_mappings.json
  11. 11 0
      Templates/Ros2ProjectTemplate/Template/Config/shader_global_build_options.json
  12. 31 0
      Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/README.md
  13. 303 0
      Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/config/config.rviz
  14. 273 0
      Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/config/navigation_params.yaml
  15. 73 0
      Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/config/slam_params.yaml
  16. 44 0
      Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/navigation.launch.py
  17. 47 0
      Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/slam.launch.py
  18. 14 0
      Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_files.cmake
  19. 11 0
      Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_shared_files.cmake
  20. 91 0
      Templates/Ros2ProjectTemplate/Template/Gem/CMakeLists.txt
  21. 38 0
      Templates/Ros2ProjectTemplate/Template/Gem/Include/${Name}/${Name}Bus.h
  22. 11 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Android/${NameLower}_android_files.cmake
  23. 10 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Android/${NameLower}_shared_android_files.cmake
  24. 9 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Android/PAL_android.cmake
  25. 11 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Linux/${NameLower}_linux_files.cmake
  26. 10 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Linux/${NameLower}_shared_linux_files.cmake
  27. 9 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Linux/PAL_linux.cmake
  28. 12 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Mac/${NameLower}_mac_files.cmake
  29. 11 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Mac/${NameLower}_shared_mac_files.cmake
  30. 9 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Mac/PAL_mac.cmake
  31. 10 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Windows/${NameLower}_shared_windows_files.cmake
  32. 11 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Windows/${NameLower}_windows_files.cmake
  33. 9 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/Windows/PAL_windows.cmake
  34. 12 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/iOS/${NameLower}_ios_files.cmake
  35. 10 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/iOS/${NameLower}_shared_ios_files.cmake
  36. 9 0
      Templates/Ros2ProjectTemplate/Template/Gem/Platform/iOS/PAL_ios.cmake
  37. 18 0
      Templates/Ros2ProjectTemplate/Template/Gem/Registry/assetprocessor_settings.setreg
  38. 44 0
      Templates/Ros2ProjectTemplate/Template/Gem/Source/${Name}Module.cpp
  39. 83 0
      Templates/Ros2ProjectTemplate/Template/Gem/Source/${Name}SystemComponent.cpp
  40. 47 0
      Templates/Ros2ProjectTemplate/Template/Gem/Source/${Name}SystemComponent.h
  41. 36 0
      Templates/Ros2ProjectTemplate/Template/Gem/enabled_gems.cmake
  42. 24 0
      Templates/Ros2ProjectTemplate/Template/Gem/gem.json
  43. 201 0
      Templates/Ros2ProjectTemplate/Template/LICENSE.txt
  44. 1628 0
      Templates/Ros2ProjectTemplate/Template/Levels/DemoLevel/DemoLevel.prefab
  45. 8 0
      Templates/Ros2ProjectTemplate/Template/Platform/Android/android_project.cmake
  46. 9 0
      Templates/Ros2ProjectTemplate/Template/Platform/Android/android_project.json
  47. 8 0
      Templates/Ros2ProjectTemplate/Template/Platform/Linux/linux_project.cmake
  48. 3 0
      Templates/Ros2ProjectTemplate/Template/Platform/Linux/linux_project.json
  49. 8 0
      Templates/Ros2ProjectTemplate/Template/Platform/Mac/mac_project.cmake
  50. 3 0
      Templates/Ros2ProjectTemplate/Template/Platform/Mac/mac_project.json
  51. 8 0
      Templates/Ros2ProjectTemplate/Template/Platform/Windows/windows_project.cmake
  52. 3 0
      Templates/Ros2ProjectTemplate/Template/Platform/Windows/windows_project.json
  53. 8 0
      Templates/Ros2ProjectTemplate/Template/Platform/iOS/ios_project.cmake
  54. 3 0
      Templates/Ros2ProjectTemplate/Template/Platform/iOS/ios_project.json
  55. 23 0
      Templates/Ros2ProjectTemplate/Template/Registry/assetprocessor_settings.setreg
  56. 10 0
      Templates/Ros2ProjectTemplate/Template/Registry/awscoreconfiguration.setreg
  57. 98 0
      Templates/Ros2ProjectTemplate/Template/Registry/physxsystemconfiguration.setreg
  58. 19 0
      Templates/Ros2ProjectTemplate/Template/Registry/sceneassetimporter.setreg
  59. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/GameSDK.ico
  60. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/LegacyLogoLauncher.bmp
  61. 68 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json
  62. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png
  63. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png
  64. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png
  65. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png
  66. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png
  67. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png
  68. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png
  69. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png
  70. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png
  71. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png
  72. 6 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/Contents.json
  73. 24 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Info.plist
  74. 116 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json
  75. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png
  76. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png
  77. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png
  78. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png
  79. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png
  80. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png
  81. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png
  82. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png
  83. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png
  84. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png
  85. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png
  86. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png
  87. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png
  88. 6 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/Contents.json
  89. 169 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json
  90. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png
  91. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png
  92. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png
  93. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png
  94. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png
  95. 3 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png
  96. 45 0
      Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Info.plist
  97. 5 0
      Templates/Ros2ProjectTemplate/Template/ShaderLib/README.md
  98. 26 0
      Templates/Ros2ProjectTemplate/Template/ShaderLib/scenesrg.srgi
  99. 26 0
      Templates/Ros2ProjectTemplate/Template/ShaderLib/viewsrg.srgi
  100. 0 0
      Templates/Ros2ProjectTemplate/Template/autoexec.cfg

+ 201 - 0
Gems/RosRobotSample/Assets/robot/rosbot_xl_description/rosbot_xl.urdf

@@ -0,0 +1,201 @@
+<?xml version="1.0" ?>
+<!-- =================================================================================== -->
+<!-- |    This document was autogenerated by xacro from /home/michal/ros2_ws/src/rosbot_xl_description/urdf/rosbot_xl.urdf.xacro | -->
+<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
+<!-- =================================================================================== -->
+<robot name="rosbot_xl">
+  <link name="base_link"/>
+  <joint name="base_to_body_joint" type="fixed">
+    <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.048"/>
+    <parent link="base_link"/>
+    <child link="body_link"/>
+  </joint>
+  <link name="body_link">
+    <visual>
+      <geometry>
+        <mesh filename="meshes/body.fbx" scale="1 1 1"/>
+      </geometry>
+      <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </visual>
+    <collision>
+      <geometry>
+        <mesh filename="meshes/body_colision.stl" scale="1 1 1"/>
+      </geometry>
+      <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </collision>
+    <inertial>
+      <mass value="3.5"/>
+      <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0358"/>
+      <inertia ixx="0.01393" ixy="-0.000020968097" ixz="0.000010399694" iyy="0.01081" iyz="0.000059372953" izz="0.02048"/>
+    </inertial>
+  </link>
+  <joint name="body_to_cover_joint" type="fixed">
+    <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.08345"/>
+    <parent link="body_link"/>
+    <child link="cover_link"/>
+  </joint>
+  <link name="cover_link"/>
+  <joint name="body_to_imu_joint" type="fixed">
+    <origin rpy="3.14159 0.0 0.0" xyz="-0.1369 -0.0419 0.0370"/>
+    <parent link="body_link"/>
+    <child link="imu_link"/>
+  </joint>
+  <link name="imu_link"/>
+  <joint name="fl_wheel_joint" type="continuous">
+    <parent link="body_link"/>
+    <child link="fl_wheel_link"/>
+    <origin rpy="0.0 0.0 0.0" xyz="0.085 0.124 0.0"/>
+    <axis xyz="0.0 1.0 0.0"/>
+    <limit effort="1.27" velocity="21.0"/>
+    <dynamics damping="0.001" friction="0.001"/>
+  </joint>
+  <link name="fl_wheel_link">
+    <visual>
+      <geometry>
+        <mesh filename="meshes/wheel_b.dae" scale="1 1 1"/>
+      </geometry>
+      <origin rpy="0.0 0.0 3.141592653589793" xyz="0.0 0.0 0.0"/>
+    </visual>
+    <collision>
+      <geometry>
+        <cylinder length="0.036" radius="0.048"/>
+      </geometry>
+      <origin rpy="1.5707963267948966 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </collision>
+    <inertial>
+      <mass value="0.051"/>
+      <inertia ixx="5.0587413e-05" ixy="0.0" ixz="0.0" iyy="8.5933192e-05" iyz="0.0" izz="5.0587829e-05"/>
+    </inertial>
+  </link>
+  <joint name="fr_wheel_joint" type="continuous">
+    <parent link="body_link"/>
+    <child link="fr_wheel_link"/>
+    <origin rpy="0.0 0.0 0.0" xyz="0.085 -0.124 0.0"/>
+    <axis xyz="0.0 1.0 0.0"/>
+    <limit effort="1.27" velocity="21.0"/>
+    <dynamics damping="0.001" friction="0.001"/>
+  </joint>
+  <link name="fr_wheel_link">
+    <visual>
+      <geometry>
+        <mesh filename="meshes/wheel_a.dae" scale="1 1 1"/>
+      </geometry>
+      <origin rpy="0.0 0.0 3.141592653589793" xyz="0.0 0.0 0.0"/>
+    </visual>
+    <collision>
+      <geometry>
+        <cylinder length="0.036" radius="0.048"/>
+      </geometry>
+      <origin rpy="1.5707963267948966 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </collision>
+    <inertial>
+      <mass value="0.051"/>
+      <inertia ixx="5.0587413e-05" ixy="0.0" ixz="0.0" iyy="8.5933192e-05" iyz="0.0" izz="5.0587829e-05"/>
+    </inertial>
+  </link>
+  <joint name="rl_wheel_joint" type="continuous">
+    <parent link="body_link"/>
+    <child link="rl_wheel_link"/>
+    <origin rpy="0.0 0.0 0.0" xyz="-0.085 0.124 0.0"/>
+    <axis xyz="0.0 1.0 0.0"/>
+    <limit effort="1.27" velocity="21.0"/>
+    <dynamics damping="0.001" friction="0.001"/>
+  </joint>
+  <link name="rl_wheel_link">
+    <visual>
+      <geometry>
+        <mesh filename="meshes/wheel_a.dae" scale="1 1 1"/>
+      </geometry>
+      <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </visual>
+    <collision>
+      <geometry>
+        <cylinder length="0.036" radius="0.048"/>
+      </geometry>
+      <origin rpy="1.5707963267948966 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </collision>
+    <inertial>
+      <mass value="0.051"/>
+      <inertia ixx="5.0587413e-05" ixy="0.0" ixz="0.0" iyy="8.5933192e-05" iyz="0.0" izz="5.0587829e-05"/>
+    </inertial>
+  </link>
+  <joint name="rr_wheel_joint" type="continuous">
+    <parent link="body_link"/>
+    <child link="rr_wheel_link"/>
+    <origin rpy="0.0 0.0 0.0" xyz="-0.085 -0.124 0.0"/>
+    <axis xyz="0.0 1.0 0.0"/>
+    <limit effort="1.27" velocity="21.0"/>
+    <dynamics damping="0.001" friction="0.001"/>
+  </joint>
+  <link name="rr_wheel_link">
+    <visual>
+      <geometry>
+        <mesh filename="meshes/wheel_b.dae" scale="1 1 1"/>
+      </geometry>
+      <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </visual>
+    <collision>
+      <geometry>
+        <cylinder length="0.036" radius="0.048"/>
+      </geometry>
+      <origin rpy="1.5707963267948966 0.0 0.0" xyz="0.0 0.0 0.0"/>
+    </collision>
+    <inertial>
+      <mass value="0.051"/>
+      <inertia ixx="5.0587413e-05" ixy="0.0" ixz="0.0" iyy="8.5933192e-05" iyz="0.0" izz="5.0587829e-05"/>
+    </inertial>
+  </link>
+  <ros2_control name="imu" type="sensor">
+    <hardware>
+      <plugin>rosbot_hardware_interfaces/RosbotImuSensor</plugin>
+      <param name="connection_timeout_ms">120000</param>
+      <param name="connection_check_period_ms">500</param>
+    </hardware>
+    <sensor name="imu">
+      <state_interface name="orientation.x"/>
+      <state_interface name="orientation.y"/>
+      <state_interface name="orientation.z"/>
+      <state_interface name="orientation.w"/>
+      <state_interface name="angular_velocity.x"/>
+      <state_interface name="angular_velocity.y"/>
+      <state_interface name="angular_velocity.z"/>
+      <state_interface name="linear_acceleration.x"/>
+      <state_interface name="linear_acceleration.y"/>
+      <state_interface name="linear_acceleration.z"/>
+    </sensor>
+  </ros2_control>
+  <ros2_control name="wheels" type="system">
+    <hardware>
+      <plugin>rosbot_hardware_interfaces/RosbotSystem</plugin>
+      <param name="connection_timeout_ms">120000</param>
+      <param name="connection_check_period_ms">500</param>
+      <!-- order of velocity commands to be published in motors_cmd Float32MultiArray msg -->
+      <param name="velocity_command_joint_order">
+                rr_wheel_joint,
+                rl_wheel_joint,
+                fr_wheel_joint,
+                fl_wheel_joint
+          </param>
+    </hardware>
+    <joint name="fl_wheel_joint">
+      <command_interface name="velocity"/>
+      <state_interface name="position"/>
+      <state_interface name="velocity"/>
+    </joint>
+    <joint name="fr_wheel_joint">
+      <command_interface name="velocity"/>
+      <state_interface name="position"/>
+      <state_interface name="velocity"/>
+    </joint>
+    <joint name="rl_wheel_joint">
+      <command_interface name="velocity"/>
+      <state_interface name="position"/>
+      <state_interface name="velocity"/>
+    </joint>
+    <joint name="rr_wheel_joint">
+      <command_interface name="velocity"/>
+      <state_interface name="position"/>
+      <state_interface name="velocity"/>
+    </joint>
+  </ros2_control>
+</robot>

+ 201 - 27
LICENSE.txt

@@ -1,27 +1,201 @@
-OPEN 3D ENGINE LICENSING
-The default license for Open 3D Engine is the Apache License, Version 2.0 
-(see LICENSE_APACHE2.TXT); you may elect at your option to use the Open 3D 
-Engine under the MIT License (see LICENSE_MIT.TXT).  Contributions must be 
-made under both licenses.
- 
-THIRD PARTY COMPONENTS
-Open 3D Engine requires the use of (and in some cases makes available to you) 
-software and assets that have been developed by third parties and are subject 
-to separate license terms (such as code licensed under other open source 
-licenses).  It is your responsibility to comply with the applicable licenses. 
-Information on third party materials, and the applicable license terms, are 
-referenced in or included with the materials, such as in separate LICENSE.txt 
-files accompanying the materials.
- 
-Please note that certain materials are subject to "copyleft" licenses, which 
-require distribution of source code, including:
- 
-- Qt Toolkit https://github.com/qtproject/, which is subject to the GNU 
-Lesser General Public License version 3 (with certain exceptions). A copy of 
-the source code for Qt Toolkit may be found at 
-https://github.com/o3de/3p-package-source/tree/main/package-system/Qt 
- 
-- The AWS Python SDK uses Chardet https://chardet.github.io/, which is 
-subject to the GNU Lesser General Public License version 2.1. A copy of the 
-source code may be found at https://github.com/chardet/chardet.
- 
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 1 - 1
Templates/Multiplayer/Template/Config/shader_global_build_options.json

@@ -8,4 +8,4 @@
             "AzslcAdditionalFreeArguments" : "--strip-unused-srgs"
         }
     }
-}
+}

+ 1 - 1
Templates/Multiplayer/Template/Registry/physxsystemconfiguration.setreg

@@ -105,4 +105,4 @@
             }
         }
     }
-}
+}

+ 120 - 0
Templates/Ros2ProjectTemplate/README.md

@@ -0,0 +1,120 @@
+# ROS2 Project Template
+
+This template allows to create a ROS2 project with sample content. 
+
+The example ROS2 navigation stack launchfile is bundled with the template.
+
+## Requirements
+
+Due to ROS2 dependency, this project was prepared and tested on Linux operating system. It is recomended to use Ubuntu [20.04](https://releases.ubuntu.com/focal) or [22.10](https://releases.ubuntu.com/kinetic), however any distribution meeting following requirements may be used.
+
+Refer to the [O3DE System Requirements](https://www.o3de.org/docs/welcome-guide/requirements/) documentation to make sure that the system/hardware requirements are met. 
+This project has the following dependencies:
+
+- [O3DE](https://github.com/o3de/o3de)
+- [ROS2](https://www.ros.org/) (galactic or humble)
+- [ROS2 Gem](https://github.com/o3de/o3de-extras/tree/development/Gems/ROS2)
+- [RosRobotSample Assets](https://github.com/o3de/o3de-extras/tree/development/Gems/RosRobotSample)
+- [WarehouseSample Assets](https://github.com/o3de/o3de-extras/tree/development/Gems/WarehouseSample)
+
+Please make sure that `clang` was installed and configured. For details refer to [this section](https://www.o3de.org/docs/welcome-guide/requirements/#linux) of O3DE documentation.
+
+To run the navigation example, two ROS2 packages are also required:
+- [navigation2](https://github.com/ros-planning/navigation2)
+- [slam_toolbox](https://github.com/SteveMacenski/slam_toolbox)
+
+## Setup Instructions
+
+The following steps will assume the following:
+
+- You have ROS2 humble [installed](https://docs.ros.org/en/humble/Installation.html) and environment is [sourced](https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.html#source-the-setup-files).
+- The O3DE gems, projects and templates will be placed in the O3DE home folder: `/home/${USER}/O3DE`.
+- You have the O3DE engine [downloaded and built](https://www.o3de.org/docs/welcome-guide/setup/setup-from-github) and it is located in `/home/${USER}/O3DE/Engines/Development`.
+
+In this tutorial, CLI tools will be used. It is also possible to use O3DE gui to set up a project from template. See the [O3DE Project manager documentation](https://www.o3de.org/docs/user-guide/project-config/project-manager/) for more details. In such case it is required to source your ROS2 distro before launching O3DE manager:
+
+```shell
+source /opt/ros/humble/setup.bash
+./build/linux/bin/profile/o3de
+```
+
+### 1. Install ROS2 packages
+
+```shell
+sudo apt install ros-${ROS_DISTRO}-ackermann-msgs ros-${ROS_DISTRO}-gazebo-msgs ros-${ROS_DISTRO}-control-toolbox
+```
+
+### 2. Download the template and asset gems
+
+For convenienience, we'll define a shell variables with o3de folders:
+
+```shell
+export O3DE_HOME=/home/${USER}/O3DE
+export O3DE_ENGINE=${O3DE_HOME}/Engines/Development
+```
+
+Clone the `o3de-extras` repository containing the template and asset gems
+
+```shell
+mkdir -p ${O3DE_HOME}/Projects
+cd ${O3DE_HOME}/Projects
+git clone [email protected]:o3de/o3de-extras.git
+```
+
+Copy gems to the O3DE home.
+
+```shell
+mkdir -p ${O3DE_HOME}/Gems
+cp o3de-extras/Gems/ROS2 ${O3DE_HOME}/Gems
+cp o3de-extras/Gems/WarehouseSample ${O3DE_HOME}/Gems
+cp o3de-extras/Gems/RosRobotSample ${O3DE_HOME}/Gems
+```
+
+Register these gems.
+
+```shell
+${O3DE_ENGINE}/scripts/o3de.sh register --gem-path ${O3DE_HOME}/Gems/ROS2
+${O3DE_ENGINE}/scripts/o3de.sh register --gem-path ${O3DE_HOME}/Gems/WarehouseSample
+${O3DE_ENGINE}/scripts/o3de.sh register --gem-path ${O3DE_HOME}/Gems/RosRobotSample
+```
+
+### 3. Create a ROS2 project from the template
+
+Assign a name for the new project. In this example, it is assumed that it will be: `WarehouseTest`, and it will be located in `$DEMO_BASE/WarehouseTest` folder. 
+
+```shell
+export PROJECT_NAME=WarehouseTest
+export PROJECT_PATH=${O3DE_HOME}/Projects/${PROJECT_NAME}
+${O3DE_ENGINE}/scripts/o3de.sh create-project --project-path $PROJECT_PATH --template-path ${O3DE_HOME}/Projects/o3de-extras/Templates/Ros2ProjectTemplate/ -f 
+```
+
+Enable gems.
+
+```shell
+${O3DE_ENGINE}/scripts/o3de.sh enable-gem --gem-name ROS2 --project-path $PROJECT_PATH
+${O3DE_ENGINE}/scripts/o3de.sh enable-gem --gem-name WarehouseSample --project-path $PROJECT_PATH
+${O3DE_ENGINE}/scripts/o3de.sh enable-gem --gem-name RosRobotSample --project-path $PROJECT_PATH
+```
+
+### 4. Build the project
+
+Next, let us the build project with the necessary elements of the O3DE engine and ROS2 Gem.
+
+```shell
+cd $PROJECT_PATH
+source /opt/ros/humble/setup.bash
+cmake -B build/linux -G "Ninja Multi-Config" -DLY_UNITY_BUILD=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLY_PARALLEL_LINK_JOBS=16 -DLY_STRIP_DEBUG_SYMBOLS=OFF
+cmake --build build/linux --config profile --target $PROJECT_NAME.GameLauncher Editor
+```
+
+### 5. Launch Editor
+
+Finally, previously built O3DE with preloaded ROS2 Gem can be run:
+
+```shell
+$PROJECT_PATH/build/linux/bin/profile/Editor
+```
+
+## Running ROS example
+
+Refer to `$PROJECT_PATH/Examples/slam_navigation/README.md` for instructions.

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/.gitattributes

@@ -0,0 +1,9 @@
+*.jpg filter=lfs diff=lfs merge=lfs -text
+*.jpeg filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+*.psd filter=lfs diff=lfs merge=lfs -text
+*.FBX filter=lfs diff=lfs merge=lfs -text
+*.fbx filter=lfs diff=lfs merge=lfs -text
+*.blend filter=lfs diff=lfs merge=lfs -text
+*.obj filter=lfs diff=lfs merge=lfs -text

+ 7 - 0
Templates/Ros2ProjectTemplate/Template/.gitignore

@@ -0,0 +1,7 @@
+[Bb]uild/
+[Cc]ache/
+[Uu]ser/
+[Uu]ser_test*/
+_savebackup/
+**/__pycache__
+CMakeUserPresets.json

+ 20 - 0
Templates/Ros2ProjectTemplate/Template/CMakeLists.txt

@@ -0,0 +1,20 @@
+# {BEGIN_LICENSE}
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+# {END_LICENSE}
+
+if(NOT PROJECT_NAME)
+    cmake_minimum_required(VERSION 3.22)
+    include(cmake/EngineFinder.cmake OPTIONAL)
+    find_package(o3de REQUIRED)
+    project(${Name}
+        LANGUAGES C CXX
+        VERSION 1.0.0.0
+    )
+    o3de_initialize()
+endif()

+ 8 - 0
Templates/Ros2ProjectTemplate/Template/CMakePresets.json

@@ -0,0 +1,8 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    }
+}

+ 6 - 0
Templates/Ros2ProjectTemplate/Template/Config/default_aws_resource_mappings.json

@@ -0,0 +1,6 @@
+{
+    "AWSResourceMappings": {},
+    "AccountId": "EMPTY",
+    "Region": "us-east-1",
+    "Version": "1.0.0"
+}

+ 11 - 0
Templates/Ros2ProjectTemplate/Template/Config/shader_global_build_options.json

@@ -0,0 +1,11 @@
+{
+    "Type": "JsonSerialization",
+    "Version": 1,
+    "ClassName": "GlobalBuildOptions",
+    "ClassData": {
+        "ShaderCompilerArguments" : {
+            "DefaultMatrixOrder" : "Row",
+            "AzslcAdditionalFreeArguments" : "--strip-unused-srgs"
+        }
+    }
+}

+ 31 - 0
Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/README.md

@@ -0,0 +1,31 @@
+# ROS2 Project navigation example
+
+To run the navigation example with your project:
+
+1. Make sure you have all `Ros2ProjectTemplate` requirements installed (see template README.md)
+
+1. Make sure your project is based on `Ros2ProjectTemplate`
+
+1. Install ROS2 packages:
+```shell
+sudo apt install ros-${ROS_DISTRO}-slam-toolbox ros-${ROS_DISTRO}-navigation2 ros-${ROS_DISTRO}-nav2-bringup ros-${ROS_DISTRO}-pointcloud-to-laserscan ros-${ROS_DISTRO}-teleop-twist-keyboard
+```
+
+1. Run your project in O3DE editor
+
+1. Open `DemoLevel`
+
+1. Start the simulation by clicking the `Play Game` button or pressing `CTRL+G`
+
+1. Source ROS2 (humble version is assumed):
+```shell
+. /opt/ros/humble/setup.bash
+```
+
+1. Start navigation stack:
+```shell
+cd examples/slam_navigation/launch
+ros2 launch navigation.launch.py
+```
+
+1. Set robot target goal. Use RViz2 GUI to set the goal by using the `2D Goal Pose` tool (upper toolbar).

File diff suppressed because it is too large
+ 303 - 0
Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/config/config.rviz


+ 273 - 0
Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/config/navigation_params.yaml

@@ -0,0 +1,273 @@
+bt_navigator:
+  ros__parameters:
+    use_sim_time: True
+    global_frame: map
+    robot_base_frame: base_link
+    odom_topic: /odom
+    bt_loop_duration: 10
+    default_server_timeout: 20
+    enable_groot_monitoring: True
+    groot_zmq_publisher_port: 1666
+    groot_zmq_server_port: 1667
+    # 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
+    # nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
+    # nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
+    # They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
+    plugin_lib_names:
+    - nav2_compute_path_to_pose_action_bt_node
+    - nav2_compute_path_through_poses_action_bt_node
+    - nav2_follow_path_action_bt_node
+    - nav2_back_up_action_bt_node
+    - nav2_spin_action_bt_node
+    - nav2_wait_action_bt_node
+    - nav2_clear_costmap_service_bt_node
+    - nav2_is_stuck_condition_bt_node
+    - nav2_goal_reached_condition_bt_node
+    - nav2_goal_updated_condition_bt_node
+    - nav2_initial_pose_received_condition_bt_node
+    - nav2_reinitialize_global_localization_service_bt_node
+    - nav2_rate_controller_bt_node
+    - nav2_distance_controller_bt_node
+    - nav2_speed_controller_bt_node
+    - nav2_truncate_path_action_bt_node
+    - nav2_goal_updater_node_bt_node
+    - nav2_recovery_node_bt_node
+    - nav2_pipeline_sequence_bt_node
+    - nav2_round_robin_node_bt_node
+    - nav2_transform_available_condition_bt_node
+    - nav2_time_expired_condition_bt_node
+    - nav2_distance_traveled_condition_bt_node
+    - nav2_single_trigger_bt_node
+    - nav2_is_battery_low_condition_bt_node
+    - nav2_navigate_through_poses_action_bt_node
+    - nav2_navigate_to_pose_action_bt_node
+    - nav2_remove_passed_goals_action_bt_node
+    - nav2_planner_selector_bt_node
+    - nav2_controller_selector_bt_node
+    - nav2_goal_checker_selector_bt_node
+
+bt_navigator_rclcpp_node:
+  ros__parameters:
+    use_sim_time: True
+
+controller_server:
+  ros__parameters:
+    use_sim_time: True
+    controller_frequency: 20.0
+    min_x_velocity_threshold: 0.001
+    min_y_velocity_threshold: 0.5
+    min_theta_velocity_threshold: 0.001
+    failure_tolerance: 0.3
+    progress_checker_plugin: "progress_checker"
+    goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker"
+    controller_plugins: ["FollowPath"]
+
+    # Progress checker parameters
+    progress_checker:
+      plugin: "nav2_controller::SimpleProgressChecker"
+      required_movement_radius: 0.5
+      movement_time_allowance: 10.0
+    # Goal checker parameters
+    #precise_goal_checker:
+    #  plugin: "nav2_controller::SimpleGoalChecker"
+    #  xy_goal_tolerance: 0.25
+    #  yaw_goal_tolerance: 0.25
+    #  stateful: True
+    general_goal_checker:
+      stateful: True
+      plugin: "nav2_controller::SimpleGoalChecker"
+      xy_goal_tolerance: 0.25
+      yaw_goal_tolerance: 0.25
+    # DWB parameters
+    FollowPath:
+      plugin: "dwb_core::DWBLocalPlanner"
+      debug_trajectory_details: True
+      min_vel_x: 0.0
+      min_vel_y: 0.0
+      max_vel_x: 0.26
+      max_vel_y: 0.0
+      max_vel_theta: 1.0
+      min_speed_xy: 0.0
+      max_speed_xy: 0.26
+      min_speed_theta: 0.0
+      # Add high threshold velocity for turtlebot 3 issue.
+      # https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
+      acc_lim_x: 2.5
+      acc_lim_y: 0.0
+      acc_lim_theta: 3.2
+      decel_lim_x: -2.5
+      decel_lim_y: 0.0
+      decel_lim_theta: -3.2
+      vx_samples: 20
+      vy_samples: 5
+      vtheta_samples: 20
+      sim_time: 1.7
+      linear_granularity: 0.05
+      angular_granularity: 0.025
+      transform_tolerance: 0.2
+      xy_goal_tolerance: 0.25
+      trans_stopped_velocity: 0.25
+      short_circuit_trajectory_evaluation: True
+      stateful: True
+      critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
+      BaseObstacle.scale: 0.02
+      PathAlign.scale: 32.0
+      PathAlign.forward_point_distance: 0.1
+      GoalAlign.scale: 24.0
+      GoalAlign.forward_point_distance: 0.1
+      PathDist.scale: 32.0
+      GoalDist.scale: 24.0
+      RotateToGoal.scale: 32.0
+      RotateToGoal.slowing_factor: 5.0
+      RotateToGoal.lookahead_time: -1.0
+      
+controller_server_rclcpp_node:
+  ros__parameters:
+    use_sim_time: True
+
+local_costmap:
+  local_costmap:
+    ros__parameters:
+      update_frequency: 5.0
+      publish_frequency: 2.0
+      global_frame: odom
+      robot_base_frame: base_link
+      use_sim_time: True
+      rolling_window: true
+      width: 3
+      height: 3
+      resolution: 0.05
+      robot_radius: 0.22
+      plugins: ["voxel_layer", "inflation_layer"]
+      inflation_layer:
+        plugin: "nav2_costmap_2d::InflationLayer"
+        cost_scaling_factor: 3.0
+        inflation_radius: 0.15
+      voxel_layer:
+        plugin: "nav2_costmap_2d::VoxelLayer"
+        enabled: True
+        publish_voxel_map: True
+        origin_z: 0.0
+        z_resolution: 0.05
+        z_voxels: 16
+        max_obstacle_height: 2.0
+        mark_threshold: 0
+        observation_sources: scan
+        scan:
+          topic: /scan
+          max_obstacle_height: 2.0
+          clearing: True
+          marking: True
+          data_type: "LaserScan"
+          raytrace_max_range: 3.0
+          raytrace_min_range: 0.0
+          obstacle_max_range: 2.5
+          obstacle_min_range: 0.0
+      static_layer:
+        map_subscribe_transient_local: True
+      always_send_full_costmap: True
+  local_costmap_client:
+    ros__parameters:
+      use_sim_time: True
+  local_costmap_rclcpp_node:
+    ros__parameters:
+      use_sim_time: True
+
+global_costmap:
+  global_costmap:
+    ros__parameters:
+      update_frequency: 1.0
+      publish_frequency: 1.0
+      global_frame: map
+      robot_base_frame: base_link
+      use_sim_time: True
+      robot_radius: 0.22
+      resolution: 0.05
+      track_unknown_space: true
+      plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
+      obstacle_layer:
+        plugin: "nav2_costmap_2d::ObstacleLayer"
+        enabled: True
+        observation_sources: scan
+        scan:
+          topic: /scan
+          max_obstacle_height: 2.0
+          clearing: True
+          marking: True
+          data_type: "LaserScan"
+          raytrace_max_range: 3.0
+          raytrace_min_range: 0.0
+          obstacle_max_range: 2.5
+          obstacle_min_range: 0.0
+      static_layer:
+        plugin: "nav2_costmap_2d::StaticLayer"
+        map_subscribe_transient_local: True
+      inflation_layer:
+        plugin: "nav2_costmap_2d::InflationLayer"
+        cost_scaling_factor: 3.0
+        inflation_radius: 0.35
+      always_send_full_costmap: True
+  global_costmap_client:
+    ros__parameters:
+      use_sim_time: True
+  global_costmap_rclcpp_node:
+    ros__parameters:
+      use_sim_time: True
+
+map_saver:
+  ros__parameters:
+    use_sim_time: True
+    save_map_timeout: 5.0
+    free_thresh_default: 0.25
+    occupied_thresh_default: 0.65
+    map_subscribe_transient_local: True
+
+planner_server:
+  ros__parameters:
+    expected_planner_frequency: 20.0
+    use_sim_time: True
+    planner_plugins: ["GridBased"]
+    GridBased:
+      plugin: "nav2_smac_planner/SmacPlanner2D"
+      tolerance: 0.5
+      use_astar: true
+      allow_unknown: true
+
+planner_server_rclcpp_node:
+  ros__parameters:
+    use_sim_time: True
+
+recoveries_server:
+  ros__parameters:
+    costmap_topic: local_costmap/costmap_raw
+    footprint_topic: local_costmap/published_footprint
+    cycle_frequency: 10.0
+    recovery_plugins: ["spin", "backup", "wait"]
+    spin:
+      plugin: "nav2_recoveries/Spin"
+    backup:
+      plugin: "nav2_recoveries/BackUp"
+    wait:
+      plugin: "nav2_recoveries/Wait"
+    global_frame: odom
+    robot_base_frame: base_link
+    transform_timeout: 0.1
+    use_sim_time: true
+    simulate_ahead_time: 2.0
+    max_rotational_vel: 1.0
+    min_rotational_vel: 0.4
+    rotational_acc_lim: 3.2
+
+robot_state_publisher:
+  ros__parameters:
+    use_sim_time: True
+
+waypoint_follower:
+  ros__parameters:
+    loop_rate: 20
+    stop_on_failure: false
+    waypoint_task_executor_plugin: "wait_at_waypoint"   
+    wait_at_waypoint:
+      plugin: "nav2_waypoint_follower::WaitAtWaypoint"
+      enabled: True
+      waypoint_pause_duration: 200

+ 73 - 0
Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/config/slam_params.yaml

@@ -0,0 +1,73 @@
+slam_toolbox:
+  ros__parameters:
+
+    # Plugin params
+    solver_plugin: solver_plugins::CeresSolver
+    ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
+    ceres_preconditioner: SCHUR_JACOBI
+    ceres_trust_strategy: LEVENBERG_MARQUARDT
+    ceres_dogleg_type: TRADITIONAL_DOGLEG
+    ceres_loss_function: None
+
+    # ROS Parameters
+    odom_frame: odom
+    map_frame: map
+    base_frame: base_link
+    scan_topic: /scan
+    mode: mapping #localization
+
+    # if you'd like to immediately start continuing a map at a given pose
+    # or at the dock, but they are mutually exclusive, if pose is given
+    # will use pose
+    #map_file_name: test_steve
+    # map_start_pose: [0.0, 0.0, 0.0]
+    #map_start_at_dock: true
+
+    debug_logging: false
+    throttle_scans: 1
+    transform_publish_period: 0.02 #if 0 never publishes odometry
+    map_update_interval: 5.0
+    resolution: 0.05
+    max_laser_range: 20.0 #for rastering images
+    minimum_time_interval: 0.5
+    transform_timeout: 0.2
+    tf_buffer_duration: 30.
+    stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
+    enable_interactive_mode: true
+
+    # General Parameters
+    use_scan_matching: true
+    use_scan_barycenter: true
+    minimum_travel_distance: 0.5
+    minimum_travel_heading: 0.5
+    scan_buffer_size: 10
+    scan_buffer_maximum_scan_distance: 10.0
+    link_match_minimum_response_fine: 0.1  
+    link_scan_maximum_distance: 1.5
+    loop_search_maximum_distance: 3.0
+    do_loop_closing: true 
+    loop_match_minimum_chain_size: 10           
+    loop_match_maximum_variance_coarse: 3.0  
+    loop_match_minimum_response_coarse: 0.35    
+    loop_match_minimum_response_fine: 0.45
+
+    # Correlation Parameters - Correlation Parameters
+    correlation_search_space_dimension: 0.5
+    correlation_search_space_resolution: 0.01
+    correlation_search_space_smear_deviation: 0.1 
+
+    # Correlation Parameters - Loop Closure Parameters
+    loop_search_space_dimension: 8.0
+    loop_search_space_resolution: 0.05
+    loop_search_space_smear_deviation: 0.03
+
+    # Scan Matcher Parameters
+    distance_variance_penalty: 0.5      
+    angle_variance_penalty: 1.0    
+
+    fine_search_angle_offset: 0.00349     
+    coarse_search_angle_offset: 0.349   
+    coarse_angle_resolution: 0.0349        
+    minimum_angle_penalty: 0.9
+    minimum_distance_penalty: 0.5
+    use_response_expansion: true

+ 44 - 0
Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/navigation.launch.py

@@ -0,0 +1,44 @@
+# Copyright (c) Contributors to the Open 3D Engine Project.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import pathlib
+
+from ament_index_python.packages import get_package_share_directory
+
+from launch import LaunchDescription
+from launch.actions import IncludeLaunchDescription
+from launch.launch_description_sources import PythonLaunchDescriptionSource
+from launch_ros.actions import Node
+
+def generate_launch_description():
+    return LaunchDescription([
+        IncludeLaunchDescription(
+            PythonLaunchDescriptionSource([str(pathlib.Path(__file__).parent.absolute().joinpath('slam.launch.py'))])
+        ),
+        IncludeLaunchDescription(
+            PythonLaunchDescriptionSource([str(pathlib.Path(get_package_share_directory("nav2_bringup")).joinpath('launch', 'navigation_launch.py'))]),
+            launch_arguments = {
+                'params_file': str(pathlib.Path(__file__).parent.absolute().joinpath('config', 'navigation_params.yaml'))
+            }.items()
+        ),
+        Node(
+            package='rviz2',
+            executable='rviz2',
+            name='slam',
+            output='screen',
+            arguments=[
+                '-d', str(pathlib.Path(__file__).parent.absolute().joinpath('config', 'config.rviz'))
+            ]
+        ),
+    ])

+ 47 - 0
Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/launch/slam.launch.py

@@ -0,0 +1,47 @@
+# Copyright (c) Contributors to the Open 3D Engine Project.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+import pathlib
+
+from ament_index_python.packages import get_package_share_directory
+
+from launch import LaunchDescription
+from launch.actions import IncludeLaunchDescription
+from launch.launch_description_sources import PythonLaunchDescriptionSource
+from launch_ros.actions import Node
+
+def generate_launch_description():
+    return LaunchDescription([
+        IncludeLaunchDescription(
+            PythonLaunchDescriptionSource([str(pathlib.Path(
+                get_package_share_directory('slam_toolbox')).joinpath('launch', 'online_async_launch.py'))]),
+            launch_arguments = {
+                'slam_params_file': str(pathlib.Path(__file__).parent.absolute().joinpath('config', 'slam_params.yaml'))
+            }.items()
+        ),
+        Node(
+            package='pointcloud_to_laserscan',
+            executable='pointcloud_to_laserscan_node',
+            name='pc_to_laserscan',
+            parameters=[{
+                'min_height': 0.0,
+                'max_height': 0.4,
+                'range_min': 0.05
+            }],
+            remappings=[
+                ('/cloud_in', '/pc'),
+            ]
+        )
+    ])

+ 14 - 0
Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_files.cmake

@@ -0,0 +1,14 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    Include/${Name}/${Name}Bus.h
+    Source/${Name}SystemComponent.cpp
+    Source/${Name}SystemComponent.h
+    enabled_gems.cmake
+)

+ 11 - 0
Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_shared_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    Source/${Name}Module.cpp
+)

+ 91 - 0
Templates/Ros2ProjectTemplate/Template/Gem/CMakeLists.txt

@@ -0,0 +1,91 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+# Query the gem name from the gem.json file if possible
+# otherwise fallback to using ${Name}
+o3de_find_ancestor_gem_root(gempath gem_name "${CMAKE_CURRENT_SOURCE_DIR}")
+if (NOT gem_name)
+    set(gem_name "${Name}")
+endif()
+
+# Fallback to using the current source CMakeLists.txt directory as the gem root path
+if (NOT gem_path)
+    set(gem_path ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+
+set(gem_json ${gem_path}/gem.json)
+
+o3de_restricted_path(${gem_json} gem_restricted_path gem_parent_relative_path)
+
+# Currently we are in the ${Name}/Code folder: ${CMAKE_CURRENT_LIST_DIR}
+# Get the platform specific folder ${pal_dir} for the current folder: ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}
+# Note: o3de_pal_dir will take care of the details for us, as this may be a restricted platform
+#       in which case it will see if that platform is present here or in the restricted folder.
+#       i.e. It could here : ${Name}/Code/Platform/<platform_name>  or
+#            <restricted_folder>/<platform_name>/${Name}/Code
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_SOURCE_DIR}/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
+
+# Now that we have the platform abstraction layer (PAL) folder for this folder, thats where we will find the
+# traits for this platform. Traits for a platform are defines for things like whether or not something in this project
+# is supported by this platform.
+include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
+
+# Now that we have loaded our project traits for this platform, see if this project is even supported on this platform.
+# If its not supported we just return after including the unsupported.
+if(NOT PAL_TRAIT_${NameUpper}_SUPPORTED)
+    return()
+endif()
+
+# We are on a supported platform, so add the ${gem_name} target
+# Note: We include the common files and the platform specific files which are set in ${NameLower}_files.cmake and
+# in ${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+
+# The ${gem_name}.Private.Object target is an internal target
+# It should not be used outside of this CMakeLists.txt
+ly_add_target(
+    NAME ${gem_name}.Private.Object STATIC
+    NAMESPACE Gem
+    FILES_CMAKE
+        ${NameLower}_files.cmake
+        ${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+    INCLUDE_DIRECTORIES
+        PUBLIC
+            Include
+    BUILD_DEPENDENCIES
+        PRIVATE
+            AZ::AzGameFramework
+            Gem::Atom_AtomBridge.Static
+)
+
+ly_add_target(
+    NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
+    NAMESPACE Gem
+    FILES_CMAKE
+        ${NameLower}_shared_files.cmake
+        ${pal_dir}/${NameLower}_shared_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+    INCLUDE_DIRECTORIES
+        PUBLIC
+            Include
+    BUILD_DEPENDENCIES
+        PRIVATE
+            Gem::${gem_name}.Private.Object
+            AZ::AzCore
+)
+
+# if enabled, ${gem_name} is used by all kinds of applications
+ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name})
+ly_create_alias(NAME ${gem_name}.Tools    NAMESPACE Gem TARGETS Gem::${gem_name})
+ly_create_alias(NAME ${gem_name}.Clients  NAMESPACE Gem TARGETS Gem::${gem_name})
+ly_create_alias(NAME ${gem_name}.Servers  NAMESPACE Gem TARGETS Gem::${gem_name})
+
+################################################################################
+# Gem dependencies
+################################################################################
+
+# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project:
+ly_enable_gems(PROJECT_NAME ${Name} GEM_FILE enabled_gems.cmake)

+ 38 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Include/${Name}/${Name}Bus.h

@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+
+#pragma once
+
+#include <AzCore/EBus/EBus.h>
+#include <AzCore/Interface/Interface.h>
+
+namespace ${SanitizedCppName}
+{
+    class ${SanitizedCppName}Requests
+    {
+    public:
+        AZ_RTTI(${SanitizedCppName}Requests, "{${Random_Uuid}}");
+        virtual ~${SanitizedCppName}Requests() = default;
+        // Put your public methods here
+    };
+
+    class ${SanitizedCppName}BusTraits
+        : public AZ::EBusTraits
+    {
+    public:
+        //////////////////////////////////////////////////////////////////////////
+        // EBusTraits overrides
+        static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
+        static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
+        //////////////////////////////////////////////////////////////////////////
+    };
+
+    using ${SanitizedCppName}RequestBus = AZ::EBus<${SanitizedCppName}Requests, ${SanitizedCppName}BusTraits>;
+    using ${SanitizedCppName}Interface = AZ::Interface<${SanitizedCppName}Requests>;
+
+} // namespace ${SanitizedCppName}

+ 11 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Android/${NameLower}_android_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    PAL_android.cmake
+)

+ 10 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Android/${NameLower}_shared_android_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Android/PAL_android.cmake

@@ -0,0 +1,9 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)

+ 11 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Linux/${NameLower}_linux_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    PAL_linux.cmake
+)

+ 10 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Linux/${NameLower}_shared_linux_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Linux/PAL_linux.cmake

@@ -0,0 +1,9 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)

+ 12 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Mac/${NameLower}_mac_files.cmake

@@ -0,0 +1,12 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    ../../../Resources/Platform/Mac/Info.plist
+    PAL_mac.cmake
+)

+ 11 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Mac/${NameLower}_shared_mac_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    ../../../Resources/Platform/Mac/Info.plist
+)

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Mac/PAL_mac.cmake

@@ -0,0 +1,9 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)

+ 10 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Windows/${NameLower}_shared_windows_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 11 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Windows/${NameLower}_windows_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    PAL_windows.cmake
+)

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/Windows/PAL_windows.cmake

@@ -0,0 +1,9 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)

+ 12 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/iOS/${NameLower}_ios_files.cmake

@@ -0,0 +1,12 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    ../../../Resources/Platform/iOS/Info.plist
+    PAL_ios.cmake
+)

+ 10 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/iOS/${NameLower}_shared_ios_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Platform/iOS/PAL_ios.cmake

@@ -0,0 +1,9 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)

+ 18 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Registry/assetprocessor_settings.setreg

@@ -0,0 +1,18 @@
+{
+    "Amazon": {
+        "AssetProcessor": {
+            "Settings": {
+                "ScanFolder ${Name}/Assets": {
+                    "watch": "@GEMROOT:${Name}@/Assets",
+                    "recursive": 1,
+                    "order": 101
+                },
+                "ScanFolder ${Name}/Registry": {
+                    "watch": "@GEMROOT:${Name}@/Registry",
+                    "recursive": 1,
+                    "order": 102
+                }
+            }
+        }
+    }
+}

+ 44 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Source/${Name}Module.cpp

@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+
+#include <AzCore/Memory/SystemAllocator.h>
+#include <AzCore/Module/Module.h>
+
+#include "${Name}SystemComponent.h"
+
+namespace ${SanitizedCppName}
+{
+    class ${SanitizedCppName}Module
+        : public AZ::Module
+    {
+    public:
+        AZ_RTTI(${SanitizedCppName}Module, "${ModuleClassId}", AZ::Module);
+        AZ_CLASS_ALLOCATOR(${SanitizedCppName}Module, AZ::SystemAllocator, 0);
+
+        ${SanitizedCppName}Module()
+            : AZ::Module()
+        {
+            // Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
+            m_descriptors.insert(m_descriptors.end(), {
+                ${SanitizedCppName}SystemComponent::CreateDescriptor(),
+            });
+        }
+
+        /**
+         * Add required SystemComponents to the SystemEntity.
+         */
+        AZ::ComponentTypeList GetRequiredSystemComponents() const override
+        {
+            return AZ::ComponentTypeList{
+                azrtti_typeid<${SanitizedCppName}SystemComponent>(),
+            };
+        }
+    };
+}// namespace ${SanitizedCppName}
+
+AZ_DECLARE_MODULE_CLASS(Gem_${SanitizedCppName}, ${SanitizedCppName}::${SanitizedCppName}Module)

+ 83 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Source/${Name}SystemComponent.cpp

@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+
+#include <AzCore/Serialization/SerializeContext.h>
+#include <AzCore/Serialization/EditContext.h>
+#include <AzCore/Serialization/EditContextConstants.inl>
+
+#include "${Name}SystemComponent.h"
+
+namespace ${SanitizedCppName}
+{
+    void ${SanitizedCppName}SystemComponent::Reflect(AZ::ReflectContext* context)
+    {
+        if (AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context))
+        {
+            serialize->Class<${SanitizedCppName}SystemComponent, AZ::Component>()
+                ->Version(0)
+                ;
+
+            if (AZ::EditContext* ec = serialize->GetEditContext())
+            {
+                ec->Class<${SanitizedCppName}SystemComponent>("${SanitizedCppName}", "[Description of functionality provided by this System Component]")
+                    ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
+                        ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System"))
+                        ->Attribute(AZ::Edit::Attributes::AutoExpand, true)
+                    ;
+            }
+        }
+    }
+
+    void ${SanitizedCppName}SystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
+    {
+        provided.push_back(AZ_CRC("${SanitizedCppName}Service"));
+    }
+
+    void ${SanitizedCppName}SystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
+    {
+        incompatible.push_back(AZ_CRC("${SanitizedCppName}Service"));
+    }
+
+    void ${SanitizedCppName}SystemComponent::GetRequiredServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& required)
+    {
+    }
+
+    void ${SanitizedCppName}SystemComponent::GetDependentServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& dependent)
+    {
+    }
+
+    ${SanitizedCppName}SystemComponent::${SanitizedCppName}SystemComponent()
+    {
+        if (${SanitizedCppName}Interface::Get() == nullptr)
+        {
+            ${SanitizedCppName}Interface::Register(this);
+        }
+    }
+
+    ${SanitizedCppName}SystemComponent::~${SanitizedCppName}SystemComponent()
+    {
+        if (${SanitizedCppName}Interface::Get() == this)
+        {
+            ${SanitizedCppName}Interface::Unregister(this);
+        }
+    }
+
+    void ${SanitizedCppName}SystemComponent::Init()
+    {
+    }
+
+    void ${SanitizedCppName}SystemComponent::Activate()
+    {
+        ${SanitizedCppName}RequestBus::Handler::BusConnect();
+    }
+
+    void ${SanitizedCppName}SystemComponent::Deactivate()
+    {
+        ${SanitizedCppName}RequestBus::Handler::BusDisconnect();
+    }
+}

+ 47 - 0
Templates/Ros2ProjectTemplate/Template/Gem/Source/${Name}SystemComponent.h

@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+
+#pragma once
+
+#include <AzCore/Component/Component.h>
+
+#include <${Name}/${Name}Bus.h>
+
+namespace ${SanitizedCppName}
+{
+    class ${SanitizedCppName}SystemComponent
+        : public AZ::Component
+        , protected ${SanitizedCppName}RequestBus::Handler
+    {
+    public:
+        AZ_COMPONENT(${SanitizedCppName}SystemComponent, "${SysCompClassId}");
+
+        static void Reflect(AZ::ReflectContext* context);
+
+        static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
+        static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
+        static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
+        static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
+
+        ${SanitizedCppName}SystemComponent();
+        ~${SanitizedCppName}SystemComponent();
+
+    protected:
+        ////////////////////////////////////////////////////////////////////////
+        // ${SanitizedCppName}RequestBus interface implementation
+
+        ////////////////////////////////////////////////////////////////////////
+
+        ////////////////////////////////////////////////////////////////////////
+        // AZ::Component interface implementation
+        void Init() override;
+        void Activate() override;
+        void Deactivate() override;
+        ////////////////////////////////////////////////////////////////////////
+    };
+}

+ 36 - 0
Templates/Ros2ProjectTemplate/Template/Gem/enabled_gems.cmake

@@ -0,0 +1,36 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(ENABLED_GEMS
+    ${Name}
+    Atom
+    AudioSystem
+    AWSCore
+    CameraFramework
+    DebugDraw
+    EditorPythonBindings
+    EMotionFX
+    GameState
+    ImGui
+    LandscapeCanvas
+    LyShine
+    PhysX
+    PrimitiveAssets
+    PrefabBuilder
+    SaveData
+    ScriptCanvasPhysics
+    ScriptEvents
+    StartingPointInput
+    TextureAtlas
+    WhiteBox
+    DiffuseProbeGrid
+    Compression
+    WarehouseSample
+    RosRobotSample
+    ROS2    
+)

+ 24 - 0
Templates/Ros2ProjectTemplate/Template/Gem/gem.json

@@ -0,0 +1,24 @@
+{
+    "gem_name": "${Name}",
+    "display_name": "${Name}",
+    "license": "What license ${Name} uses goes here: i.e. Apache-2.0 or MIT",
+    "license_url": "Link to the license web site goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT",
+    "origin": "The name of the originator goes here. i.e. XYZ Inc.",
+    "origin_url": "The primary repo for ${Name} goes here: i.e. http://www.mydomain.com",
+    "type": "",
+    "summary": "A short description of ${Name}.",
+    "canonical_tags": [
+        "Gem"
+    ],
+    "user_tags": [
+        "${Name}"
+    ],
+    "platforms": [
+        "${Platforms}"
+    ],
+    "icon_path": "preview.png",
+    "requirements": "",
+    "documentation_url": "",
+    "dependencies": [
+    ]
+}

+ 201 - 0
Templates/Ros2ProjectTemplate/Template/LICENSE.txt

@@ -0,0 +1,201 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all
+other entities that control, are controlled by, or are under common
+control with that entity. For the purposes of this definition,
+"control" means (i) the power, direct or indirect, to cause the
+direction or management of such entity, whether by contract or
+otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation
+source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or
+Object form, made available under the License, as indicated by a
+copyright notice that is included in or attached to the work
+(an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object
+form, that is based on (or derived from) the Work and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship. For the purposes
+of this License, Derivative Works shall not include works that remain
+separable from, or merely link (or bind by name) to the interfaces of,
+the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including
+the original version of the Work and any modifications or additions
+to that Work or Derivative Works thereof, that is intentionally
+submitted to Licensor for inclusion in the Work by the copyright owner
+or by an individual or Legal Entity authorized to submit on behalf of
+the copyright owner. For the purposes of this definition, "submitted"
+means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems,
+and issue tracking systems that are managed by, or on behalf of, the
+Licensor for the purpose of discussing and improving the Work, but
+excluding communication that is conspicuously marked or otherwise
+designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work,
+where such license applies only to those patent claims licensable
+by such Contributor that are necessarily infringed by their
+Contribution(s) alone or by combination of their Contribution(s)
+with the Work to which such Contribution(s) was submitted. If You
+institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work
+or a Contribution incorporated within the Work constitutes direct
+or contributory patent infringement, then any patent licenses
+granted to You under this License for that Work shall terminate
+as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+Work or Derivative Works thereof in any medium, with or without
+modifications, and in Source or Object form, provided that You
+meet the following conditions:
+
+(a) You must give any other recipients of the Work or
+Derivative Works a copy of this License; and
+
+(b) You must cause any modified files to carry prominent notices
+stating that You changed the files; and
+
+(c) You must retain, in the Source form of any Derivative Works
+that You distribute, all copyright, patent, trademark, and
+attribution notices from the Source form of the Work,
+excluding those notices that do not pertain to any part of
+the Derivative Works; and
+
+(d) If the Work includes a "NOTICE" text file as part of its
+distribution, then any Derivative Works that You distribute must
+include a readable copy of the attribution notices contained
+within such NOTICE file, excluding those notices that do not
+pertain to any part of the Derivative Works, in at least one
+of the following places: within a NOTICE text file distributed
+as part of the Derivative Works; within the Source form or
+documentation, if provided along with the Derivative Works; or,
+within a display generated by the Derivative Works, if and
+wherever such third-party notices normally appear. The contents
+of the NOTICE file are for informational purposes only and
+do not modify the License. You may add Your own attribution
+notices within Derivative Works that You distribute, alongside
+or as an addendum to the NOTICE text from the Work, provided
+that such additional attribution notices cannot be construed
+as modifying the License.
+
+You may add Your own copyright statement to Your modifications and
+may provide additional or different license terms and conditions
+for use, reproduction, or distribution of Your modifications, or
+for any such Derivative Works as a whole, provided Your use,
+reproduction, and distribution of the Work otherwise complies with
+the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+To apply the Apache License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!)  The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+Copyright (c) Contributors to the Open 3D Engine Project.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.

File diff suppressed because it is too large
+ 1628 - 0
Templates/Ros2ProjectTemplate/Template/Levels/DemoLevel/DemoLevel.prefab


+ 8 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Android/android_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Android/android_project.json

@@ -0,0 +1,9 @@
+{
+    "Tags": ["Android"],
+    "android_settings" : {
+        "package_name" : "org.o3de.${Name}",
+        "version_number" : 1,
+        "version_name" : "1.0.0.0",
+        "orientation" : "landscape"
+    }
+}

+ 8 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Linux/linux_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Linux/linux_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Linux"]
+}

+ 8 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Mac/mac_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Mac/mac_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Mac"]
+}

+ 8 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Windows/windows_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Platform/Windows/windows_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Windows"]
+}

+ 8 - 0
Templates/Ros2ProjectTemplate/Template/Platform/iOS/ios_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Platform/iOS/ios_project.json

@@ -0,0 +1,3 @@
+{
+    "Tags": ["iOS"]
+}

+ 23 - 0
Templates/Ros2ProjectTemplate/Template/Registry/assetprocessor_settings.setreg

@@ -0,0 +1,23 @@
+{
+    "Amazon": {
+        "AssetProcessor": {
+            "Settings": {
+                "ScanFolder Project/ShaderLib": {
+                    "watch": "@PROJECTROOT@/ShaderLib",
+                    "recursive": 1,
+                    "order": 1
+                },
+                "ScanFolder Project/Shaders": {
+                    "watch": "@PROJECTROOT@/Shaders",
+                    "recursive": 1,
+                    "order": 2
+                },
+                "ScanFolder Project/Registry": {
+                    "watch": "@PROJECTROOT@/Registry",
+                    "recursive": 1,
+                    "order": 3
+                }
+            }
+        }
+    }
+}

+ 10 - 0
Templates/Ros2ProjectTemplate/Template/Registry/awscoreconfiguration.setreg

@@ -0,0 +1,10 @@
+{
+    "Amazon":
+    {
+        "AWSCore":
+        {
+            "ProfileName": "default",
+            "ResourceMappingConfigFileName": "default_aws_resource_mappings.json"
+        }
+    }
+}

+ 98 - 0
Templates/Ros2ProjectTemplate/Template/Registry/physxsystemconfiguration.setreg

@@ -0,0 +1,98 @@
+{
+    "Amazon": {
+        "Gems": {
+            "PhysX": {
+                "PhysXSystemConfiguration": {
+                    "CollisionConfig": {
+                        "Layers": {
+                            "LayerNames": [
+                                "Default",
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {}
+                            ]
+                        },
+                        "Groups": {
+                            "GroupPresets": [
+                                {
+                                    "Name": "All",
+                                    "ReadOnly": true
+                                },
+                                {
+                                    "Id": {
+                                        "GroupId": "{E388F87A-154C-4106-AA78-3652C9134007}"
+                                    },
+                                    "Name": "None",
+                                    "Group": {
+                                        "Mask": 0
+                                    },
+                                    "ReadOnly": true
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 19 - 0
Templates/Ros2ProjectTemplate/Template/Registry/sceneassetimporter.setreg

@@ -0,0 +1,19 @@
+{
+	"O3DE":
+	{
+		"SceneAPI":
+		{
+			"AssetImporter":
+			{
+				"SupportedFileTypeExtensions":
+				[
+					".dae",
+					".fbx",
+					".stl",
+					".gltf",
+					".glb"
+				]
+			},
+		}
+	}
+}

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/GameSDK.ico

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba0704efd586fee72b3d45b19163a1b67cd5594bcbf57cb28d796e2919502aba
+size 148143

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/LegacyLogoLauncher.bmp

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef3584c695998fd5f2d137148a11f68602523c817af5d18fdd6c56b0b5278a6c
+size 462760

+ 68 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512_2x.png",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a3c136f7b2a511eed671ebb00dd3cc60e4accd511caade4fc7813a1ea2ae6a8
+size 6731

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d841d75c32539c3364f37815bc69699ab27ca064ba1c70f4700aef369851f34
+size 6731

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f42f51ad40e2fe400002473a5dc60d11fe003a9280a16c85b6f4611a90c3049
+size 1290

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a15e80648085e63ca2504cd88b9dcc2ea9bd568a4fc094bf4b2b6332293665e4
+size 1290

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d5a16c796e26a7de4bca532bf9547d0e20d643f7f3fabd6cc7fe55e0a8de674
+size 13328

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:902c53d384ec0abbafdb9fc169c0c0e629b0011522fcc344178fc91e5507080b
+size 13328

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:116fb5ac7ccbe734e1a233b263651a62956176ba227e3227dde8b9e582f9df84
+size 2006

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b0f2f08c999ae797ed013ed9656f2817caf18a6c109b09f917b2571ac0882cf
+size 4032

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5466a6281c4103c0efa30bb41e727d076280fbb2bff0f871598523fce53004c3
+size 27527

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9aaf5d13439a7c0466d99951a2db96882299af6beaabdffdc639bad22fc0e57
+size 27527

+ 6 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 24 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/Mac/Info.plist

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<false/>
+	<key>CFBundleDisplayName</key>
+	<string>${Name}</string>
+	<key>CFBundleExecutable</key>
+	<string>${Name}.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.${Name}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0.0</string>
+	<key>CFBundleSignature</key>
+	<string>03DE</string>
+	<key>CFBundleVersion</key>
+	<string>1.0.0</string>
+	<key>LSApplicationCategoryType</key>
+	<string>public.app-category.puzzle-games</string>
+</dict>
+</plist>

+ 116 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,116 @@
+{
+  "images" : [
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon60x60.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon87x87.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon120x120.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon120x120.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon180x180.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon20x20.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon29x29.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon40x40.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon76x76.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon152x152.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "83.5x83.5",
+      "idiom" : "ipad",
+      "filename" : "iPadProAppIcon167x167.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "1024x1024",
+      "idiom" : "ios-marketing",
+      "filename" : "iOSAppStoreIcon1024x1024.png",
+      "scale" : "1x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a924b3938732005cc0fd8837d4d35597f8bb248f0dbfb7803b3e84d70cf4fb03
+size 8053

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3167471fe3b6946db674eb12a58fcf23d986d58c0a1a02c339d3166e78988a7
+size 4464

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e871667d1b8b6b056b60499d2b85e003cff061f9974040dd70e5eb043f3d905
+size 8065

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc59f3592e9bbea6a67b2e975bf0029b4d7d33c97ae7da4785bb5c4aaecfa2ab
+size 1940

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5541daec55ba7cc61fe5976d72d7e4895fec03efeb2a3bb374e0d3fbb9e3cabe
+size 3245

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:67317863e942ba9128f8ddeac312aae776d282798d1199a579782fa78cb0eba5
+size 2440

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fcdaa49d78cd772f256dd195534234423fec1dde8897f4934c447e72f120157
+size 4489

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d78b269d0c05cec6e30ef755b9a3446e0eab961b9f79bdf048e3bd791bcc643
+size 6453

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81dbfd6012c857332531907583fe54d560ffb2f113cae73407000f68620fa56a
+size 9044

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:809cbf4b7205c5f9f7e61910457ba55ebeca3a5b5998fb927945868391a42ebf
+size 3245

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4626e9d9dc96ad9d23d944405c438d77112e234dd67538db11aded1365920289
+size 4718

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b28b3c474dece14970cac4bac48f4716c419dbb4ada78c483bd486538930ed8a
+size 6461

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:06a2718bfe8220cbbd0f45b56d2eeeb7e993602eaaabf72ce34ecacd702ee1ca
+size 4554

+ 6 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 169 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json

@@ -0,0 +1,169 @@
+{
+  "images" : [
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage1125x2436.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage2436x1125.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage1242x2208.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage2208x1242.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "667h",
+      "filename" : "iPhoneLaunchImage750x1334.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "filename" : "iPhoneLaunchImage640x960.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "retina4",
+      "filename" : "iPhoneLaunchImage640x1136.png",
+      "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage768x1024.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1024x768.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1536x2048.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage2048x1536.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "subtype" : "retina4",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38583298f4d1a5baa0b55633c8314bad93abe80794e57a7d6a64ff88964b9165
+size 21711

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b75b156d6be43cdaa2bc3699b4a5b601a33df6061b12452922ec35e0f55179fa
+size 52195

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ba634166ac4960b554252e40141167ba2f9b3b673d058aa473be1c2fb9ba804
+size 54510

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:596171ca532b8ff564ab14e3d525f1d91995684b910d66fcdcd0b85c61a232dc
+size 23354

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a989ae9fec0ab04159d5a5360306b4f174b1887b21f58e241fa26fd468a4c809
+size 20870

+ 3 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:276a83ca591e3616e489970d95aa56c3456aada212578bf885bf42610dbaade9
+size 21139

+ 45 - 0
Templates/Ros2ProjectTemplate/Template/Resources/Platform/iOS/Info.plist

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${Name}</string>
+	<key>CFBundleExecutable</key>
+	<string>${Name}.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.lumberyard.${Name}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${Name}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>arm64</string>
+		<string>metal</string>
+	</array>
+	<key>UIRequiresFullScreen</key>
+	<true/>
+	<key>UIStatusBarHidden</key>
+	<true/>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+</dict>
+</plist>

+ 5 - 0
Templates/Ros2ProjectTemplate/Template/ShaderLib/README.md

@@ -0,0 +1,5 @@
+# Customizing Shader Resource Groups
+
+Please read:  
+*\<engine\>/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/README.md*  
+for details on how to customize scenesrg.srgi and viewsrg.srgi.  

+ 26 - 0
Templates/Ros2ProjectTemplate/Template/ShaderLib/scenesrg.srgi

@@ -0,0 +1,26 @@
+// {BEGIN_LICENSE}
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+// {END_LICENSE}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup SceneSrg : SRG_PerScene
+{
+/* Intentionally Empty. Helps define the SrgSemantic for SceneSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 26 - 0
Templates/Ros2ProjectTemplate/Template/ShaderLib/viewsrg.srgi

@@ -0,0 +1,26 @@
+// {BEGIN_LICENSE}
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+// {END_LICENSE}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup ViewSrg : SRG_PerView
+{
+/* Intentionally Empty. Helps define the SrgSemantic for ViewSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 0 - 0
Templates/Ros2ProjectTemplate/Template/autoexec.cfg


Some files were not shown because too many files changed in this diff