begin (load_module ("srs10Module")) (NOP 1 = left) (new qbl::QDM QDM) (qbl::qdm::new (get QDM)) (new qbl::qdm::ActionList actions.0) (set actions.0 (qbl::qdm::ActionList (qbl::qdm::Action (qbl::qdm::Point -2) left) (qbl::qdm::Action (qbl::qdm::Point 0) forward) (qbl::qdm::Action (qbl::qdm::Point 2) right) ) ) (new qbl::qdm::ActionList actions.1) (set actions.1 (qbl::qdm::ActionList (qbl::qdm::Action (qbl::qdm::Point -2) chirp1) (qbl::qdm::Action (qbl::qdm::Point 0) silent) (qbl::qdm::Action (qbl::qdm::Point 2) chirp2) ) ) (new qbl::qdm::ActionSpace A.0) (new qbl::qdm::ActionSpace A.1) (qbl::qdm::set_action_space movementMap A.0 -1 1) (qbl::qdm::set_action_space points A.0 actions.0) (qbl::qdm::set_action_space gridSize A.0 15) (qbl::qdm::set_action_space resetDelta A.0 0) (qbl::qdm::set_action_space movementMap A.1 -1 1) (qbl::qdm::set_action_space points A.1 actions.1) (qbl::qdm::set_action_space gridSize A.1 11) (qbl::qdm::set_action_space resetDelta A.1 0) (qbl::qdm::add_action_space QDM A.0) (qbl::qdm::add_action_space QDM A.1) (qbl::qdm::finalize QDM) (qbl::load QDM ("qbl_robot_test1.dat")) (qbl::qdm::shell (get QDM)) (srs10::connect 0) (new double deltaHead) (new double headRotation) (set deltaHead 20.0) (srs10::add_robot robot1 0) (srs10::add_sensor robot1 IR left 0.75 40.0) (srs10::add_sensor robot1 IR right 0.75 -40.0) (srs10::add_sensor robot1 PROXIMITY front_prox 2.5 4) (srs10::add_sensor robot1 PROXIMITY left_prox 2.5 5) (srs10::add_sensor robot1 PROXIMITY back_prox 2.5 6) (srs10::add_sensor robot1 PROXIMITY right_prox 2.5 7) (new integer ir_left) (new integer ir_right) (new integer hearChirp1) (new integer hearChirp2) (new integer time.1) (new integer time.2) (set time.1 0) (set time.2 0) (new string action_str) (new integer action) (new srs10::Event e) (qbl::qdm::prepare QDM) (set hearChirp1 0) (set hearChirp2 0) (while 1 (srs10::poll_sensors robot1) (set ir_left (srs10::get_sensor robot1 left) ) (set ir_right (srs10::get_sensor robot1 right) ) (NOP Process Events ) (srs10::poll_events robot1) (while (srs10::events_exist robot1) (set e (srs10::get_next_event robot1)) (case (srs10::event::get (get e) creator) 2 (begin (set hearChirp1 1) (if (and (> (srs10::event::get (get e) direction) 20.0) (< (srs10::event::get (get e) direction) 160.0) ) (set ir_left 1) (nop) ) (if (and (> (srs10::event::get (get e) direction) 210.0) (< (srs10::event::get (get e) direction) 340.0) ) (set ir_right 1) (nop) ) (nop case (srs10::event::get (get e) direction_str) Left (set ir_right 1) Right (set ir_left 1) ) ) 3 (begin (set hearChirp2 1) (if (and (> (srs10::event::get (get e) direction) 20.0) (< (srs10::event::get (get e) direction) 160.0) ) (set ir_right 1) (nop) ) (if (and (> (srs10::event::get (get e) direction) 210.0) (< (srs10::event::get (get e) direction) 340.0) ) (set ir_left 1) (nop) ) (nop case (srs10::event::get (get e) direction_str) Left (set ir_left 1) Right (set ir_right 1) ) ) ) ) (NOP Motor inputs ) (cond (get ir_left) (qbl::qdm::apply_op (get QDM) left_ir) (get ir_right) (qbl::qdm::apply_op (get QDM) right_ir) (not (or (get hearChirp1) (get hearChirp2)) ) (qbl::qdm::apply_op (get QDM) no_ir) ) (nop if (get hearChirp1) (qbl::qdm::apply_op (get QDM) chirp1) (nop) ) (nop if (get hearChirp2) (qbl::qdm::apply_op (get QDM) chirp2) (nop) ) (NOP Done with input processing ) (qbl::qdm::think QDM) (set time.1 (+ time.1 1) ) (set time.2 (+ time.2 1) ) (if (< (get time.1) 5 ) (nop) (begin (set time.1 0) (case (qbl::qdm::decide_str QDM 0) left (srs10::move robot1 0.70 1.75) forward (if (not (or ir_left ir_right)) (srs10::move robot1 1.5 0.0) (srs10::move robot1 0.0 0.0) ) right (srs10::move robot1 0.70 -1.75) ) ) ) (if (< (get time.2) 5 ) (nop) (begin (set time.2 0) (case (qbl::qdm::decide_str QDM 1) chirp1 (srs10::create_event robot1 80.0 2 10 0.0 1.0 0.0) chirp2 (srs10::create_event robot1 80.0 3 11 1.0 0.0 0.0) ) (set hearChirp1 0) (set hearChirp2 0) ) ) ) (qbl::qdm::free QDM) (srs10::disconnect 0) (print done)