An iterative learning controller for nonholonomic robots