Is there a possibility to define cardioide[t,a] := Table[...]
This is quite simple really, just change your definition from using cardioide[a_] :=
to cardioide[t_, a_] :=
and it should work exactly as you describe. Read through this tutorial for information on defining functions in the Wolfram Language.
Looking at your cardioide
function, you would do well to remove the list braces inside your table command since the "position" method already returns a list of two coordinates. Something like
cardioide[turtle_, a_ ? NumericQ] := Table[
turtle["forward",
(8 / 3) * a * N[Cos[i / 3]] * 0.01745
];
turtle["left", 1 * Degree];
turtle["position"],
{i, 0, 9.425, 0.01745}
];
t1 = newTurtle[{0, 0}, {0, 1}];
t2 = newTurtle[{-1, 0}, {0, 1}];
ListLinePlot[
{cardioide[t1, 2], cardioide[t2, 2]},
AspectRatio -> Automatic
]