% Kinematic bicycle model and geometric parameters of the mining truck.
% Drawn to scale in metres with L_v = 12, B_v = 3, L_w = 6.5, rear overhang 1.5,
% steering at psi_max = arctan(L_w / R_min) so that the ICR sits at R_min = 12 m.
\documentclass[border=1pt]{standalone}
\input{figstyle}
\begin{document}
\begin{tikzpicture}[scale=0.53]

  % ---------- global frame ------------------------------------------------
  \draw[->, thin@] (-4.8,-2.8) -- (-2.6,-2.8) node[ann, right] {$x$};
  \draw[->, thin@] (-4.8,-2.8) -- (-4.8,-0.6) node[ann, above] {$y$};

  % horizontal reference through the rear-axle centre, for the heading angle
  \draw[thin@, sitec, dash pattern=on 1.6pt off 1.2pt] (0,0) -- (5.6,0);
  \draw[thin@] (4.2,0) arc[start angle=0, end angle=18, radius=4.2];
  \node[ann] at (5.05,0.72) {$\theta$};

  \begin{scope}[rotate=18]

    % ---------- vehicle body ---------------------------------------------
    \draw[veh, sitec, fill=fillc, fill opacity=0.6]
          (-1.5,-1.5) rectangle (10.5,1.5);
    \draw[thin@, sitec, dash pattern=on 1.4pt off 1pt] (-1.5,0) -- (11.6,0);

    % ---------- wheels ----------------------------------------------------
    % rear wheels, aligned with the body
    \foreach \sy in {-1.5,1.5}{
      \draw[veh, fill=sitec] (-0.9,\sy-0.22) rectangle (0.9,\sy+0.22);
    }
    % front wheels, steered by psi_max = 28 deg
    \foreach \sy in {-1.5,1.5}{
      \begin{scope}[shift={(6.5,\sy)}, rotate=28]
        \draw[veh, fill=parkc, fill opacity=0.85]
              (-0.9,-0.22) rectangle (0.9,0.22);
      \end{scope}
    }

    % ---------- steering angle -------------------------------------------
    \draw[thin@, parkc] (6.5,0) -- ++(28:3.1);
    \draw[thin@] (8.7,0) arc[start angle=0, end angle=28, radius=2.2];
    \node[ann] at (9.35,0.66) {$\psi$};
    \node[annt, parkc] at (9.9,1.95) {$\dot\psi$};
    \draw[->, thin@, parkc] (9.05,1.55) arc[start angle=32, end angle=52,
                                            radius=3.0];

    % ---------- instantaneous centre of rotation --------------------------
    \draw[thin@, sitec, dash pattern=on 1.6pt off 1.2pt] (0,0) -- (0,12.2);
    \draw[thin@, sitec, dash pattern=on 1.6pt off 1.2pt] (6.5,0) -- (0,12.2);
    \fill[sitec] (0,12.2) circle (0.22);
    \node[ann, above] at (0,12.45) {ICR};
    \node[ann, left] at (-0.25,7.0) {$R_\text{min}=1/\kappa_\text{max}$};

    % ---------- rear-axle centre = path reference point -------------------
    \fill[parkc] (0,0) circle (0.26);
    \node[ann, parkc] at (-2.35,-1.05)
         {$\mathbf{p}=[x,y]^\top$};

    % ---------- dimensions -----------------------------------------------
    % wheelbase
    \draw[dimline] (0,-0.75) -- (6.5,-0.75);
    \node[annt, fill=fillc, inner sep=0.4pt] at (3.25,-0.75) {$L_\text{w}$};
    % overall length
    \draw[dimline] (-1.5,-2.55) -- (10.5,-2.55);
    \node[annt, fill=white, inner sep=0.4pt] at (4.5,-2.55) {$L_\text{v}$};
    \draw[thin@] (-1.5,-1.6) -- (-1.5,-2.75);
    \draw[thin@] (10.5,-1.6) -- (10.5,-2.75);
    % width
    \draw[dimline] (-2.9,-1.5) -- (-2.9,1.5);
    \node[annt, rotate=90, fill=white, inner sep=0.4pt]
         at (-2.9,0) {$B_\text{v}$};
    \draw[thin@] (-1.65,-1.5) -- (-3.1,-1.5);
    \draw[thin@] (-1.65,1.5) -- (-3.1,1.5);

    % swept rectangle annotation
    \node[annt, sitec] at (7.4,-0.95) {$\mathcal{V}(\boldsymbol{\eta})$};

  \end{scope}
\end{tikzpicture}
\end{document}
