Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/caddy/srv/assets/foxglove/nav2_layout.json
Original file line number Diff line number Diff line change
Expand Up @@ -460,4 +460,4 @@
"direction": "row",
"splitPercentage": 74.87855655794587
}
}
}
2 changes: 1 addition & 1 deletion .devcontainer/caddy/srv/nav2/github-markdown.css
Original file line number Diff line number Diff line change
Expand Up @@ -1099,4 +1099,4 @@

.markdown-body ::-webkit-calendar-picker-indicator {
filter: invert(50%);
}
}
4 changes: 2 additions & 2 deletions .github/mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pull_request_rules:
backport:
branches:
- jazzy

- name: backport to iron at reviewers discretion
conditions:
- base=main
Expand All @@ -16,7 +16,7 @@ pull_request_rules:
backport:
branches:
- iron

- name: backport to humble at reviewers discretion
conditions:
- base=main
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Codespell
on:
pull_request:

jobs:
codespell:
name: Run codespell
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install codespell
run: pip install codespell
- name: Run codespell
run: codespell --toml ./tools/pyproject.toml
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,3 @@ Session.vim

# Vim Temporary
.netrwhist

96 changes: 96 additions & 0 deletions .pre-commit-config.yaml
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • I love myself a python import sorter: https://github.com/PyCQA/isort (idk if there is one for C++ as well). What do you think of adding?
  • I ran it locally and the end-of-file-fixer still fixes nav2_costmap_2d/test/integration/CMakeLists.txt and .gitignore for me. Doesn't it for you?
  • ament_flake8 also complains about files under the folder tools - I guess it is skipped in the CI so maybe also skip this folder with pre-commit?

Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@

# To use:
#
# pre-commit run -a
#
# Or:
#
# pre-commit install # (runs every time you commit in git)
#
# To update this file:
#
# pre-commit autoupdate
#
# See https://github.com/pre-commit/pre-commit
exclude: ".pgm$|.svg$"
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-added-large-files
- id: check-ast
- id: check-case-conflict
- id: check-merge-conflict
- id: check-symlinks
- id: check-xml
- id: check-yaml
args: ["--allow-multiple-documents"]
- id: debug-statements
- id: end-of-file-fixer
- id: mixed-line-ending
- id: trailing-whitespace
exclude_types: [rst]
- id: fix-byte-order-marker
- repo: https://github.com/pycqa/isort
rev: 6.0.1
hooks:
- id: isort
args: ["tools/pyproject.toml"]
name: isort (python)

- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell
additional_dependencies:
- tomli
args:
[--toml=./tools/pyproject.toml]
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.31.1
hooks:
- id: check-github-workflows
args: ["--verbose"]
- id: check-github-actions
args: ["--verbose"]
- id: check-dependabot
args: ["--verbose"]
- repo: local
hooks:
- id: ament_lint_cmake
name: ament_lint_cmake
description: Check CMake code style using cmakelint.
language: system
types: [cmake]
entry: ament_lint_cmake
- id: ament_cpplint
name: ament_cpplint
description: Code style checking using cpplint.
language: system
types: [c++]
entry: ament_cpplint
- id: ament_uncrustify
name: ament_uncrustify
description: Code style checking using uncrustify.
language: system
types: [c++]
args: ["--reformat"]
entry: ament_uncrustify
- id: ament_xmllint
name: ament_xmllint
description: Check XML markup using xmllint.
language: system
types: [xml]
entry: ament_xmllint
- id: ament_flake8
name: ament_flake8
description: Check Python code style using flake8.
language: system
types: [python]
entry: ament_flake8
- id: ament_pep257
name: ament_pep257
description: Check Python code style using pep257.
language: system
types: [python]
entry: ament_pep257
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ RUN mkdir -p $ROOT_SRV

# install demo dependencies
RUN apt-get update && apt-get install -y \
ros-$ROS_DISTRO-rviz2
ros-$ROS_DISTRO-rviz2

# install gzweb dependacies
RUN apt-get install -y --no-install-recommends \
Expand Down
78 changes: 39 additions & 39 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/development/codespaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ TODO: gazebo example with gzweb

# References

