Well, I sort of figured it out. (Sorry about the delay!)
To make the rotation not look at the center of the screen, you need to change the code to the following:
var lerp_speed = 2;
t = t.looking_at(atpos.linear_interpolate(atpos + atdir, delta * lerp_speed), Vector3(0, 1, 0))
However, this gives the same result as just using the original rotation code, which ultimately means we are back at the start again.
However, I think I may know how to get smoothed rotation, but my initial tests did not yield any usable results. The looking_at function returns a new transform with a new rotation. In theory, you can convert the basis in the transform returned by looking_at into a Quat object. Then you change the rotation of the robot character to a Quat object, and from there lerp the two rotations together using the built in slerp function in the Quat object. Then you take the result from the slerp function and convert it back into a Basis object, and then set the rotation of the robot character to the converted Basis.
Unfortunately, I'm going to be away for awhile starting tomorrow (the 5th) for medical reasons, and so I won't have any time for awhile to check and try the method I outlined above, but that is what you'll probably need to do to get smooth rotation between points using looking_at. I would look at the example code provided in the documentation, and see if you can get a smoothed rotation.
Hopefully that helps, and my apologizes for not being able to provide a better answer.