Giter VIP home page Giter VIP logo

navigation2's Introduction

Nav2

GitHub Workflow Status codecov

For detailed instructions on how to:

Please visit our documentation site. Please visit our community Slack here (if this link does not work, please contact maintainers to reactivate).

If you need professional services related to Nav2, please contact Open Navigation at [email protected].

Our Sponsors

Please thank our amazing sponsors for their generous support of Nav2 on behalf of the community to allow the project to continue to be professionally maintained, developed, and supported for the long-haul! Open Navigation LLC provides project leadership, maintenance, development, and support services to the Nav2 & ROS community.

Dexory develops robotics and AI logistics solutions to drive better business decisions using a digital twin of warehouses to provide inventory insights.

Nvidia develops GPU and AI technologies that power modern robotics, autonomous driving, data centers, gaming, and more.

Polymath Robotics creates safety-critical navigation systems for industrial vehicles that are radically simple to enable and deploy.

Stereolabs produces the high-quality ZED stereo cameras with a complete vision pipeline from neural depth to SLAM, 3D object tracking, AI and more.

Confidential is just happy to support Nav2's mission!

Citation

If you use the navigation framework, an algorithm from this repository, or ideas from it please cite this work in your papers!

@InProceedings{macenski2020marathon2,
  title = {The Marathon 2: A Navigation System},
  author = {Macenski, Steve and Martín, Francisco and White, Ruffin and Ginés Clavero, Jonatan},
  year = {2020},
  booktitle = {2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  url = {https://github.com/ros-planning/navigation2},
  pdf = {https://arxiv.org/abs/2003.00368}
}

If you use any of the algorithms in Nav2 or the analysis of the algorithms in your work, please cite this work in your papers!

  @article{macenski2023survey,
        title={From the desks of ROS maintainers: A survey of modern & capable mobile robotics algorithms in the robot operating system 2}, 
        author={S. Macenski, T. Moore, DV Lu, A. Merzlyakov, M. Ferguson},
        year={2023},
        journal = {Robotics and Autonomous Systems}
  }

If you use the Smac Planner (Hybrid A*, State Lattice, 2D), please cite this work in your papers!

@article{macenski2024smac,
      title={Open-Source, Cost-Aware Kinematically Feasible Planning for Mobile and Surface Robotics}, 
      author={Steve Macenski and Matthew Booker and Josh Wallace},
      year={2024},
      journal = {Arxiv}
}

If you use the Regulated Pure Pursuit Controller algorithm or software from this repository, please cite this work in your papers!

@article{macenski2023regulated,
      title={Regulated Pure Pursuit for Robot Path Tracking}, 
      author={Steve Macenski and Shrijit Singh and Francisco Martin and Jonatan Gines},
      year={2023},
      journal = {Autonomous Robots}
}

If you use our work on VSLAM and formal comparisons for service robot needs, please cite the paper:

@InProceedings{vslamComparison2021,
  title = {A Comparison of Modern General-Purpose Visual SLAM Approaches},
  author = {Merzlyakov, Alexey and Macenski, Steven},
  year = {2021},
  booktitle = {2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pdf = {https://arxiv.org/abs/2107.07589}
}

Build Status

Service Humble Iron Main
ROS Build Farm Build Status Build Status N/A
Circle CI N/A N/A Build Status
Package Humble Source Humble Debian Iron Source Iron Debian
Navigation2 Build Status Build Status Build Status Build Status
nav2_amcl Build Status Build Status Build Status Build Status
nav2_behavior_tree Build Status Build Status Build Status Build Status
nav2_behaviors Build Status Build Status Build Status Build Status
nav2_bringup Build Status Build Status Build Status Build Status
nav2_bt_navigator Build Status Build Status Build Status Build Status
nav2_collision_monitor Build Status Build Status Build Status Build Status
nav2_common Build Status Build Status Build Status Build Status
nav2_constrained_smoother Build Status Build Status Build Status Build Status
nav2_controller Build Status Build Status Build Status Build Status
nav2_core Build Status Build Status Build Status Build Status
nav2_costmap_2d Build Status Build Status Build Status Build Status
nav2_dwb_controller Build Status Build Status Build Status Build Status
nav2_lifecycle_manager Build Status Build Status Build Status Build Status
nav2_map_server Build Status Build Status Build Status Build Status
nav2_mppi_controller Build Status Build Status Build Status Build Status
nav2_msgs Build Status Build Status Build Status Build Status
nav2_navfn_planner Build Status Build Status Build Status Build Status
nav2_planner Build Status Build Status Build Status Build Status
nav2_regulated_pure_pursuit Build Status Build Status Build Status Build Status
nav2_rotation_shim_controller Build Status Build Status Build Status Build Status
nav2_rviz_plugins Build Status Build Status Build Status Build Status
nav2_simple_commander Build Status Build Status Build Status Build Status
nav2_smac_planner Build Status Build Status Build Status Build Status
nav2_smoother Build Status Build Status Build Status Build Status
nav2_system_tests Build Status Build Status Build Status Build Status
nav2_theta_star_planner Build Status Build Status Build Status Build Status
nav2_util Build Status Build Status Build Status Build Status
nav2_velocity_smoother Build Status Build Status Build Status Build Status
nav2_voxel_grid Build Status Build Status Build Status Build Status
nav2_waypoint_follower Build Status Build Status Build Status Build Status

navigation2's People

Contributors

alexeymerzlyakov avatar aposhian avatar bricerenaudeau avatar cottsay avatar crdelsey avatar daisukes avatar dependabot[bot] avatar doisyg avatar easylyou avatar fmrico avatar gezp avatar gimait avatar goesm avatar jwallace42 avatar mhpanah avatar mlherd avatar naivehobo avatar nickolaim avatar orduno avatar padhupradheep avatar robotechvision avatar rotu avatar ruffsl avatar ryanf55 avatar shivaang12 avatar sloretz avatar stevemacenski avatar tonynajjar avatar wilcobonestroo avatar yathartha3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

navigation2's Issues

Resolve how to handle BTpp dependency

How do we handle the dependency on the BTpp library since it doesn't have an Ubuntu package. We could require anyone building this repo to first build Btpp from source and install. Other options?

Collision as localisation input

Some food for thought: currently I'm working on a robot that could use collisions as one of its localisation inputs (think of a Roomba-like vehicle). I'm not at the stage of developing planners yet, but my intention was to implement a planner that plans for collision in some specific cases like walls or other static objects.

What's the idea regarding the collision avoidance requirement (i.e. what kind of restrictions on the design) and how would or relate with my idea?

Which license to use? BSD 3 Clause or Apache 2?

We need to resolve the licensing. ROS Navigation uses BSD 3. Most of ROS2 core uses Apache 2.0. For new code, we could license it Apache 2.0, but we assume there will be some code ported from ROS (BSD). How is this being handled by other ROS2 projects?

Fix RCLCPP_INFO messages

Right now all the RCLCPP_INFO messages look like this one for example:
RCLCPP_INFO(get_logger(), "MissionExecutor::~MissionExecutor")

Let's change these to something more useful to the end user. For example, this one instead could be "Shutting down Mission Executor".

Get starting pose from localization

Currently, the robot's starting pose is stubbed out in the BtNavigator and SimpleNavigator classes. Instead, it should come from the Localization module.

Create MissionPlan message type

Right now the Mission Plan message is defined as a string.src/mission_execution/nav2_mission_execution_msgs/msg/MissionPlan.msg

We need a real Mission Plan, whether that is an array of actions or something else is not clear yet.

Strategy to resolve build dependencies

We have several build dependencies right now, like message_filters, that aren't available as packages. We need a method to track and then automate the pull and build of those if possible. Something like a build script that pulls the source, sources the correct setup files and runs colcon build.

Fix linter failures in nav2_bt_navigator

Test project /home/crdelsey/src/ros_dev_workspace/navigation2/build/nav2_bt_navigator
Start 1: copyright
1/5 Test #1: copyright ........................ Passed 0.46 sec
Start 2: cppcheck
2/5 Test #2: cppcheck ......................... Passed 0.46 sec
Start 3: cpplint
3/5 Test #3: cpplint .......................... Passed 0.50 sec
Start 4: lint_cmake
4/5 Test #4: lint_cmake .......................***Failed 0.45 sec
Start 5: uncrustify
5/5 Test #5: uncrustify ....................... Passed 0.49 sec

80% tests passed, 1 tests failed out of 5

Fix linter failures in nav2_dwa_controller

Test project /home/crdelsey/src/ros_dev_workspace/navigation2/build/nav2_dwa_controller
Start 1: copyright
1/5 Test #1: copyright ........................ Passed 0.46 sec
Start 2: cppcheck
2/5 Test #2: cppcheck ......................... Passed 0.46 sec
Start 3: cpplint
3/5 Test #3: cpplint .......................... Passed 0.49 sec
Start 4: lint_cmake
4/5 Test #4: lint_cmake .......................***Failed 0.45 sec
Start 5: uncrustify
5/5 Test #5: uncrustify ....................... Passed 0.47 sec

80% tests passed, 1 tests failed out of 5

Implement ROSRobot functionality

Right now ROSRobot is an empty shell class with no functionality. It needs to be defined and implemented or the code should be removed.

High level block diagram of intended workflow

Coming from the standard nav stack and having built a few alternatives over time, I dont look at this project and have a good understand what's happening or how the elements interact.

Is there a plan to make a block diagram much like the move_base one to clear up your architectural intentions? It's challenging to get involved or track without it.

Add New Mapping Interface and Environmental Model

Support an extensible framework of map representations via a Mapping Interface and incorporate relevant static, dynamic, object, and semantic map data into an Environmental Model to be used by map dependent algorithms.

First aim is to support & refactor grid-based map representations such as grid_map, occupancy grids, and costmap_2d with further aim to support interface for other tree/node-based representations such as octomap.

Port AMCL to ROS2

Port ROS AMCL package to ROS2 and then integrate it as a supporting module to Navigation2 package.

Add waitForServer to TaskClient

Add a waitForServer method to the TaskClient template class which waits for the TaskServer to be running. This method should take a timeout value with a default value.

Add CI for build and test of branches and PRs

Now that we're getting some code working, we need some automated testing using CI (Jenkins? Travis?) to run for every pull request and periodically on every branch (or at least on the master branch).

AMCL - fix all warnings

Currently when building AMCL, there are a lot of warnings spewing out. I realize that this code will be refactored, but want an issue to make sure these are cleaned up. I want to be able to add the -Werr compiler flag to the CMakeLists.txt going forward, so I'll file a separate issue for that.

Repo formatting

Currently the metapackage exists under 'src' directory, the navigation stack and most other ROS metapackages are not organized this way and leads to a level of confusion

Fix linter failures in nav2_amcl

Test project /home/crdelsey/src/ros_dev_workspace/navigation2/build/nav2_amcl
Start 1: copyright
1/5 Test #1: copyright ........................***Failed 0.47 sec
Start 2: cppcheck
2/5 Test #2: cppcheck ......................... Passed 0.51 sec
Start 3: cpplint
3/5 Test #3: cpplint ..........................***Failed 0.75 sec
Start 4: lint_cmake
4/5 Test #4: lint_cmake .......................***Failed 0.46 sec
Start 5: uncrustify
5/5 Test #5: uncrustify .......................***Failed 0.77 sec

20% tests passed, 4 tests failed out of 5

Factor out strutils from amcl_node

Note: Rename the class to follow the naming standard: StrUtils and the filename strutils.hpp.
The file name to include should be: "nav2_util/strutils.hpp"

Fix linter failures in nav2_dijkstra_planner

Test project /home/crdelsey/src/ros_dev_workspace/navigation2/build/nav2_dijkstra_planner
Start 1: copyright
1/5 Test #1: copyright ........................***Failed 0.46 sec
Start 2: cppcheck
2/5 Test #2: cppcheck ......................... Passed 0.50 sec
Start 3: cpplint
3/5 Test #3: cpplint .......................... Passed 0.75 sec
Start 4: lint_cmake
4/5 Test #4: lint_cmake ....................... Passed 0.48 sec
Start 5: uncrustify
5/5 Test #5: uncrustify ....................... Passed 0.62 sec

80% tests passed, 1 tests failed out of 5

Fix linter failures in nav2_util

Test project /home/crdelsey/src/ros_dev_workspace/navigation2/build/nav2_util
Start 1: copyright
1/5 Test #1: copyright ........................***Failed 0.46 sec
Start 2: cppcheck
2/5 Test #2: cppcheck .........................***Failed 0.53 sec
Start 3: cpplint
3/5 Test #3: cpplint ..........................***Failed 1.15 sec
Start 4: lint_cmake
4/5 Test #4: lint_cmake ....................... Passed 0.46 sec
Start 5: uncrustify
5/5 Test #5: uncrustify .......................***Failed 1.06 sec

Modify TaskServer to not be a ROS node, but accept a ROS node pointer

Currently, the TaskServer derives from the ROS Node class. Instead, it should accept a ROS Node SharedPtr in its constructor. This will allow more flexibility in deployment, such as having multiple TaskServers per node. Once the TaskServer is updated, the TaskClient can also be updated to accept a Node::SharedPtr instead of a Node *.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.