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 2a949bbe..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 @@ -38,6 +39,8 @@ Other projects built upon Andino! :rocket: - :computer: [`andino_gz`](https://github.com/Ekumen-OS/andino_gz): [Gazebo](https://gazebosim.org/home)(non-classic) simulation of the `andino` robot. - :lady_beetle: [`andino_webots`](https://github.com/Ekumen-OS/andino_webots): [Webots](https://github.com/cyberbotics/webots) simulation of the Andino robot fully integrated with ROS 2. +- :joystick: [`andino_o3de`](https://github.com/Ekumen-OS/andino_o3de): [O3DE](https://o3de.org/) simulation of the Andino robot. +- :green_circle: [`andino_isaac`](https://github.com/Ekumen-OS/andino_isaac): [Isaac Sim](https://docs.omniverse.nvidia.com/isaacsim/latest/index.html) simulation of the Andino robot. - :test_tube: [`andino_integration_tests`](https://github.com/Ekumen-OS/andino_integration_tests): Extension to the Andino robot showing how to build integration tests. ## :pick: Robot Assembly @@ -105,6 +108,12 @@ source install/setup.bash `Note`: Whether your are installing the packages in your dev machine or in your robot the procedure is the same. +### Install the binaries + +The packages have been also released via ROS package manager system for the 'humble' distro. You can check them [here](https://repo.ros2.org/status_page/ros_humble_default.html?q=andino). + +These packages can be installed using `apt` (e.g: `sudo apt install ros-humble-andino-description`) or using `rosdep`. + ## :rocket: Usage ### Robot bringup @@ -213,7 +222,7 @@ This section is dedicated to recognizing and expressing gratitude to the open-so ## :raised_hands: Contributing -Issues or PRs are always welcome! Please refer to [CONTRIBUTING](CONTRIBUTING.md) doc. +Issues or PRs are always welcome! Please refer to [CONTRIBUTING](CONTRIBUTING.md) doc. ## Code development 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_bringup/README.md b/andino_bringup/README.md new file mode 100644 index 00000000..92e1ea0c --- /dev/null +++ b/andino_bringup/README.md @@ -0,0 +1,26 @@ +# andino_bringup + +## Description +This package contains mainly launch files in order to launch all related driver and nodes to be used in the real robot. Some configuration files are also added to set up the nodes launched in the 'config' folder. + +## Launch Files + +### Main file + +The main launch file is the `andino_robot.launch.py` file. This file executes all necessary nodes for Andino Robot to work. + +It includes: + +- `andino_description.launch.py`: file to load the 3D model of the robot from the URDF. +- `andino_control.launch.py`: file for the `ros2_control` nodes and drivers. +- `camera.launch.py`: file to execute the camera drivers, using `v4l2_camera` package. If not necessary, it can be disabled using the `include_camera` parameter. +- `rplidar.launch.py`: file to execute the drivers of the RP 2D LiDAR attached to the robot. If not necessary, it can be disabled using the `include_rplidar` parameter. + +### Other launch files included + +These launch files are included just in case you want to command the robot in different ways, or visualize the information: + +- `rosbag_record.launch.py`: executes the `ros2 bag record` command to store a '.bag' file with the specified topics. If no topics are specified, it will record all of them. +- `rviz.launch.py`: executes the RViz visualization tool with the 'andino.rviz' configuration by default, to be able to visualize the 3D model of the robot and information from the topics. +- `teleop_joystick.launch.py`: this file allows you to command the robot using a controller with a joystick, using the `teleop_twist_joy` and the `joy_linux` packages. +- `teleop_keyboard.launch.py`: this file allows you to command the robot using a keyboard, using the `teleop_twist_keyboard` package. 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 -