瀏覽代碼

Update Ros2ProjectTemplate (#841)

* Update DemoLevel
* Add default level boot
* Add missing files
* Update README
* Regenerate template.json

Signed-off-by: Jan Hanca <[email protected]>
Jan Hanca 4 月之前
父節點
當前提交
18c0762c37

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

@@ -5,3 +5,5 @@
 _savebackup/
 **/__pycache__
 CMakeUserPresets.json
+backtrace.log
+imgui.ini

+ 15 - 0
Templates/Ros2ProjectTemplate/Template/AssetBundling/SeedLists/DefaultLevel.seed

@@ -0,0 +1,15 @@
+{
+    "Type": "JsonSerialization",
+    "Version": 1,
+    "ClassName": "AZStd::vector<SeedInfo, allocator>",
+    "ClassData": [
+        {
+            "assetId": {
+                "guid": "{0B7CC8CB-B67D-5F33-9B5C-DA34DC81BAED}",
+                "subId": 778174348
+            },
+            "platformFlags": 2,
+            "pathHint": "levels/demolevel/demolevel.spawnable"
+        }
+    ]
+}

+ 7 - 1
Templates/Ros2ProjectTemplate/Template/Examples/slam_navigation/README.md

@@ -4,7 +4,7 @@ With this example you will learn how to run ROS 2 navigation with a project crea
 
 These instructions assume that you have created and built your project following the [Template README](https://github.com/o3de/o3de-extras/tree/development/Templates/Ros2ProjectTemplate/README.md).
 
-[ROS 2 navigation stack](https://navigation.ros.org/) is a set of packages which can deliver robot navigation almost out of the box following configuration for your specific robot.
+[ROS 2 navigation stack](https://navigation.ros.org/) is a set of packages which can deliver robot navigation almost out-of-the-box following configuration for your specific robot.
 In other cases, it can serve as a great basis to build your custom robot navigation.
 
 ## How to run the example
@@ -36,3 +36,9 @@ You should see RViz2, a ROS 2 visualization tool.
 
 In RViz2, set robot target goal by using the `2D Goal Pose` tool (upper toolbar). 
 The robot in your simulation should be on its way to the goal! You will also notice it is building a map.
+
+### Use O3DE to control the robot
+
+The robot can also be controlled using O3DE interface. You can use two different steering tools for debugging.
+Firstly, a component to translate signals from the computer keyboard into linear and angular acceleration is added to the robot. Hit cursor keys and see the movement. 
+Secondly, the project template implements the sample ROS 2 publisher that lets sending goal positions from O3DE to the external navigation stack. Next, the navigation stack will calculate respective Twist messages to control the robot. Press the `Home` key to enable *ImGui* debug interface sending the robot to one of the predefined goals. Press the key again to hide the interface and see the robot moving. Remember to keep the ROS 2 navigation stack switched on - selecting the goal in O3DE triggers the same mechanisms as setting the target in RViz2 window.

文件差異過大導致無法顯示
+ 12 - 57
Templates/Ros2ProjectTemplate/Template/Levels/DemoLevel/DemoLevel.prefab


+ 0 - 0
Templates/Ros2ProjectTemplate/Template/Registry/load_level.setreg → Templates/Ros2ProjectTemplate/Template/Registry/loadlevel.setreg


+ 11 - 0
Templates/Ros2ProjectTemplate/Template/Registry/physxdebugconfiguration.setreg

@@ -0,0 +1,11 @@
+{
+    "Amazon": {
+        "Gems": {
+            "PhysX5": {
+                "Debug": {
+                    "PhysXDebugConfiguration": {}
+                }
+            }
+        }
+    }
+}

+ 9 - 0
Templates/Ros2ProjectTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg

@@ -0,0 +1,9 @@
+{
+    "Amazon": {
+        "Gems": {
+            "PhysX5": {
+                "DefaultSceneConfiguration": {}
+            }
+        }
+    }
+}

+ 72 - 51
Templates/Ros2ProjectTemplate/template.json

@@ -1,6 +1,6 @@
 {
     "template_name": "Ros2ProjectTemplate",
-    "version": "2.1.0",
+    "version": "2.1.1",
     "origin": "Open 3D Engine Extras",
     "origin_url": "https://github.com/o3de/o3de-extras",
     "license": "https://github.com/o3de/o3de-extras/tree/development/Templates/Ros2ProjectTemplate/Template/LICENSE.txt",
@@ -26,6 +26,10 @@
             "file": ".gitignore",
             "isTemplated": false
         },
+        {
+            "file": "AssetBundling/SeedLists/DefaultLevel.seed",
+            "isTemplated": false
+        },
         {
             "file": "CMakeLists.txt",
             "isTemplated": true
@@ -51,11 +55,11 @@
             "isTemplated": true
         },
         {
-            "file": "Gem/${NameLower}_shared_files.cmake",
+            "file": "Gem/${NameLower}_editor_shared_files.cmake",
             "isTemplated": true
         },
         {
-            "file": "Gem/${NameLower}_editor_shared_files.cmake",
+            "file": "Gem/${NameLower}_shared_files.cmake",
             "isTemplated": true
         },
         {
@@ -131,39 +135,39 @@
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}Module.cpp",
+            "file": "Gem/Source/${Name}EditorModule.cpp",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}EditorModule.cpp",
+            "file": "Gem/Source/${Name}EditorSystemComponent.cpp",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}ModuleInterface.h",
+            "file": "Gem/Source/${Name}EditorSystemComponent.h",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}SystemComponent.cpp",
+            "file": "Gem/Source/${Name}Module.cpp",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}SystemComponent.h",
+            "file": "Gem/Source/${Name}ModuleInterface.h",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}EditorSystemComponent.cpp",
+            "file": "Gem/Source/${Name}SampleComponent.cpp",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}EditorSystemComponent.h",
+            "file": "Gem/Source/${Name}SampleComponent.h",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}SampleComponent.cpp",
+            "file": "Gem/Source/${Name}SystemComponent.cpp",
             "isTemplated": true
         },
         {
-            "file": "Gem/Source/${Name}SampleComponent.h",
+            "file": "Gem/Source/${Name}SystemComponent.h",
             "isTemplated": true
         },
         {
@@ -216,7 +220,7 @@
         },
         {
             "file": "Registry/assetprocessor_settings.setreg",
-            "isTemplated": true
+            "isTemplated": false
         },
         {
             "file": "Registry/awscoreconfiguration.setreg",
@@ -230,6 +234,14 @@
             "file": "Registry/physxsystemconfiguration.setreg",
             "isTemplated": false
         },