TODO: links to more info
TODO: links to more info
2 changes: 1 addition & 1 deletion doc/requirements/_template_requirement.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ The \<navigation system> should be able to \<shall> \<do something>

## More details
- Why is this needed?
- What is the expected user interaction?
- What is the expected user interaction?
- What use case does this map to?
- Are there any non-functional requirements (build system, tools, performance, etc)

Expand Down
16 changes: 8 additions & 8 deletions doc/requirements/requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ Id | Handle | Priority | Description | Notes
TP001 | Target Platforms.Operating Systems.Ubuntu | 1 | The Navigation System MUST support Ubuntu Desktop 16.04 and Ubuntu Desktop 18.04
TP002 | Target Platforms.Operating Systems.MacOS | 1 | The Navigation System MUST support MacOS 10.13 (High Sierra) and MacOS 10.14 (Mohave)
TP003 | Target Platforms.Operating Systems.Windows | 1 | The Navigation System MUST support Windows 10 Professional
TP004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the Intel's Clear Linux distribution | Clear Linux uses a continuous deployment model.
TP004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the Intel's Clear Linux distribution | Clear Linux uses a continuous deployment model.
TP005 | Target Platforms.CPU.Word Size | 1 | The Navigation System SHALL support 64-bit processors | Don't assume a specific pointer size
TP006 | Target Platforms.Minimum Platform | 1 | *TODO: Should we specify a minimum target platform? Or, should this be expressed as minimum platform requirements?*

Expand All @@ -178,7 +178,7 @@ MP005 | Mission Planning.Navigation Commands.Enqueue | 2 | The Mission Plan SHOU
MP006 | Mission Planning.Navigation Commands.Follow | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached."
MP007 | Mission Planning.Navigation Commands.Maintain Pose | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to maintain its current pose. | Could be indefinite or time-based.
MP008 | Mission Planning.Navigation Commands.Park | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | The implementation of the parking command could interact with the robot to cause it, for example, to shut down or enter a low-power state.
MP009 | Mission Planning.Navigation Commands.Dock to Charger | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to dock to a specific charging station.
MP009 | Mission Planning.Navigation Commands.Dock to Charger | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to dock to a specific charging station.
MP010 | Mission Planning.Policy | 1 | The Mission Plan SHOULD be able to express information about how and when the navigation commands are to be carried out. | Time and safety constraints.
MP011 | Mission Planning.Policy.Time.Initiation | 1 | The Mission Plan SHOULD be able to convey when a mission should begin.
MP012 | Mission Planning.Policy.Time.Completion | 1 | The Mission Plan SHOULD be able to convey by when a mission should end.
Expand Down Expand Up @@ -216,7 +216,7 @@ PLN002 | Planning.Inputs.Navigation Command | 1 | The Planning Module SHALL rece
PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute. | This could be global policy and/or per-command policy. Policy could contain, for example, a list of conventions for the robot to follow (navigate on the right side of a path, for example).
PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Planning Module MUST have access to one or more maps available that describe the robot's environment.
PLN005 | Planning.Inputs.Perception.Sensory Input | 1 | The Planning Module MUST have access to data from the Perception Subsystem.
PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MAY have access to predicted trajectories of objects detected by the Perception Subsystem. | In simple planners, there is no prediction of moving objects, but in more complex planners, this may be considered.
PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MAY have access to predicted trajectories of objects detected by the Perception Subsystem. | In simple planners, there is no prediction of moving objects, but in more complex planners, this may be considered.
PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Planning Module MUST have access to the robot's current pose. | The pose could be be provided manually or automatically determined (outside of this module).
PLN008 | Planning.Outputs.Path | 1 | The Planning Module SHOULD output the Path for the robot to follow to execute the input Navigation Command and MUST respect any associated policy.
PLN009 | Planning.Feedback.Inputs | 1 | The Planning Module MAY receive error input from the downstream Execution Module. | So that it can attempt to recover from execution failures.
Expand Down Expand Up @@ -303,7 +303,7 @@ PER002 | Perception.Latency | 1 | *TODO*

### 2.4.3 Prediction

The Prediction Subsystem uses input from the Perception Subsystem and predicts the trajectories of the detected objects over time.
The Prediction Subsystem uses input from the Perception Subsystem and predicts the trajectories of the detected objects over time.

