Skip to content

Commit da4202b

Browse files
Added line length rule to doc8.
Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
1 parent 125b778 commit da4202b

133 files changed

Lines changed: 2947 additions & 1091 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ repos:
3333
rev: v2.0.0
3434
hooks:
3535
- id: doc8
36-
args: ['--ignore=D001']
36+
args: ['--max-line-length=200']

2021summerOfCode/projects/assisted_teleop.rst

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@
66

77
**Task description**
88

9-
In mobile robot and autonomous vehicle navigation, there are situations where a human driver is required to intervene to get the vehicle out of a sticky situation. This can be both as a backup in case of autonomy failure as well as the primary function of the robot (e.g. telepresence robots).
9+
In mobile robot and autonomous vehicle navigation, there are situations where a human driver is required to intervene to get the vehicle out of a sticky situation.
10+
This can be both as a backup in case of autonomy failure as well as the primary function of the robot (e.g. telepresence robots).
1011

11-
This project's aim is to create an assisted teleop feature in Nav2 by means of a new behavior tree configuration file (the file that defines the flow of information for the navigation task) and potentially new plugins. This feature should make sure to use the local costmap and/or sensor data in order to avoid obstacles and take position and/or velocity commands to attempt to follow.
12+
This project's aim is to create an assisted teleop feature in Nav2 by means of a new behavior tree configuration file
13+
(the file that defines the flow of information for the navigation task) and potentially new plugins.
14+
This feature should make sure to use the local costmap and/or sensor data in order to avoid obstacles and take position and/or velocity commands to attempt to follow.
1215

13-
An example application of this is a telepresence robot, where a human driver is driving the robot through a space to visit in an office building or hospital. Another example would be an autonomous delivery robot stuck requiring a human driver to navigate it back into an open space for the robot to continue its task.
16+
An example application of this is a telepresence robot, where a human driver is driving the robot through a space to visit in an office building or hospital.
17+
Another example would be an autonomous delivery robot stuck requiring a human driver to navigate it back into an open space for the robot to continue its task.
1418

15-
This will be an excellent chance to make a substantial new feature in the Nav2 system to be used by hundreds of robots in the future. This project could also be a good candidate for a ROSCon talk in future events.
19+
This will be an excellent chance to make a substantial new feature in the Nav2 system to be used by hundreds of robots in the future.
20+
This project could also be a good candidate for a ROSCon talk in future events.
1621

1722
**Project difficulty: Medium**
1823

2021summerOfCode/projects/create_plugins.rst

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@
99

1010
**Task description**
1111

12-
The ROS 2 Navigation Stack has a number of plugin interfaces to help users create or select specific plugins for planning, control, and behaviors for their applications. Two specific areas that the Nav2 stack could use more algorithm plugins for is for path planning (referred to as a planner plugin) and local trajectory generation (referred to as controller plugins). A simple tutorial for creating a `planner plugin can be found here. <https://docs.nav2.org/tutorials/docs/writing_new_nav2planner_plugin.html>`_ Currently, we have one planner, NavFn which implements an A* and Dijkstra's planner. It also has two controllers, DWB and TEB which implement a DWA and timed elastic-band optimization techniques. There is also a Hybrid-A* and OMPL planner in development.
12+
The ROS 2 Navigation Stack has a number of plugin interfaces to help users create or select specific plugins for planning, control, and behaviors for their applications.
13+
Two specific areas that the Nav2 stack could use more algorithm plugins for is for path planning (referred to as a planner plugin) and local trajectory generation (referred to as controller plugins).
14+
A simple tutorial for creating a `planner plugin can be found here. <https://docs.nav2.org/tutorials/docs/writing_new_nav2planner_plugin.html>`_
15+
Currently, we have one planner, NavFn which implements an A* and Dijkstra's planner. It also has two controllers, DWB and TEB which implement a DWA and timed elastic-band optimization techniques.
16+
There is also a Hybrid-A* and OMPL planner in development.
1317

