Skip to content
Permalink
Browse files

done

  • Loading branch information...
AndreaCensi committed Jun 22, 2018
1 parent 3ea0777 commit bc13afa1dec4425865f71378e36b00566a755ae0
Showing with 795 additions and 0 deletions.
  1. +15 −0 book/doc-template/index.md
  2. +5 −0 book/duckietown_high_school/00_book_dhs.md
  3. +46 −0 book/duckietown_high_school/35_project_high_school.md
  4. +13 −0 book/software_architecture/00_part_duckietown_software.md
  5. +28 −0 book/software_architecture/05-teleoperation/teleoperation.md
  6. BIN book/software_architecture/10-line-detector/line_detector.pdf
  7. +10 −0 book/software_architecture/15-parallel-autonomy/Makefile
  8. +3 −0 book/software_architecture/15-parallel-autonomy/figures/car_on_road.jpg
  9. BIN book/software_architecture/15-parallel-autonomy/figures/car_on_road.pdf
  10. +58 −0 book/software_architecture/15-parallel-autonomy/figures/car_on_road.pdf_tex
  11. +3 −0 book/software_architecture/15-parallel-autonomy/figures/car_on_road.svg
  12. BIN book/software_architecture/15-parallel-autonomy/figures/lane.pdf
  13. +63 −0 book/software_architecture/15-parallel-autonomy/figures/lane.pdf_tex
  14. +3 −0 book/software_architecture/15-parallel-autonomy/figures/lane.svg
  15. BIN book/software_architecture/15-parallel-autonomy/figures/measurement_likelihood.pdf
  16. +64 −0 book/software_architecture/15-parallel-autonomy/figures/measurement_likelihood.pdf_tex
  17. +3 −0 book/software_architecture/15-parallel-autonomy/figures/measurement_likelihood.svg
  18. BIN book/software_architecture/15-parallel-autonomy/figures/segments.pdf
  19. +67 −0 book/software_architecture/15-parallel-autonomy/figures/segments.pdf_tex
  20. +3 −0 book/software_architecture/15-parallel-autonomy/figures/segments.svg
  21. +5 −0 book/software_architecture/15-parallel-autonomy/lane_filter.md
  22. BIN book/software_architecture/15-parallel-autonomy/lane_filter.pdf
  23. +253 −0 book/software_architecture/15-parallel-autonomy/lane_filter.tex
  24. +2 −0 book/software_architecture/30-lane-controller/.gitignore
  25. +3 −0 book/software_architecture/30-lane-controller/ColorSampling.xlsx
  26. +3 −0 book/software_architecture/30-lane-controller/LineDetection.pptx
  27. BIN book/software_architecture/30-lane-controller/bib/pure-pursuit.pdf
  28. +3 −0 book/software_architecture/30-lane-controller/figures/drawing.png
  29. +3 −0 book/software_architecture/30-lane-controller/figures/drawing.svg
  30. +18 −0 book/software_architecture/30-lane-controller/lane_control.md
  31. +38 −0 book/software_architecture/30-lane-controller/main.tex
  32. +16 −0 book/software_architecture/40_indefinite_navigation.md
  33. +13 −0 book/software_architecture/50_planning.md
  34. +13 −0 book/software_architecture/60_coordination.md
  35. +3 −0 book/software_architecture/BeliefRepresentation.docx
  36. +38 −0 book/software_architecture/Duckietown_ROS_Guideline.md
@@ -0,0 +1,15 @@
# Book title {#book:template}

Logo

# A part {#part:part1}

baz

# A section {#sec1}

foo

# A section {#sec2}

bar
@@ -0,0 +1,5 @@
# Duckietown High School {#book:dhs status=ready}

Maintainer: Mauro

# Overview {#part:dhs-overview status=ready}
@@ -0,0 +1,46 @@
# Duckietown High School {status=beta}

TODO for Mauro D'Angelo: Some of this info might be outdated.

### Introduction

DuckietownHS is inspired by the Duckietown project and targeted for high schools. The goal is to build and program duckiebots capable of moving autonomously on the streets of Duckietown. The technical objectives of DuckietownHS are simplified compared to those of the Duckietown project intended for universities so it is perfectly suited to the technical knowledge of the classes involved. The purpose is to create self-driving DuckiebotHS vehicles which can make choices and move autonomously on the streets of Duckietown, using sensors installed on the vehicles and special road signs positioned within Duckietown.