Id | Handle | Priority | Description | Notes
-- | ------ | -------- | ----------- | -----
Expand All @@ -325,8 +325,8 @@ LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST pro
* What are the scalability for the ROS2 Navigation System?
* Any other important design goals to call out?
* Should we specify a minimum target platform? Or, should this be expressed as minimum platform requirements?
* What is the right latency value for detecting a collision?
* Should we add any safety-related functionality at the robot interface level?
* Do safety zones need unique names?
* What is the right latency value for detecting a collision?
* Should we add any safety-related functionality at the robot interface level?
* Do safety zones need unique names?
* What is the target latency for the perception subsystem?
* How far into the future should the object prediction work?
* How far into the future should the object prediction work?
1 change: 0 additions & 1 deletion doc/use_cases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ The Nav2 system is targeting the following use cases:

## Stretch Target
3D Navigation - Drones

4 changes: 2 additions & 2 deletions doc/use_cases/_template_use_case.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ As a \<Developer, Researcher, Technician, etc.> I want the robot to \<action> so

## More details
- Why is this needed?
- What is the expected user interaction?
- What is the expected user interaction?
- Are there any non-functional requirements? (build system, tools, performance, etc)

# Example:
Expand All @@ -15,7 +15,7 @@ As a robot user, I want the robot to navigate without colliding into people or o
- Why is this needed?
- I want this so that I know the robot won't damage itself, damage property or hurt anyone
- Example: a logistics robot in a warehouse must avoid shelves, people, forklifts, and other robots
- What is the expected user interaction?
- What is the expected user interaction?
- I shouldn't have to interact with the robot to prevent it from crashing into people or things
- Are there any non-functional requirements? (build system, tools, performance, etc)
- The performance needs to be fast enough to avoid moving objects such as people walking or other moving robots
2 changes: 0 additions & 2 deletions doc/use_cases/collision_avoidance_use_case.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,3 @@ As a Robot user I want to my robot to avoid colliding with people or objects so
- The user should be able to walk in front of a robot and it should avoid crashing into that person

- Are there any non-functional requirements? (build system, tools, performance, etc)


2 changes: 0 additions & 2 deletions doc/use_cases/indoor_localization_use_case.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,3 @@ As a Robot user I want my robot to know its location on a given map of an indoor
- The robot should be able to deduce it's own position on a map autonomously

- Are there any non-functional requirements? (build system, tools, performance, etc)


4 changes: 1 addition & 3 deletions doc/use_cases/indoor_navigation_use_case.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ As a Robot user I want my robot to autonomously navigate to a given location on
- Example: a courier robot in a logistics warehouse

- What is the expected user interaction?
- The user should be able to specify a map to use and a location on that map for the robot to move to.
- The user should be able to specify a map to use and a location on that map for the robot to move to.

- Are there any non-functional requirements? (build system, tools, performance, etc)


4 changes: 1 addition & 3 deletions doc/use_cases/keep_out_zones_use_case.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Keep Out Zones
As a Robot user I want to be able to designate keep-out zones or areas on a map so that my robot will go around those areas instead of through them
As a Robot user I want to be able to designate keep-out zones or areas on a map so that my robot will go around those areas instead of through them

## More details
- Why is this needed?
Expand All @@ -10,5 +10,3 @@ As a Robot user I want to be able to designate keep-out zones or areas on a map
- The user should be able to specify keep out zones for the robot to avoid

- Are there any non-functional requirements? (build system, tools, performance, etc)


6 changes: 2 additions & 4 deletions doc/use_cases/multi-story-building_use_case.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@ As a Robot user I want my robot to be able to navigate stairways, ramps or eleva

## More details
- Why is this needed?
- Example: a delivery robot in an office building
- Example: a delivery robot in an office building

- What is the expected user interaction?
- The user should be able to specify stairways, ramps and elevators on a map for a robot to use or not use
- via a GUI
- via a GUI
- via a config file or API so that it can be done by another program

- Are there any non-functional requirements? (build system, tools, performance, etc)


