# Jupyter Notebooks in Undergraduate Mobile Robotics Courses: Educational Tool and Case Study
## 4 Methods
### Educational Tool
#### 4.2.2 The Collection of Jupyter Notebooks
The core principle of this _probabilistic robotics_ is to explicitly represent the uncertainty in the form of probability distributions, so it is needed some notions of probability to understand upcoming methods based on them. _Proposed notebook._ The first series of notebooks focuses on this topic, with an special interest in the _Gaussian distribution_, given its ubiquitous use throughout the rest of the course. To reinforce the concepts there are three notebooks for practicing this topic, which are also meant to introduce the _labs_' workflow:  
* **Gaussian distribution. ** This notebook introduces the student to some basic concepts of interest, for instance: how a Gaussian distribution is defined and the generation of random samples from it (see Figure 2). * **Properties. ** It serves to illustrate different properties and operations of Gaussians like the central limit theorem, sum, product, linear transformation, etc., letting the student to experiment with different distributions. * **Multidimensional Distributions. ** It mirrors similar issues from the previous two parts, using multidimensional distributions instead. In some cases, it is useful to visualize how the Gaussian changes with respect to some of its parameters. For this endeavor Jupyter notebooks provide ways to interact with the cells, such as the slider in Figure 2. This kind of widget will refresh the figure on change, passing its value to the underlying function. In addition to sliders, there are a wide array of widgets, most of them mirroring tools also available in HTML like buttons, selectors or text inputs. All of them are integrated into the Python environment and can be used to create more dynamic demonstrations. _Lab. 2_: Robot Motion  
_Problem description._ A fundamental aspect of robotics is the locomotion of wheeled robots [62]. This is not a trivial matter, since most wheeled robot kinematics have nonholonomic constraints, that is, they can not freely move in the space. In contrast to holonomic systems, which have absolute degree of freedom, non-holonomic wheeled robots move in circular trajectories. Most robots exhibit a differential drive motion system, characterized by having two independent wheels, one per actuator, although more complex configurations like those of cars of bicycles can be also modeled by the Ackermann steering motion system. These systems are of interest to understand how the position of the robot is affected by sending velocity commands to its motion controller. Compositions of robot poses can be used to track the global robot position after each of these motions. The robot motion can be affected by errors due to wheel slippage, inaccurate calibration, limited resolution during integration (time increments), measurement resolution, unequal floor, etc [62]. These errors result in a final robot position that can differ from the expected one as set by the provided motion commands. To handle this there are probabilistic motion models that characterize the robot motion in probabilistic terms, being the most popular:  
* **Velocity-based. ** Motion model where the robot is controlled using a pair \(\langle\mathbf{v},\mathbf{w}\rangle\) of linear and angular velocities, respectively, during a certain amount of time. * **Odometry-based. ** This model abstracts the complexity of the robot kinematics, being most useful when wheel encoders are present, although other sensors like laser  
Figure 2: Part of a notebook computing the histogram of random samples from a Gaussian distribution. scanners can be used to compute the required pose increments [63]. In this case, the motion commands are expressed as an increment of the pose: \([\Delta x,\Delta y,\Delta\theta]\). Using any of these two models, the result of executing a motion command is a probability distribution (a Gaussian one) modeling the new robot pose. _Proposed notebook._ The goal of this series of notebooks is to familiarize the student with different aspects of robot motion and control commands, concretely:  
* **Composition of noisy poses.