diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6c045d39..2cb1cf30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,6 @@ jobs: - uses: ros-tooling/action-ros-ci@v0.3 id: action_ros_ci_step with: - package-name: andino_base andino_bringup andino_control andino_description andino_firmware andino_hardware andino_slam andino_gz_classic andino_navigation + package-name: andino_base andino_bringup andino_control andino_description andino_firmware andino_hardware andino_slam andino_gz_classic andino_navigation andino_apps target-ros2-distro: ${{ env.ROS_DISTRO }} import-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index a399848b..3c62592f 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ _Note: For videos go to [Media](#selfie-media) section._ - :computer: [`andino_gz_classic`](./andino_gz_classic/): [Gazebo Classic](https://classic.gazebosim.org/) simulation of the `andino` robot. - :world_map: [`andino_slam`](./andino_slam/): Provides support for SLAM with your `andino` robot. - :compass: [`andino_navigation`](./andino_navigation/): Navigation stack based on `nav2`. +- :exclamation: [`andino_apps`](./andino_apps/): Integrated applications with the `andino` robot. ## :paperclips: Related projects diff --git a/andino_apps/CHANGELOG.rst b/andino_apps/CHANGELOG.rst new file mode 100644 index 00000000..9d89418e --- /dev/null +++ b/andino_apps/CHANGELOG.rst @@ -0,0 +1,9 @@ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Changelog for package andino_apps +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +0.1.0 (2024-04-10) +------------------ +* Initial version of the package +* Moved launch file to execute Gazebo classic simulation + Nav2 from `andino_navigation` (`#228 `_) +* Contributors: Jesús Silva diff --git a/andino_apps/CMakeLists.txt b/andino_apps/CMakeLists.txt new file mode 100644 index 00000000..4ace334f --- /dev/null +++ b/andino_apps/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.8) +project(andino_apps) + +# find dependencies +find_package(ament_cmake REQUIRED) + +install( + DIRECTORY + launch + DESTINATION + share/${PROJECT_NAME}/ +) + +ament_package() diff --git a/andino_apps/LICENSE b/andino_apps/LICENSE new file mode 100644 index 00000000..40c6f118 --- /dev/null +++ b/andino_apps/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2024, Ekumen Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/andino_apps/README.md b/andino_apps/README.md new file mode 100644 index 00000000..ae1e7342 --- /dev/null +++ b/andino_apps/README.md @@ -0,0 +1,28 @@ +# Andino Apps + +This package contains integration applications with the Andino robot. + +# Applications + +## Gazebo classic simulation + Nav2 + +A launch file for running the andino_gz_classic simulation and the Nav 2 stack is provided. +It uses the [turtlebot3_world](https://github.com/ROBOTIS-GIT/turtlebot3_simulations/tree/master) world (_Apache 2 license_) by default. + +``` + ros2 launch andino_apps andino_simulation_navigation.launch.py +``` + +To visualize and interact with the Andino robot in RViz: + +- Click in 2D pose estimate button and select the initial pose of the robot +- Click in Nav2 Goal button and select the final point. +- The robot will start to move to the selected goal. + +![Rviz_example_Nav2](docs/Rviz_example_Nav2.gif) + +For further information and examples you can check the [Nav2 tutorials](https://navigation.ros.org/tutorials/index.html). + +This package has been tested with the Andino robot with `diff drive plugin` in Gazebo-classic. + +By changing the world file, make sure to also change map file. Further navigation [parameters](params/nav2_params.yaml) tunning is recommended. diff --git a/andino_apps/docs/Rviz_example_Nav2.gif b/andino_apps/docs/Rviz_example_Nav2.gif new file mode 100644 index 00000000..2697f2a9 Binary files /dev/null and b/andino_apps/docs/Rviz_example_Nav2.gif differ diff --git a/andino_navigation/launch/andino_simulation_navigation.launch.py b/andino_apps/launch/andino_simulation_navigation.launch.py similarity index 100% rename from andino_navigation/launch/andino_simulation_navigation.launch.py rename to andino_apps/launch/andino_simulation_navigation.launch.py diff --git a/andino_apps/package.xml b/andino_apps/package.xml new file mode 100644 index 00000000..647e42f2 --- /dev/null +++ b/andino_apps/package.xml @@ -0,0 +1,25 @@ + + + + andino_apps + 0.1.0 + Package for apps created with andino + JesusSilvaUtrera + JesusSilvaUtrera + Franco Cipollone + BSD Clause 3 + + ament_cmake + + ros2launch + andino_gz_classic + nav2_bringup + rviz2 + + ament_lint_auto + ament_lint_common + + + ament_cmake + + diff --git a/andino_navigation/README.md b/andino_navigation/README.md index 86c31e55..12afd129 100644 --- a/andino_navigation/README.md +++ b/andino_navigation/README.md @@ -4,44 +4,29 @@ We rely on [Nav2](https://github.com/ros-planning/navigation2) stack in order to # Usage -## Real Robot +## Prerequisites + 1. Run the mobility stack in a real Andino robot or a simulated one: -### Prerequisites +_Real robot_ +``` +ros2 launch andino_bringup andino_robot.launch.py +``` -1. Andino robot needs to be up and running: - ```sh - ros2 launch andino_bringup andino_robot.launch.py - ``` +_Example with Gazebo Classic_ +``` +ros2 launch andino_gz_classic andino_one_robot.launch.py +``` -2. We need a previously recorded map in order to navigate on. - Refer to [andino_slam](../andino_slam/README.md) to learn how to record a map with Andino. + 1. Provide a recorded map. Refer to [andino_slam](../andino_slam/README.md) to learn how to record a map with Andino. -### Run nav stack +## Run Nav Stack ```sh ros2 launch andino_navigation bringup.launch.py map:= ``` By default, [config file](params/nav2_params.yaml) is used. For using a custom param file use: + ```sh ros2 launch andino_navigation bringup.launch.py map:= params_file:= ``` - -## Simulation - -A launch file for running the andino_gz_classic simulation and the nav2 stack is provided. -It uses the [turtlebot3_world](https://github.com/ROBOTIS-GIT/turtlebot3_simulations/tree/master) world (_Apache 2 license_) by default. - -``` - ros2 launch andino_navigation andino_simulation_navigation.launch.py -``` - -To test the navigation inside rviz: - -- click in 2D pose estimate button and select the initial pose of the robot -- click in nav2 Goal button and select the final point. -- the robot will start to move to the selected goal. - -You test adding obstacles inside the Gazebo simulation or use the rviz button Waypoint/ nav through Poses mode to select sequential targets. - -This package has been tested with the Andino robot with `diff drive plugin` in gazebo. If you change the world you should change the map but also it is recommended to tune navigation [parameters](params/nav2_params.yaml). diff --git a/andino_navigation/package.xml b/andino_navigation/package.xml index dbe62178..c62d309d 100644 --- a/andino_navigation/package.xml +++ b/andino_navigation/package.xml @@ -14,11 +14,9 @@ launch_ros - andino_gz_classic launch_ros navigation2 nav2_bringup - turtlebot3_gazebo rviz2 ament_lint_auto @@ -28,4 +26,3 @@ ament_cmake -