+        {
+            "file": "Registry/physxdebugconfiguration.setreg",
+            "isTemplated": false
+        },
+        {
+            "file": "Registry/physxdefaultsceneconfiguration.setreg",
+            "isTemplated": false
+        },
         {
             "file": "Registry/sceneassetimporter.setreg",
             "isTemplated": false
@@ -238,6 +250,10 @@
             "file": "Registry/ros2.setreg",
             "isTemplated": false
         },
+        {
+            "file": "Registry/loadlevel.setreg",
+            "isTemplated": false
+        },
         {
             "file": "Resources/GameSDK.ico",
             "isTemplated": false
@@ -299,91 +315,91 @@
             "isTemplated": true
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/Contents.json",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/Contents.json",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png",
             "isTemplated": false
         },
         {
-            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png",
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png",
             "isTemplated": false
         },
         {
@@ -415,11 +431,11 @@
             "isTemplated": true
         },
         {
-            "file": "Examples/slam_navigation/launch/config/config.rviz",
+            "file": "Examples/slam_navigation/README.md",
             "isTemplated": false
         },
         {
-            "file": "Examples/slam_navigation/README.md",
+            "file": "Examples/slam_navigation/launch/config/config.rviz",
             "isTemplated": false
         },
         {
@@ -444,12 +460,30 @@
         }
     ],
     "createDirectories": [
+        {
+            "dir": "AssetBundling"
+        },
+        {
+            "dir": "AssetBundling/SeedLists"
+        },
         {
             "dir": "Assets"
         },
         {
             "dir": "Config"
         },
+        {
+            "dir": "Examples"
+        },
+        {
+            "dir": "Examples/slam_navigation"
+        },
+        {
+            "dir": "Examples/slam_navigation/launch"
+        },
+        {
+            "dir": "Examples/slam_navigation/launch/config"
+        },
         {
             "dir": "Gem"
         },
@@ -542,21 +576,8 @@
         },
         {
             "dir": "cmake"
-        },
-        {
-            "dir": "Examples"
-        },
-        {
-            "dir": "Examples/slam_navigation"
-        },
-        {
-            "dir": "Examples/slam_navigation/launch"
-        },
-        {
-            "dir": "Examples/slam_navigation/launch/config"
         }
     ],
     "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development",
-    "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2projecttemplate-2.1.0-template.zip"
+    "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2projecttemplate-2.1.1-template.zip"
 }
-

部分文件因文件數量過多而無法顯示