Once DuckiebotHS have been assembled and programmed to meet the specifications contained in this document and issued by the "customer" Perlatecnica, special missions and games will be offered for DuckiebotHS. The participants can also submit their own missions and games.

Just like the university project, DuckietownHS is an open source project, a role-playing game, a means to raise awareness on the subject and a learning experience for everyone involved. The project is promoted by the non-profit organization [Perlatecnica][perlatecnica] based in Italy.

[perlatecnica]: http://www.perlatecnica.it

### Purpose

The project has two main purposes:

- It is a course where students and teachers take part in a role play and they take the typical professional roles of an engineering company. They must design and implement a Duckietown responding to the specifications of the project, assemble DuckiebotHS (DBHS), and develop the software that will run on them. The deliverables of the project will be tutorials, how-to, source code, documentation, binaries and images and them will be designed and manufactured according to the procedures of the DTE.
- In respect of that mentioned above, special missions and games for DBHS will be introduced by the "customer" Perlatecnica.

### Perlatecnica's role

Perlatecnica assumes the role of the customer and commissions the Duckietown Engineering company to design and construct the Duckietown and DuckiebotHS. It will provide all necessary product requirements and will assume the responsibility to validate the compliancy of all deliverables to the required specifications.

### The details of the project

The project consists in the design and realization of DuckiebotHS and DuckietownHS. They must have the same characteristics as the city of the University project as far as the size and color of the delimiting roadway bands is concerned but with a different type of management of the traffic lights system that regulates the passage of DuckiebotHS at intersections. The DuckietownHS (DTHS) and DuckiebotHS (DBHS) are defined in the documentation and there is little room for the DTE to make its own choices in terms of design. The reason for this is that the DBHS produced by the different DTE’s need to be identical from a hardware point of view so that the software development makes the difference.

### Where to start

The purchase of the necessary materials is the first step to take. For both DTHS and DBHS a list of these materials is provided with links to possible sellers. Even though Amazon is typically indicated as a seller this is nothing more than an indication to facilitate the purchase for those less experienced. It is left to the individual DTE to choose where to buy the required parts. It is allowed to buy and use parts that are not on the list but this is not recommended as they will make the Duckiebot unfit to enter in official competitions. When necessary an assembly tutorial will be provided together with the list of materials. Once the DTHS city and the DBHS robots have been assembled, the next step will be the development of the software for the running of both the city and the DuckiebotHS. The city and the Duckiebot run on a board based on a microcontroller STM32 from STMicroelectronics the Nucleo F401RE that will be programmed via the online development environment mbed. Perlatecnica will not release any of the official codes necessary for the navigation of the DuckiebotHS as these are owned by the DTE who developed them. The full standard document is available on the project official web site.

Each DTE may release the source code under a license Creative Commons CC BY-SA 4.0.

### The first mission of the Duckiebot

Once you have completed the assembly of all the parts that make up the Duckietown and DuckiebotHS you should start programming the microcontroller so that the Duckiebot can move independently.

The basic mission of the DuckiebotHS is to move autonomously on the roads respecting the road signs and traffic lights, choosing a random journey and without crashing into other DuckiebotHS.

For the development of the code, there are no architectural constraints, but we recommend proceeding with order and to focus primarily on its major functions and not on a specific mission.

The main functions are those of perception and movement.

Moving around in DuckietownHS, the DuckiebotHS will have to drive on straight roads, make 90 degree curves while crossing an intersection but also make other unexpected curves. While doing all this the Duckiebot can be supported by a gyroscope that provides guidance to the orientation of the vehicle.
@@ -0,0 +1,13 @@
# The duckietown system {#book:duckietown-software status=ready}

Maintainer: Andrea Censi


# Overview {#part:duckietown-software-part status=ready}

This part describes the Duckietown algorithms and system architecture.