14-
Your task will be to create a high-quality implementation of one of the following algorithms for the Nav2 plugin interfaces. Alternative algorithms may also be considered upon approval, please ask @steve in the application phase. Please select only one to discuss.
18+
Your task will be to create a high-quality implementation of one of the following algorithms for the Nav2 plugin interfaces.
19+
Alternative algorithms may also be considered upon approval, please ask @steve in the application phase. Please select only one to discuss.
1520

16-
- Planner Plugin Options: D* or variant, Vornoi planner, Navigation graph route planner, State Lattice planner, kinodynamic planner, and any planning method given a set of dynamic and static obstacles.
21+
- Planner Plugin Options: D* or variant, Vornoi planner, Navigation graph route planner, State Lattice planner, kinodynamic planner,
22+
and any planning method given a set of dynamic and static obstacles.
1723
- Controller Plugin Options: CiLQR, iLQR, MPC, Splines, path following or dynamic obstacle following controllers.
1824
- Additional options: helping in completing the OMPL or Hybrid-A* planner.
1925

2021summerOfCode/projects/dynamic.rst

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,23 @@
77

88
**Task description**
99

10-
The Navigation Stack has long provided robust navigation in a wide range of environments. Controllers have been developed to operate effectively in the presence of dynamic obstacles without explicitly modeling the characteristics of dynamic obstacles. However, as the field has progressed and we see more and more robots using ROS deployed in human-filled spaces, more consideration must be taken with respect to dynamic obstacles such as people, carts, animals, and vehicles.
11-
12-
Your task will be to create integrations with existing machine learning tools that create dynamic obstacle information (ComplexYolo, Yolo3D, etc) and tie them into the navigation stack for use. It is not in the scope for you to retrain or otherwise become an expert in 3D machine learning, but some basic knowledge will be helpful. We already have a starting point in the project links below that needs to be driven to completion. This includes completing the on-going work to integrate yolact edge into this work to replace detectron2 and benchmark these capabilities on GPUs to verify sufficient run-time performance, as well as other tangental feature development.
13-
14-
This task will involve identifying a few techniques that produce position and velocity information about dynamic obstacles that can run on a mobile robot (using high-power Intel CPU, Nvidia Jetson SoC, external GPUs, etc) and get them running with ROS and Navigation. Next, you will help create a new costmap layer to use this information to mark the dynamic obstacle in the costmap to ensure a robot does not collide with a future trajectory of an obstacle.
15-
16-
If time permits, you may also work to also integrate this dynamic information into a path planner and/or controller to help in direct motion consideration. This will likely be in collaboration with another community member.
10+
The Navigation Stack has long provided robust navigation in a wide range of environments.
11+
Controllers have been developed to operate effectively in the presence of dynamic obstacles without explicitly modeling the characteristics of dynamic obstacles.
12+
However, as the field has progressed and we see more and more robots using ROS deployed in human-filled spaces,
13+
more consideration must be taken with respect to dynamic obstacles such as people, carts, animals, and vehicles.
14+
15+
Your task will be to create integrations with existing machine learning tools that create dynamic obstacle information (ComplexYolo, Yolo3D, etc) and tie them into the navigation stack for use.
16+
It is not in the scope for you to retrain or otherwise become an expert in 3D machine learning, but some basic knowledge will be helpful.
17+
We already have a starting point in the project links below that needs to be driven to completion.
18+
This includes completing the on-going work to integrate yolact edge into this work to replace detectron2 and benchmark these capabilities on GPUs to verify sufficient run-time performance,
19+
as well as other tangental feature development.
20+
21+
This task will involve identifying a few techniques that produce position and velocity information about dynamic obstacles that can run on a mobile robot
22+
(using high-power Intel CPU, Nvidia Jetson SoC, external GPUs, etc) and get them running with ROS and Navigation.
23+
ext, you will help create a new costmap layer to use this information to mark the dynamic obstacle in the costmap to ensure a robot does not collide with a future trajectory of an obstacle.
24+
25+
If time permits, you may also work to also integrate this dynamic information into a path planner and/or controller to help in direct motion consideration.
26+
This will likely be in collaboration with another community member.
1727

1828
**Project difficulty: High**
1929

2021summerOfCode/projects/grid_maps.rst

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,15 @@
99
==================================================
1010

1111
**Task description**
12-
Grid Maps was created by ETH Zurich and later transferred to ANYbotics. It is a universal grid map library for mobile robotic mapping that can be used as the basis of environmental models and various forms of grid maps available in ROS 1. This library is one of the top downloaded ROS packages. Your task will be to work with the community and the mentor to port grid_maps metapackage from ROS 1 to ROS 2 and help develop the next generation environment model in ROS 2 to replace costmap_2d.
13-
14-
This will involve porting code from ROS 1 to ROS 2, analyzing uses of the environmental model to define an abstract interface to allow replacement of costmap_2d with grid_map, and building up the basic grid-operations for costmaps. It is not expected to complete the full new model with sensor processing over the course of the summer. If completed early, you may be able to help design a gradient model to complement your implemented costmap model using grid_maps. This will allow robots to select a gradient or a costmap model on startup.
12+
Grid Maps was created by ETH Zurich and later transferred to ANYbotics.
13+
It is a universal grid map library for mobile robotic mapping that can be used as the basis of environmental models and various forms of grid maps available in ROS 1.
14+
This library is one of the top downloaded ROS packages.
15+
Your task will be to work with the community and the mentor to port grid_maps metapackage from ROS 1 to ROS 2 and help develop the next generation environment model in ROS 2 to replace costmap_2d.
16+
17+
This will involve porting code from ROS 1 to ROS 2, analyzing uses of the environmental model to define an abstract interface to allow replacement of costmap_2d with grid_map,
18+
and building up the basic grid-operations for costmaps. It is not expected to complete the full new model with sensor processing over the course of the summer.
19+
If completed early, you may be able to help design a gradient model to complement your implemented costmap model using grid_maps.
20+
This will allow robots to select a gradient or a costmap model on startup.
1521

1622
**Project difficulty: High**
1723

2021summerOfCode/projects/localization.rst

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,20 @@
88

99
**Task description**
1010

11-
The Navigation2 stack uses AMCL as its primary localization engine. Over the last 10 years, essentially no updates to AMCL has been made. This is due to the code base for this implementation of an Adaptive Monte Carlo Localizer is written in embedded C, not well structured, and very sensitive to changes. A-MCL implementations have been a hallmark of localization for over a decade but this particular implementation should be deprecated.
11+
The Navigation2 stack uses AMCL as its primary localization engine. Over the last 10 years, essentially no updates to AMCL has been made.
12+
This is due to the code base for this implementation of an Adaptive Monte Carlo Localizer is written in embedded C, not well structured, and very sensitive to changes.
13+
A-MCL implementations have been a hallmark of localization for over a decade but this particular implementation should be deprecated.
1214

1315
Your target involves designing and creating a new localization engine for the Nav2 stack. The requirements of this are:
1416
- Support 2D laser scanners
1517
- Support 3D laser scanners, where 2D case could potentially be a simplified case
1618
- Accurately track the localization of a robot in a given occupancy grid
1719

18-
The reason that specific method is left open-ended is to allow for creativity, novelty, or reimplementation of a what you feel is best. We have, however, analyzed other MCL variants as being good options. This may include reimplementing an A-MCL that is designed to be modified with modular components and support sampling from a 3D lidar. Another option is a NDT-MCL using NDT 2D/3D scan matching. Other options may be proposed and discussed with mentors during the application phase. The task involves 3D as well since there is no standard 3D localizer in ROS 2 yet and more and more robust 3D SLAM libraries have emerged over the last 2 years.
20+
The reason that specific method is left open-ended is to allow for creativity, novelty, or reimplementation of a what you feel is best.
21+
We have, however, analyzed other MCL variants as being good options.
22+
This may include reimplementing an A-MCL that is designed to be modified with modular components and support sampling from a 3D lidar.
23+
Another option is a NDT-MCL using NDT 2D/3D scan matching. Other options may be proposed and discussed with mentors during the application phase.
24+
The task involves 3D as well since there is no standard 3D localizer in ROS 2 yet and more and more robust 3D SLAM libraries have emerged over the last 2 years.
1925

