For a moment I thought you were going to say that you kept hurting the robot's feelings and that it couldn't take a joke.
For taking the robot out in public you can limit the maximum value that is sent to a PWM (and thus the maximum power to a motor) but that probably won't completely solve your problem of "human robot interaction", and will definitely make the robot appear slow and sluggish.
What we do is build a "robot corral", out of 10' long 2x8 bolted together at the ends. If people stay out of the corral, then the robot (usually) won't hit them. If you build it out of 12' long 2x10, then the corral can double as the walls for a low-cost VEX/FTC playing field. See
here for a photo.
The spinning in circles issue could be many things. Here are a few questions to help come up with a diagnosis:
1) Can you make the robot go straight ahead and straight backwards if you are very careful with the joystick? (if not, then it may be an electrical or mechanical problem on the robot)
2) Did the robot once go straight? If so, what have you done to it since then? Did you put new code in to the robot? If so, what code did you put in... are you using EasyC pro?
3) Have you tried a couple of different joysticks? It is possible that the joystick you are using is damaged or worn. For that matter, what joystick are you using... the beige ones that come in the KoP? If so, have you been able to get an improved performance by adjusting the trim?
Finally, you may be interested in searching for the term "deadband". You'll find threads like this one
http://www.chiefdelphi.com/forums/sh...light=deadband that might help solve your problems.
Jason