# Jupyter Notebooks in Undergraduate Mobile Robotics Courses: Educational Tool and Case Study
## 4 Methods
### Educational Tool
#### 4.2.2 The Collection of Jupyter Notebooks
For example, the state vector in the localization problem consists of the robot pose \((x,y,\theta)\), while now comprises a series of \((x,y)\) coordinates, each pair corresponding to a distinct landmark. This state vector can grow during the execution (each time it observes a new landmark), as the robot does not posses any previous knowledge of the environment. _Lab. 6_: SLAM  
_Problem description._ The Simultaneous Localization and Mapping problem (SLAM) is a cornerstone of most modern robotic applications, since it enables the robot to operate within an environment without having any information of it, that is, in a truly autonomous way [72; 73]. Concretely, SLAM consists in the concurrent building of a model of the environment (that is, the map), as well as the estimate of the robot state (that is, its location within the map). As repeatedly discussed during the subject, the challenging aspect of this problem is that the information being managed, in the form of observations coming from proprioceptive and exteroceptive sensors, has a certain level of _uncertainty_[59]. To manage this uncertain information, most reliable solutions are based on probabilistic techniques [13]. Dealing with uncertainty, to provide an exact model of the environment is unfeasible, but these approaches are able to produce good approximations of it. Depending on the information estimated in each step of the SLAM method, these methods solve two different problems: _full SLAM_, which estimates the map and the full path of the robot, and _online SLAM_, which focuses on the map and the last robot pose. Perhaps the most popular methods for doing online SLAM are EKF and its variants, while for full SLAM particle filters (sequential Monte Carlo) and graph-based methods like GraphSLAM are widely used [59; 72]. Pose Graph is also a popular method that simplifies the previous one by optimizing only the robot full path by keeping fixed previous observations of the environment already incorporated to the map. _Proposed notebook._ The hands-on sessions are targeted at putting in practice the concepts of SLAM in a familiar sight at this point of the course, since the designed notebook has a similar structure to the one in the mapping _lab_. As previously discussed, in the SLAM problem the robot cannot use any previous information such as the real map nor its true position. In this case, the purpose of the notebook is to gain insight into the EKF when applied to SLAM. For that, after completing the EKF algorithm using the corresponding Jacobians, the students must evaluate the behavior of the algorithm, logging performance indicators such as the absolute error and the covariance matrix of the robot pose and each landmark in the map. _Lab. 7_: Motion Planning  
_Problem description._ During the execution of its commanded tasks, a mobile robot needs to navigate its workspace [74]. Motion Planning presents us with the problem of finding a series of movements to achieve its goal. [75]. This planning should consider facts like the geometry of the robot itself, the variability of the obstacles in the environment or the non-holonomic movement's inherent limitations. It is divided in two sub-problems:  
* **Reactive navigation. ** It handles _obstacle avoidance_ in the environment, relying in a constant flow of information from the sensors. Virtual Force Field (VFF), Vector Field Histogram (VFH) or PT-Space are commonly used techniques for dealing with this problem. * **Global navigation. ** It is the optimization problem designed to search the best viable path to accomplish the current goal. It mostly relies on the information from the available map. Examples of techniques addressing this problem are Visibility graphs, Voronoi diagrams, cell decomposition, or Probabilistic roadmaps, among others. _Proposed notebook._ The last living document challenges students with implementing a reactive algorithm that allows a mobile robot, given an user selected starting position, to navigate a field full of obstacles to ultimately arrive at a goal position.