Robotic-Decision-Making-Lab / blue

ROS 2 platform for underwater robotics research and development.
https://robotic-decision-making-lab.github.io/blue/
MIT License
40 stars 9 forks source link

Integrate ros2_control and add user documentation (backport #162) #163

Closed mergify[bot] closed 2 months ago

mergify[bot] commented 2 months ago

Changes Made

This is a pretty significant PR that makes several API-breaking changes. In particular, the following breaking changes were made:

  1. blue_dynamics has been ported to hydrodynamics. The new project cleans up the original dynamics implementation and will also make it easier to add new features that are unrelated to Blue (e.g., parsing hydrodynamic parameters from a URDF/SDF file).
  2. blue_control has been re-written using ros2_control and ported to auv_controllers. Controllers will now be easier to implement and are vehicle-agnostic.
  3. ArduSub-specific packages/files including sitl.launch.py, blue_joy, blue_manager, and the PWM passthrough handling have all been ported to ardusub_driver.
    • In the new repo, SITL, MAVROS, and the ArduSub manager can all be launched using the launch files available in ardusub_bringup.
    • PWM passthrough is now accomplished in the thruster_hardware package and is implemented as a ros2_control hardware interface
    • blue_manager now lives in ardusub_manager and has been cleaned up.
    • The blue_joy package has become ardusub_teleop and now has a joystick configuration file tailored specifically to ArduSub.
  4. Launch files were re-written using the new YAML syntax. The new launch files are a MAJOR improvement over the verbose Python launch files that were originally used.
  5. blue_utils has been removed.

Outside of these breaking changes, user documentation has been added with pipelines that deploy the documentation on push to main. The documentation is written using Docusaurus.

Associated Issues

Testing

Testing was done in simulation using SITL.


This is an automatic backport of pull request #162 done by Mergify.

mergify[bot] commented 2 months ago

Cherry-pick of 370943220eac81d6f9dc4de94761d7eda57d2cfd has failed:

On branch mergify/bp/humble/pr-162
Your branch is up to date with 'origin/humble'.

You are currently cherry-picking commit 3709432.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
    deleted:    .clang-format
    deleted:    .clang-tidy
    new file:   .codespellrc
    new file:   .devcontainer/documentation/Dockerfile
    new file:   .devcontainer/documentation/devcontainer.json
    modified:   .devcontainer/nouveau/Dockerfile
    modified:   .devcontainer/nvidia/Dockerfile
    modified:   .docker/Dockerfile
    modified:   .dockerignore
    modified:   .github/PULL_REQUEST_TEMPLATE.md
    new file:   .github/workflows/ci-docs.yaml
    modified:   .github/workflows/ci.yaml
    modified:   .github/workflows/docker.yaml
    new file:   .github/workflows/docs.yaml
    modified:   .gitignore
    deleted:    .markdownlint.json
    modified:   .pre-commit-config.yaml
    new file:   .ruff.toml
    new file:   .vscode/c_cpp_properties.json
    new file:   .vscode/settings.json
    new file:   .vscode/tasks.json
    modified:   README.md
    modified:   blue_bringup/CMakeLists.txt
    deleted:    blue_bringup/launch/base.launch.py
    deleted:    blue_bringup/launch/bluerov2/bluerov2.launch.py
    new file:   blue_bringup/launch/bluerov2/bluerov2.launch.yaml
    deleted:    blue_bringup/launch/bluerov2/tf.launch.py
    new file:   blue_bringup/launch/bluerov2/thrusters.launch.yaml
    deleted:    blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py
    new file:   blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml
    deleted:    blue_bringup/launch/bluerov2_heavy/tf.launch.py
    new file:   blue_bringup/launch/bluerov2_heavy/thrusters.launch.yaml
    deleted:    blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py
    new file:   blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml
    deleted:    blue_bringup/launch/bluerov2_heavy_reach/tf.launch.py
    new file:   blue_bringup/launch/bluerov2_heavy_reach/thrusters.launch.yaml
    deleted:    blue_bringup/launch/sitl.launch.py
    modified:   blue_bringup/package.xml
    deleted:    blue_control/CMakeLists.txt
    deleted:    blue_control/include/blue_control/controller.hpp
    deleted:    blue_control/include/blue_control/ismc.hpp
    deleted:    blue_control/launch/control.launch.py
    deleted:    blue_control/package.xml
    deleted:    blue_control/src/controller.cpp
    deleted:    blue_control/src/ismc.cpp
    new file:   blue_demos/CMakeLists.txt
    renamed:    blue_control/LICENSE -> blue_demos/LICENSE
    new file:   blue_demos/README.md
    new file:   blue_demos/control_integration/config/bluerov2_controllers.yaml
    new file:   blue_demos/control_integration/config/bluerov2_heavy_controllers.yaml
    new file:   blue_demos/control_integration/description/ros2_control/bluerov2.ros2_control.xacro
    new file:   blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro
    new file:   blue_demos/control_integration/description/urdf/bluerov2.config.xacro
    new file:   blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro
    new file:   blue_demos/control_integration/launch/bluerov2_controllers.launch.py
    new file:   blue_demos/control_integration/launch/bluerov2_demo.launch.yaml
    new file:   blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py
    new file:   blue_demos/control_integration/launch/bluerov2_heavy_demo.launch.yaml
    renamed:    blue_joy/package.xml -> blue_demos/package.xml
    new file:   blue_demos/teleoperation/config/joy_teleop.yaml
    new file:   blue_demos/teleoperation/launch/joy_teleop.launch.yaml
    modified:   blue_description/CMakeLists.txt
    new file:   blue_description/config/ardusub/ardusub_manager.yaml
    renamed:    blue_description/config/mavros.yaml -> blue_description/config/ardusub/mavros.yaml
    deleted:    blue_description/config/bluerov2/controllers.yaml
    deleted:    blue_description/config/bluerov2/manager.yaml
    deleted:    blue_description/config/bluerov2_heavy/controllers.yaml
    deleted:    blue_description/config/bluerov2_heavy/manager.yaml
    deleted:    blue_description/config/bluerov2_heavy_reach/controllers.yaml
    deleted:    blue_description/config/bluerov2_heavy_reach/manager.yaml
    deleted:    blue_description/config/joy_teleop.yaml
    renamed:    blue_description/xacro/bluerov2/config.xacro -> blue_description/description/bluerov2/config.xacro
    renamed:    blue_description/xacro/bluerov2/gazebo.xacro -> blue_description/description/bluerov2/gazebo.xacro
    renamed:    blue_description/xacro/bluerov2/urdf.xacro -> blue_description/description/bluerov2/urdf.xacro
    renamed:    blue_description/xacro/bluerov2_heavy/config.xacro -> blue_description/description/bluerov2_heavy/config.xacro
    renamed:    blue_description/xacro/bluerov2_heavy/gazebo.xacro -> blue_description/description/bluerov2_heavy/gazebo.xacro
    renamed:    blue_description/xacro/bluerov2_heavy/urdf.xacro -> blue_description/description/bluerov2_heavy/urdf.xacro
    renamed:    blue_description/xacro/bluerov2_heavy_reach/config.xacro -> blue_description/description/bluerov2_heavy_reach/config.xacro
    renamed:    blue_description/xacro/bluerov2_heavy_reach/gazebo.xacro -> blue_description/description/bluerov2_heavy_reach/gazebo.xacro
    renamed:    blue_description/xacro/bluerov2_heavy_reach/urdf.xacro -> blue_description/description/bluerov2_heavy_reach/urdf.xacro
    renamed:    blue_description/xacro/camera/gazebo.xacro -> blue_description/description/camera/gazebo.xacro
    renamed:    blue_description/xacro/camera/urdf.xacro -> blue_description/description/camera/urdf.xacro
    renamed:    blue_description/xacro/t200/gazebo.xacro -> blue_description/description/t200/gazebo.xacro
    renamed:    blue_description/xacro/t200/urdf.xacro -> blue_description/description/t200/urdf.xacro
    modified:   blue_description/package.xml
    deleted:    blue_dynamics/CMakeLists.txt
    deleted:    blue_dynamics/LICENSE
    deleted:    blue_dynamics/include/blue_dynamics/hydrodynamics.hpp
    deleted:    blue_dynamics/include/blue_dynamics/thruster_dynamics.hpp
    deleted:    blue_dynamics/package.xml
    deleted:    blue_dynamics/src/hydrodynamics.cpp
    deleted:    blue_dynamics/src/thruster_dynamics.cpp
    deleted:    blue_dynamics/test/test_hydrodynamics.cpp
    deleted:    blue_dynamics/test/test_thruster_dynamics.cpp
    deleted:    blue_joy/LICENSE
    deleted:    blue_joy/blue_joy/joy.py
    deleted:    blue_joy/launch/joy.launch.py
    deleted:    blue_joy/resource/blue_joy
    deleted:    blue_joy/setup.cfg
    deleted:    blue_joy/setup.py
    deleted:    blue_joy/test/test_copyright.py
    deleted:    blue_manager/LICENSE
    deleted:    blue_manager/blue_manager/__init__.py
    deleted:    blue_manager/blue_manager/manager.py
    deleted:    blue_manager/launch/manager.launch.py
    deleted:    blue_manager/package.xml
    deleted:    blue_manager/resource/blue_manager
    deleted:    blue_manager/setup.cfg
    deleted:    blue_manager/setup.py
    deleted:    blue_manager/test/test_copyright.py
    deleted:    blue_utils/CMakeLists.txt
    deleted:    blue_utils/LICENSE
    deleted:    blue_utils/include/blue_utils/eigen.hpp
    deleted:    blue_utils/include/blue_utils/tf2.hpp
    deleted:    blue_utils/package.xml
    deleted:    blue_utils/scripts/arm.sh
    deleted:    blue_utils/scripts/disarm.sh
    deleted:    blue_utils/scripts/send_cmd.sh
    deleted:    blue_utils/scripts/send_pwm.sh
    deleted:    blue_utils/scripts/start_keyboard_teleop.sh
    new file:   docs/.gitignore
    new file:   docs/babel.config.js
    new file:   docs/docs/contributing.mdx
    new file:   docs/docs/installation.mdx
    new file:   docs/docs/overview.mdx
    new file:   docs/docs/tutorials/_category_.json
    new file:   docs/docs/tutorials/control.mdx
    new file:   docs/docs/tutorials/simulation.mdx
    new file:   docs/docs/tutorials/teleop.mdx
    new file:   docs/docs/welcome.mdx
    new file:   docs/docusaurus.config.js
    new file:   docs/package-lock.json
    new file:   docs/package.json
    new file:   docs/sidebars.js
    new file:   docs/src/components/Vehicle.jsx
    new file:   docs/src/css/cards.scss
    new file:   docs/src/css/custom.scss
    new file:   docs/src/css/fonts-and-colors.scss
    new file:   docs/src/css/header.scss
    new file:   docs/src/css/typography.scss
    renamed:    blue_joy/blue_joy/__init__.py -> docs/static/.nojekyll
    new file:   docs/static/img/favicon.ico
    new file:   docs/static/img/vehicles/bluerov2.png
    new file:   docs/static/img/vehicles/bluerov2_heavy.png
    new file:   docs/static/img/vehicles/bluerov2_heavy_reach.png
    deleted:    requirements-dev.txt
    deleted:    setup.cfg

Unmerged paths:
  (use "git add <file>..." to mark resolution)
    both modified:   .devcontainer/nouveau/devcontainer.json
    both modified:   .devcontainer/nvidia/devcontainer.json
    both modified:   blue.repos

To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally