|
@@ -1,6 +1,18 @@
|
|
|
-# Apple kraken navigation #
|
|
|
+# Apple kraken stack #
|
|
|
|
|
|
-This package provides navigation capabilities for the apple Kraken vehicle.
|
|
|
+This repository contains two ROS2 packages:
|
|
|
+ - o3de_kraken_nav
|
|
|
+ - o3de_kraken_orchestration
|
|
|
+
|
|
|
+## Packages Description
|
|
|
+
|
|
|
+### O3DE Kraken Navigation
|
|
|
+
|
|
|
+Provides navigation capabilities for the Apple Kraken vehicle.
|
|
|
+
|
|
|
+### O3DE Kraken Orchestration
|
|
|
+
|
|
|
+Allows the Apple Kraken vehicle to operate autonomously.
|
|
|
|
|
|
## ROS2 prerequisites
|
|
|
|
|
@@ -52,6 +64,16 @@ In addition to the required packages for the ROS2 gem, you will also need some a
|
|
|
sudo apt install python3-colcon-common-extensions
|
|
|
```
|
|
|
|
|
|
+### Libraries
|
|
|
+
|
|
|
+The o3de_kraken_orchestration package uses the [python-statemachine](https://pypi.org/project/python-statemachine/) library.\
|
|
|
+You can install it by running the following command
|
|
|
+```bash
|
|
|
+pip install python-statemachine
|
|
|
+```
|
|
|
+
|
|
|
+**Note:** Make sure you have the pip Python package manager installed.
|
|
|
+
|
|
|
## Installation ##
|
|
|
|
|
|
- Use the [roscon_2022](https://github.com/aws-lumberyard-dev/o3de/tree/roscon_2022) branch of the `O3DE`.
|
|
@@ -83,42 +105,42 @@ colcon build --symlink-install
|
|
|
1. [Build](https://github.com/aws-lumberyard/ROSConDemo#download-and-install) and run the `ROSConDemo`
|
|
|
2. Load level `Main`
|
|
|
|
|
|
-## Running nav stack for multiple vehicles
|
|
|
+## Running the kraken stack for multiple vehicles
|
|
|
|
|
|
> Note: Slam is turned off by default since we have ground truth information about the robot's position from the simulator. However, it is possible to enable `slam_toolbox` forcefully. You can allow slam by adding `use_slam:=True` to the navigation launch command.
|
|
|
|
|
|
-1. For our scenario, spawn the following robots:
|
|
|
-
|
|
|
-```bash
|
|
|
-ros2 service call /spawn_entity gazebo_msgs/srv/SpawnEntity '{name: 'apple_kraken_rusty', xml: 'line1'}' &&
|
|
|
-ros2 service call /spawn_entity gazebo_msgs/srv/SpawnEntity '{name: 'apple_kraken_shiny', xml: 'line2'}' &&
|
|
|
-ros2 service call /spawn_entity gazebo_msgs/srv/SpawnEntity '{name: 'apple_kraken_rusty', xml: 'line3'}' &&
|
|
|
-ros2 service call /spawn_entity gazebo_msgs/srv/SpawnEntity '{name: 'apple_kraken_shiny', xml: 'line4'}'
|
|
|
-```
|
|
|
-
|
|
|
-2. Source the workspace
|
|
|
+1. Source the workspace
|
|
|
|
|
|
```bash
|
|
|
cd ~/o3de_kraken_ws
|
|
|
source ./install/setup.bash
|
|
|
```
|
|
|
|
|
|
-3. Set up `CycloneDDS` rmw:
|
|
|
+2. Set up `CycloneDDS` rmw:
|
|
|
|
|
|
```bash
|
|
|
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
|
|
```
|
|
|
|
|
|
-4. Run the first stack with `Rviz` param set to `True`:
|
|
|
+4. Run the first navigation stack with `Rviz` param set to `True`:
|
|
|
|
|
|
```bash
|
|
|
ros2 launch o3de_kraken_nav navigation_multi.launch.py namespace:=apple_kraken_rusty_1 rviz:=True
|
|
|
```
|
|
|
|
|
|
-5. Run the stack for rest of the robots (in different terminals, remember about points `1-3`):
|
|
|
+5. Run the navigation stack for rest of the robots (in different terminals, remember about points `1-3`):
|
|
|
|
|
|
```bash
|
|
|
ros2 launch o3de_kraken_nav navigation_multi.launch.py namespace:=apple_kraken_shiny_2 rviz:=False
|
|
|
ros2 launch o3de_kraken_nav navigation_multi.launch.py namespace:=apple_kraken_rusty_3 rviz:=False
|
|
|
ros2 launch o3de_kraken_nav navigation_multi.launch.py namespace:=apple_kraken_shiny_4 rviz:=False
|
|
|
```
|
|
|
+
|
|
|
+6. Run the orchestration nodes for all the robots (in speparate terminals):
|
|
|
+
|
|
|
+```bash
|
|
|
+ros2 run o3de_kraken_orchestration kraken_orchestration_node --ros-args -p robot_name:=apple_kraken_rusty_1 -p spawn_line:=line1
|
|
|
+ros2 run o3de_kraken_orchestration kraken_orchestration_node --ros-args -p robot_name:=apple_kraken_shiny_2 -p spawn_line:=line2
|
|
|
+ros2 run o3de_kraken_orchestration kraken_orchestration_node --ros-args -p robot_name:=apple_kraken_rusty_3 -p spawn_line:=line3
|
|
|
+ros2 run o3de_kraken_orchestration kraken_orchestration_node --ros-args -p robot_name:=apple_kraken_shiny_4 -p spawn_line:=line4
|
|
|
+```
|