Research‎ > ‎



A small vehicle is trapped in a valley, because it does not have enough power to climb up the valley wall. In order to leave the valley, the car must first drive up one side as far as it is able, then roll to the other side building momentum until it finally is capable of exiting the valley. This problem is often used to test the efficacy of machine learning algorithms, see wikipedia.

Design goals

The over-all goal will be to design a physical hill-car system with a corresponding simulation. The sub-goal will to solve the hill-car problem in the physical system as fast as possible. The shape of the hill and the size of the car will be agreed upon across all participants. All other design elements will be unique to the participants.

Design constraints

  • The valley must conform to a parabola and it may only be rotated a fixed amount
  • Physical components must be fabricated using the laser cutter out of 1/4" acrylic sheet
  • Actuation must be achieved from a single HD-1705mg servo


Template simulation code is attached ( that gives a simulation for a hill-car with a particular hill-shape. This simulation will need to be revised to match the design constraints, solve for the desired control and include any additional physics desired.


The template mechanism is provided as solidwork files ( All files in the template may be modified as desired. Required additional design elements will be:
  • Provide a stand so that the system can operate self-supported.
  • Design a linkage that is capable of rocking the valley with the supplied servo.


The location of the car needs to be detected for feedback control. The actuator is servo driven and offers no feedback. Possible ideas for sensing are:
  • Nichrome wire in a loop along the valley floor. If the car is a metal disk, as the car moves along the loop effectively shorting it and changing the loop's length. The resistance of the wire loop will then be proportional to the car's position in the valley.
  • Photodiodes placed at two or more points in the valley will detect when the car passes in front. 


The control will incorporate data from the sensor and send a position command to the servo. The logic and control will be implemented on an Arduino. Considerations for the control will be that it is relatively simple and compact in order to function in the constraints of the limited processing power.

Jeff Bingham,
Nov 14, 2013, 11:14 AM
Jeff Bingham,
Nov 14, 2013, 9:50 AM
Jeff Bingham,
Nov 14, 2013, 9:47 AM
Jeff Bingham,
Nov 14, 2013, 9:50 AM