2 changes: 0 additions & 2 deletions doc/use_cases/outdoor_localization_use_case.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,3 @@ As a Robot user I want my robot to know its location on a given map of an outdoo
- The robot should be able to deduce it's own position on a map autonomously

- Are there any non-functional requirements? (build system, tools, performance, etc)


4 changes: 1 addition & 3 deletions doc/use_cases/outdoor_navigation_use_case.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ As a Robot user I want my robot to autonomously navigate to a given location on
- Example: a delivery robot on a college campus

- What is the expected user interaction?
- The user should be able to specify a map to use and a location on that map for the robot to move to.
- The user should be able to specify a map to use and a location on that map for the robot to move to.

- Are there any non-functional requirements? (build system, tools, performance, etc)


2 changes: 1 addition & 1 deletion nav2_behavior_tree/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The nav2_behavior_tree module provides:

See its [Configuration Guide Page](https://docs.nav2.org/configuration/packages/configuring-bt-xml.html) for additional parameter descriptions and a list of XML nodes made available in this package. Also review the [Nav2 Behavior Tree Explanation](https://docs.nav2.org/behavior_trees/index.html) pages explaining more context on the default behavior trees and examples provided in this package. A [tutorial](https://docs.nav2.org/plugin_tutorials/docs/writing_new_bt_plugin.html) is also provided to explain how to create a simple BT plugin.

See the [Navigation Plugin list](https://docs.nav2.org/plugins/index.html) for a list of the currently known and available planner plugins.
See the [Navigation Plugin list](https://docs.nav2.org/plugins/index.html) for a list of the currently known and available planner plugins.

## The bt_action_node Template and the Behavior Tree Engine

Expand Down
2 changes: 1 addition & 1 deletion nav2_behavior_tree/plugins_list.hpp.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

// This was automativally generated by cmake
namespace nav2::details
namespace nav2::details
{
const char* BT_BUILTIN_PLUGINS = "@plugin_libs@";
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class CancelSpinServer : public TestActionServer<nav2_msgs::action::Spin>
goal_handle)
{
while (!goal_handle->is_canceling()) {
// Spining here until goal cancels
// Spinning here until goal cancels
std::this_thread::sleep_for(std::chrono::milliseconds(15));
}
}
Expand Down Expand Up @@ -135,7 +135,7 @@ TEST_F(CancelSpinActionTestFixture, test_ports)
// Setting target yaw
goal_msg.target_yaw = 1.57;

// Spining for server and sending a goal
// Spinning for server and sending a goal
client_->wait_for_action_server();
client_->async_send_goal(goal_msg, send_goal_options);

Expand Down
2 changes: 1 addition & 1 deletion nav2_behaviors/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ See its [Configuration Guide Page](https://docs.nav2.org/configuration/packages/
See the [Navigation Plugin list](https://docs.nav2.org/plugins/index.html) for a list of the currently known and available planner plugins.

The `TimedBehavior` template makes use of a [nav2_util::TwistPublisher](../nav2_util/README.md#twist-publisher-and-twist-subscriber-for-commanded-velocities).
The `AssistedTeleop` behavior makes use of a [nav2_util::TwistSubscriber](../nav2_util/README.md#twist-publisher-and-twist-subscriber-for-commanded-velocities).
The `AssistedTeleop` behavior makes use of a [nav2_util::TwistSubscriber](../nav2_util/README.md#twist-publisher-and-twist-subscriber-for-commanded-velocities).
14 changes: 6 additions & 8 deletions nav2_bringup/launch/bringup_launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,15 @@
import os

from ament_index_python.packages import get_package_share_directory

from launch import LaunchDescription
from launch.actions import (
DeclareLaunchArgument,
GroupAction,
IncludeLaunchDescription,
SetEnvironmentVariable,
)
from launch.actions import DeclareLaunchArgument
from launch.actions import GroupAction
from launch.actions import IncludeLaunchDescription
from launch.actions import SetEnvironmentVariable
from launch.conditions import IfCondition
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import LaunchConfiguration, PythonExpression
from launch.substitutions import LaunchConfiguration
from launch.substitutions import PythonExpression
from launch_ros.actions import Node
from launch_ros.actions import PushROSNamespace
from launch_ros.descriptions import ParameterFile
Expand Down
Loading
Loading