We do not go in the software details. The implementation details have been already
talked about at length in [](#sw-development).

We do give links to the ROS packages implementing the functionality.
@@ -0,0 +1,28 @@
# Teleoperation {#teleoperation-stack status=draft}

TODO: add video here

## Implementation


Drivers:

- <a class="number_name" href="#adafruit_drivers"/>
- <a class="number_name" href="#pi_camera"/>

Operator interface:

- <a class="number_name" href="#joy_mapper"/>


## Camera

TODO: to write

## Actuators

TODO: to write

## IMU

TODO: to write
Binary file not shown.
@@ -0,0 +1,10 @@
CMD = pdflatex
PAPER = lane_filter

all:
$(CMD) $(PAPER)

#&& bibtex $(PAPER) && $(CMD) $(PAPER) && $(CMD) $(PAPER)

clean:
rm -f *.aux *.log *.blg *.bbl *.tmp
Git LFS file not shown
Binary file not shown.
@@ -0,0 +1,58 @@
%% Creator: Inkscape inkscape 0.92.0, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'car_on_road.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{469.77142822bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.3372523)%
\put(0,0){\includegraphics[width=\unitlength,page=1]{car_on_road.pdf}}%
\put(0.22126262,0.31784459){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$x$}}}%
\put(0.29110834,0.20419131){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$y$}}}%
\put(0.06972408,0.08985005){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$z$}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{car_on_road.pdf}}%
\end{picture}%
\endgroup%
Git LFS file not shown
Binary file not shown.
@@ -0,0 +1,63 @@
%% Creator: Inkscape inkscape 0.92.0, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'lane.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{389.96690877bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.91129771)%
\put(0,0){\includegraphics[width=\unitlength,page=1]{lane.pdf}}%
\put(0.41579707,0.86278135){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$l_Y$}}}%
\put(0.55927879,0.88791832){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$w$}}}%
\put(0.6835325,0.86309262){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$l_W$}}}%
\put(0.48219349,0.16048537){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$d=0,\phi=0$}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{lane.pdf}}%
\put(0.03060225,0.00452262){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$d$}}}%
\put(0,0){\includegraphics[width=\unitlength,page=3]{lane.pdf}}%
\put(-0.0025543,0.10191996){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$\phi$}}}%
\put(0,0){\includegraphics[width=\unitlength,page=4]{lane.pdf}}%
\end{picture}%
\endgroup%
Git LFS file not shown
Binary file not shown.
@@ -0,0 +1,64 @@
%% Creator: Inkscape inkscape 0.92.0, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'measurement_likelihood.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{480.30143917bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.71570141)%
\put(0,0){\includegraphics[width=\unitlength,page=1]{measurement_likelihood.pdf}}%
\put(0.50409734,0.01260642){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$d=0$}}}%
\put(0.85564485,0.01778922){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$d_{max}$}}}%
\put(0.14080592,0.01593766){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$d_{min}$}}}%
\put(-0.00207389,0.38269556){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$\phi=0$}}}%
\put(0.02285966,0.07149502){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$\phi_{min}$}}}%
\put(0.03120467,0.68023298){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$\phi_{max}$}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{measurement_likelihood.pdf}}%
\put(0.34675215,0.00407459){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$\Delta{d}$}}}%
\put(0.04182801,0.24050397){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$\Delta{\phi}$}}}%
\put(0,0){\includegraphics[width=\unitlength,page=3]{measurement_likelihood.pdf}}%
\end{picture}%
\endgroup%
Git LFS file not shown
Binary file not shown.
@@ -0,0 +1,67 @@
%% Creator: Inkscape inkscape 0.92.0, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'segments.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{144.76833458bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,2.51041476)%
\put(0,0){\includegraphics[width=\unitlength,page=1]{segments.pdf}}%
\put(0.11398852,0.44806501){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$s^1$}}}%
\put(0.09036916,1.39351715){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$s^2$}}}%
\put(0.54465707,0.65667011){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$s^4$}}}%
\put(0.53918732,1.78505479){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$s^3$}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{segments.pdf}}%
\put(0.03342541,0.11475028){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_1^1$}}}%
\put(0.07160653,0.76630244){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_2^1$}}}%
\put(0.08232197,1.07343376){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_1^2$}}}%
\put(-0.00688061,1.68747313){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_2^2$}}}%
\put(0.52533336,2.12310718){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_1^3$}}}%
\put(0.63229237,1.44230638){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_2^3$}}}%
\put(0.60393281,1.09029293){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_1^4$}}}%
\put(0.5486721,0.3254226){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$p_2^4$}}}%
\end{picture}%
\endgroup%
Git LFS file not shown
Oops, something went wrong.

0 comments on commit bc13afa

Please sign in to comment.
You can’t perform that action at this time.