\begin{tikzpicture} [minimum width=20, >=triangle 45]
	%Track
	\coordinate (begin) at (0, 0);
	\coordinate (end) at (10, 0);
	\draw (begin) -- (end) -- ++(0, -0.5) -- ($(begin)+(0, -0.5)$) -- cycle [fill=gray!50];
	\draw ($(begin)+(0, -0.5)$) rectangle ($(end)+(0, -0.7)$) [fill=yellow];
	\foreach \x in {0, 0.5,...,10}
		\draw ($(begin)+(\x, -0.5)$) -- ($(begin)+(\x, -0.6)$);
	
	%Lens
	\node (lens-carriage) at ($(begin)!0.35!(end)$) [anchor=south, rectangle, draw, minimum height=15, fill=gray] {};
	\node (lwheel 1) at (lens-carriage.south west) [circle, draw, minimum size=5, fill=black] {};
	\node (lwheel 2) at (lens-carriage.south east) [circle, draw, minimum size=5, fill=black] {};
	\node (lens-holder) at (lens-carriage.north) [anchor=south, rectangle, draw, minimum height=40] {};
	\draw (lens-holder.north) -- +(-0.3, 0.6) node (lens) [anchor=west, circle, draw, minimum size=15, fill=blue!50] {};
	\draw (lens-holder.north) -- (lens.east);
	\coordinate (lens-begin) at ($(lens.center)+(-5, 0)$);
	\coordinate (lens-end) at ($(lens.center)+(5, 0)$);
	
	%Source
	\node (source-carriage) at ($(begin)!1!(end)$) [anchor=south, rectangle, draw, minimum height=15, fill=gray] {};
	\node (swheel 1) at (source-carriage.south west) [circle, draw, minimum size=5, fill=black] {};
	\node (swheel 2) at (source-carriage.south east) [circle, draw, minimum size=5, fill=black] {};
	\node (source) at (source-carriage.north) [anchor=south, rectangle, draw, minimum height=70] {};
	\node (object) at ($(source.north) + (0, -0.18)$) [anchor=north, circle, draw, minimum size=15, fill=yellow] {};
	
	\coordinate (o) at (object.north);
	\coordinate (o flat) at ($(lens-begin)!(o)!(lens-end)$);
	\coordinate (f flat) at ($(begin)!($(lens.center) + (-1.98, 0)$)!(end)$);
	\coordinate (f) at ($(lens-begin)!(f flat)!(lens-end)$);

	
	%Rays
	\draw[orange] (o) -- ($(o)!1.55!(lens.center)$) coordinate (a);
	\draw[orange] (o) |- (lens.north);
	\draw[orange] (lens.north) -- ($(lens.north)!1.55!(f)$) coordinate (b);
	\draw[orange] (object.south) -- ($(object.south)!1.55!(lens.center)$);
	
	\coordinate (i) at (intersection cs:
		first line={(o) -- (a)},
		second line={(lens.north) -- (b)});
		
	\coordinate (i flat) at ($(lens-begin)!(i)!(lens-end)$);
	\coordinate (i') at ($(i flat) - (i)$);
	\coordinate (i flip) at ($2*(i') + (i)$);
	\node at (i) [anchor=south, draw, circle through=(i flat), fill=yellow] {};
	
	%Screen
	\coordinate (i bottom) at ($(begin)!(i)!(end)$);
	\node (screen-carriage) at ($(begin)!(i bottom)!(end)$) [anchor=south, rectangle, draw, minimum height=15, fill=gray] {};
	\node (swheel 1) at (screen-carriage.south west) [circle, draw, minimum size=5, fill=black] {};
	\node (swheel 2) at (screen-carriage.south east) [circle, draw, minimum size=5, fill=black] {};
	\node (screen) at (screen-carriage.north) [anchor=south, rectangle, draw, minimum height=100] {};
	
	%Labels
	\draw[<-] (0,0) -- ++(-0.5, 1) node [anchor=south east] {track};
	\draw[<-] (0, -0.7) -- ++(-0.5, -0.5) node [anchor=north east] {track ruler};
	\draw[<-] (lens-carriage.south) -- (5, -2); \draw[<-] (source-carriage.south) -- (5, -2); 
		\draw[<-] (screen-carriage.south) -- (5, -2) node [anchor=north] {carriages};
	\draw[<-] (screen.north west) -- ++(-1, 0.5) node [anchor=south east] {screen};
	\draw[<-] (lens-holder.east) -- ++(0.3, 0.5) node [anchor=south west] {lens-holder};
	\draw[<-] (lens.north) -- ++(0, 1) node [anchor=south] {lens};
	\draw[<-] (source.north east) -- ++(0.5, 0.5) node [anchor=south west] {light source};
	
	%Distances
	\draw[|-|, color=blue!120] ($(object.north) + (0.3, 0)$) -- node [anchor=west] {$H_0$} ($(object.south) + (0.3, 0)$);
	\draw[|-|, color=blue!120] ($(i) + (-0.3, 0)$) -- node [anchor=east] {$H$} ($(i flip) + (-0.3, 0)$);
	\draw[dashed, color=blue!120] (lens.south) -- ($(begin)!(lens.south)!(end) + (0, -0.7)$) coordinate (l);
	\draw[dashed, color=blue!120] (object.south) -- ($(begin)!(object.south)!(end) + (0, -0.7)$) coordinate (s);
	\draw[dashed, color=blue!120] (i) -- ($(begin)!(i)!(end) + (0, -0.7)$) coordinate (sc);
	\draw[|-|, color=blue!120] ($(sc) + (0, -0.1)$) -- node [anchor=north] {$I$} ($(l) + (0, -0.1)$);
	\draw[|-|, color=blue!120] ($(l) + (0, -0.3)$) -- node [anchor=north] {$P$} ($(s) + (0, -0.3)$);
	\draw[|-|, color=blue!120] (lens.center) -- node [anchor=north] {$f$} (f);
	
\end{tikzpicture}