2026
An optional but recommended feature of this work would be to also accept the inputs from multiple laser scanners. However it is not strictly required.
2127

2021summerOfCode/projects/multithreading.rst

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
**Task description**
88

9-
The aim of this project is the significantly improve the run-time performance of Nav2 making sure to leverage the full capabilities of multi-processor core CPUs. We seek to identify areas in the Nav2 stack that could leverage multi-threading or parallel processing to speed up computations and improve overall user performance on a broad range of compute platforms.
9+
The aim of this project is the significantly improve the run-time performance of Nav2 making sure to leverage the full capabilities of multi-processor core CPUs.
10+
We seek to identify areas in the Nav2 stack that could leverage multi-threading or parallel processing to speed up computations
11+
and improve overall user performance on a broad range of compute platforms.
1012

1113
Some examples include:
1214
- AMCL particle cloud updates
@@ -17,7 +19,8 @@ Some examples include:
1719
- Voxel grid ray casting
1820
- and more.
1921

20-
We are seeking a student interested in learning about multi-threading and parallel processing, ideally with some exposure to these concepts and libraries already, to analyze potential areas for parallel computing. Then, select the top candidates and implement them with parallel processing and benchmark the improvements to the Nav2 stack they provide.
22+
We are seeking a student interested in learning about multi-threading and parallel processing, ideally with some exposure to these concepts and libraries already,
23+
to analyze potential areas for parallel computing. Then, select the top candidates and implement them with parallel processing and benchmark the improvements to the Nav2 stack they provide.
2124

2225
This will be an excellent chance to apply (or obtain) C++ parallel computing skills while also learning a great deal about how to build mobile robot navigation systems -- both very valuable skillsets.
2326

2021summerOfCode/projects/navigation_rebranding.rst

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@
88

99
**Task description**
1010

11-
Navigation2 has made significant strides to be the best navigation system in the world. Over time, the original navigation stack in ROS has gained a reputation, fair or unfair, of being relatively limited in the types of tasks it can accomplish that are no longer true in ROS 2 Navigation2.
12-
13-
As such, we would like to initiate a re-branding effort to help differentiate it from its foundings. `MoveIt <https://moveit.ros.org/>`_ has a high-quality landing page with consistent graphics, color schemes, logos, and a catchy name. Your task will be to create a logo, color scheme, and work with maintainers to develop a new name to use in creating a new website for Navigation2. The `existing website <https://docs.nav2.org/>`_ is a Read The Docs design with just the technical tutorials and details. We would like the new Navigation2 website to be analog to the MoveIt website and allow for future expansions such as a blog and pages highlighting demos and robots using the framework.
11+
Navigation2 has made significant strides to be the best navigation system in the world.
12+
Over time, the original navigation stack in ROS has gained a reputation, fair or unfair,
13+
of being relatively limited in the types of tasks it can accomplish that are no longer true in ROS 2 Navigation2.
14+
15+
As such, we would like to initiate a re-branding effort to help differentiate it from its foundings.
16+
`MoveIt <https://moveit.ros.org/>`_ has a high-quality landing page with consistent graphics, color schemes, logos, and a catchy name.
17+
Your task will be to create a logo, color scheme, and work with maintainers to develop a new name to use in creating a new website for Navigation2.
18+
The `existing website <https://docs.nav2.org/>`_ is a Read The Docs design with just the technical tutorials and details.
19+
We would like the new Navigation2 website to be analog to the MoveIt website and allow for future expansions such as a blog and pages highlighting demos and robots using the framework.
1420

1521
**Project difficulty: Medium**
1622

0 commit comments

Comments
 (0)