A self-propelled device (300; 800; 1400) comprising: a drive system (301; 890) comprising motors (322, 324); a spherical housing that contains the drive system; a biasing mechanism including a spring, the spring being positioned to bias the drive system; a three-axis controller to implement control commands on the drive system (301; 890), wherein the three-axis controller is adapted to: receive sensor feedback as to a motion of the self-propelled device along three axes, determine and maintain a three-dimensional frame of reference for controlling the drive system using the sensor feedback, implement control on the motors of the drive system (301; 890) using the three-dimensional frame of reference; and an inertial measurement unit to provide the sensor feedback to the three-axis controller; wherein the three-axis controller is further adapted to: additionally receive two-dimensional control input (885; 1415) about two axes according to a two-dimensional reference frame, and process the received two-dimensional control input (885; 1415) in the three-dimensional frame of reference in order to implement the control on the drive system; wherein the spring is coupled to the drive system at a first end, and includes a spring end that extends in a direction that is opposite to the first end to contact an inner surface of the spherical housing; wherein the biasing mechanism biases the spring end against the inner surface of the spherical housing to actively force the drive system to continuously engage the inner surface of the spherical housing and cause the spherical housing to move. a drive system (301; 890) comprising motors (322, 324); a spherical housing that contains the drive system; a biasing mechanism including a spring, the spring being positioned to bias the drive system; a three-axis controller to implement control commands on the drive system (301; 890), wherein the three-axis controller is adapted to: receive sensor feedback as to a motion of the self-propelled device along three axes, determine and maintain a three-dimensional frame of reference for controlling the drive system using the sensor feedback, implement control on the motors of the drive system (301; 890) using the three-dimensional frame of reference; and receive sensor feedback as to a motion of the self-propelled device along three axes, determine and maintain a three-dimensional frame of reference for controlling the drive system using the sensor feedback, implement control on the motors of the drive system (301; 890) using the three-dimensional frame of reference; and an inertial measurement unit to provide the sensor feedback to the three-axis controller; wherein the three-axis controller is further adapted to: additionally receive two-dimensional control input (885; 1415) about two axes according to a two-dimensional reference frame, and process the received two-dimensional control input (885; 1415) in the three-dimensional frame of reference in order to implement the control on the drive system; additionally receive two-dimensional control input (885; 1415) about two axes according to a two-dimensional reference frame, and process the received two-dimensional control input (885; 1415) in the three-dimensional frame of reference in order to implement the control on the drive system; wherein the spring is coupled to the drive system at a first end, and includes a spring end that extends in a direction that is opposite to the first end to contact an inner surface of the spherical housing; wherein the biasing mechanism biases the spring end against the inner surface of the spherical housing to actively force the drive system to continuously engage the inner surface of the spherical housing and cause the spherical housing to move.