With code from the Wolfram Demo project for a Reuleaux triangle from https://demonstrations.wolfram.com/ARotatingReuleauxTriangle/
and some small changes:
angle[vec_] :=
Arg[First[vec] + I*Last[vec]] + If[Last[vec] >= 0, 0, 2*Pi]
centerpath[t_] :=
Piecewise[{{{1 + Cos[Mod[t, 2 Pi/3] + 7 Pi/6] +
Sqrt[3]/3*Sin[Mod[t, 2 Pi/3] + 7 Pi/6],
1 + Sin[Mod[t, 2 Pi/3] + 7 Pi/6] +
Sqrt[3]/3*Cos[Mod[t, 2 Pi/3] + 7 Pi/6]},
0 <= Mod[t, 2 Pi/3] < Pi/6},
{{-1 - Sin[Mod[t, 2 Pi/3] + Pi] -
Sqrt[3]/3*Cos[Mod[t, 2 Pi/3] + Pi],
1 + Cos[Mod[t, 2 Pi/3] + Pi] +
Sqrt[3]/3*Sin[Mod[t, 2 Pi/3] + Pi]},
Pi/6 <= Mod[t, 2 Pi/3] < Pi/3},
{{-1 - Cos[Mod[t, 2 Pi/3] + 5 Pi/6] -
Sqrt[3]/3*Sin[Mod[t, 2 Pi/3] + 5 Pi/6], -1 -
Sin[Mod[t, 2 Pi/3] + 5 Pi/6] -
Sqrt[3]/3*Cos[Mod[t, 2 Pi/3] + 5 Pi/6]},
Pi/3 <= Mod[t, 2 Pi/3] < Pi/2},
{{ 1 + Sin[Mod[t, 2 Pi/3] + 2 Pi/3] +
Sqrt[3]/3*Cos[Mod[t, 2 Pi/3] + 2 Pi/3], -1 -
Cos[Mod[t, 2 Pi/3] + 2 Pi/3] -
Sqrt[3]/3*Sin[Mod[t, 2 Pi/3] + 2 Pi/3]},
Pi/2 <= Mod[t, 2 Pi/3] < 2 Pi/3}}];
reuleaux[s_] := Module[{a, b, c},
a = centerpath[s] + Sqrt[3]/3*2*{Cos[-s], Sin[-s]};
b = centerpath[s] + Sqrt[3]/3*2*{Cos[-s + 2 Pi/3], Sin[-s + 2 Pi/3]};
c = centerpath[s] + Sqrt[3]/3*2*{Cos[-s + 4 Pi/3], Sin[-s + 4 Pi/3]};
Graphics[{LightGray,
Disk[a, 2, {angle[b - a], angle[b - a] + Pi/3}],
Disk[b, 2, {angle[c - b], angle[c - b] + Pi/3}],
Disk[c, 2, {angle[a - c], angle[a - c] + Pi/3}],
Black,
Circle[a, 2, {angle[b - a], angle[b - a] + Pi/3}],
Circle[b, 2, {angle[c - b], angle[c - b] + Pi/3}],
Circle[c, 2, {angle[a - c], angle[a - c] + Pi/3}],
PointSize[.02], Black,
Point[a],
Point[b],
Point[c],
Point[(a + b + c)/3],
Line[{{1, -1}, {1, 1}, {-1, 1}, {-1, -1}, {1, -1}}]},
Axes -> True]
]
And the addition of the x- movement we can create the following animation:
Animate[Graphics[{Translate[reuleaux[s][[1]], {Sqrt[3] s, 0}],
Line[{{{-2, -1}, {12, -1}}, {{-2, 1}, {12, 1}}}]} ,
PlotRange -> {{-2, 12}, {-1.2, 1.2}}, ImageSize -> 500], {s, -0.1 ,
2 Pi}]

ArcTan @@ (reuleaux'[t])
is not a continuous function oft
, which in turn stems from the fact that your parametrization of the curve has a discontinuous derivative at the corners. So when you get to one of the corners, the animation skips from rolling along one curve to rolling along the next curve, without pivoting around the corner in between these motions. Not immediately sure how to fix this, but I'll think on it further. $\endgroup$