|
From: Jérémie D. <Ba...@us...> - 2010-05-16 21:31:30
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "krobot".
The branch, master has been updated
via 10395230bcd78851504981612ca1ed3b82bdc8e2 (commit)
via 226c7f6a1f8e1459f91420c4cda486e6baa8ade0 (commit)
via 511fc9aeeba49d046121d2e1ea4d3fbe0f3bb055 (commit)
from 27883db5fcfe178511ac38c6f1fe9caaefe39b54 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 10395230bcd78851504981612ca1ed3b82bdc8e2
Author: Jérémie Dimino <je...@di...>
Date: Sun May 16 23:30:34 2010 +0200
change the limit for deciding that an ear is a fake
commit 226c7f6a1f8e1459f91420c4cda486e6baa8ade0
Author: Jérémie Dimino <je...@di...>
Date: Sun May 16 23:21:08 2010 +0200
change ax12 positions for the close command
commit 511fc9aeeba49d046121d2e1ea4d3fbe0f3bb055
Author: Jérémie Dimino <je...@di...>
Date: Sun May 16 23:11:43 2010 +0200
wait for ax12/rx64 movement completion
-----------------------------------------------------------------------
Changes:
diff --git a/info/control/clients/script.ml b/info/control/clients/script.ml
index cc7b886..769542e 100644
--- a/info/control/clients/script.ml
+++ b/info/control/clients/script.ml
@@ -508,26 +508,29 @@ let () =
lwt () = logger [fg lred; text "grip-up failure"] in
lwt _ = Krobot.Motors.move krobot (-100) 400 800 in
lwt () = Krobot.Grip.close krobot in
- lwt () = Lwt_unix.sleep 1.0 in
lwt _ = Krobot.Grip.empty_up krobot in
- lwt () = Lwt_unix.sleep 1.0 in
lwt _ = Krobot.Motors.move krobot 100 400 800 in
return ());
register ~path:["grip"] "empty-up" f0
(fun logger krobot ->
- Krobot.Grip.empty_up krobot);
+ lwt () = Krobot.Grip.empty_up krobot in
+ logger [text "grip.empty-up: done"]);
register ~path:["grip"] "down" f0
(fun logger krobot ->
- Krobot.Grip.down krobot);
+ lwt () = Krobot.Grip.down krobot in
+ logger [text "grip.down: done"]);
register ~path:["grip"] "open" f0
(fun logger krobot ->
- Krobot.Grip.open_ krobot);
+ lwt () = Krobot.Grip.open_ krobot in
+ logger [text "grip.open: done"]);
register ~path:["grip"] "close" f0
(fun logger krobot ->
- Krobot.Grip.close krobot);
+ lwt () = Krobot.Grip.close krobot in
+ logger [text "grip.open: close"]);
register ~path:["grip"] "release" f0
(fun logger krobot ->
- Krobot.Grip.release krobot);
+ lwt () = Krobot.Grip.release krobot in
+ logger [text "grip.release: close"]);
(* +---------------------------------------------------------------+
| Claws |
diff --git a/info/control/driver/driver.ml b/info/control/driver/driver.ml
index 9a6f06f..078baa5 100644
--- a/info/control/driver/driver.ml
+++ b/info/control/driver/driver.ml
@@ -313,29 +313,47 @@ type ax12_action = {
aa_velocity : int;
}
-let set_ax12 = function
- | [] ->
+let set_ax12 actions =
+ lwt () =
+ Lwt_list.iter_p
+ (fun action ->
+ USBCard.call Commands.AX12.goto
+ (get_card card_interface)
+ (action.aa_id,
+ action.aa_position,
+ action.aa_velocity,
+ `Action))
+ actions
+ in
+ lwt () = USBCard.call Commands.AX12.action (get_card card_interface) 0xfe in
+ let rec loop () =
+ lwt delta =
+ Lwt_list.fold_left_s
+ (fun delta action ->
+ lwt pos = USBCard.call Commands.AX12.get_position (get_card card_interface) (action.aa_id, 32000) in
+ return (max delta (abs (pos - action.aa_position))))
+ 0 actions
+ in
+ lwt () = Lwt_unix.sleep 0.1 in
+ if delta < 10 then
return ()
- | [action] ->
- USBCard.call Commands.AX12.goto
- (get_card card_interface)
- (action.aa_id,
- action.aa_position,
- action.aa_velocity,
- `Now)
- | actions ->
- lwt () =
- Lwt_list.iter_p
- (fun action ->
- USBCard.call Commands.AX12.goto
- (get_card card_interface)
- (action.aa_id,
- action.aa_position,
- action.aa_velocity,
- `Action))
- actions
- in
- USBCard.call Commands.AX12.action (get_card card_interface) 0xfe
+ else
+ loop ()
+ in
+ loop ()
+
+let set_rx64 position velocity =
+ lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x20, velocity) in
+ lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x1E, position) in
+ let rec loop () =
+ lwt pos = RX64Card.call Commands.RX64.read16 (get_card card_rx64) (0x24, 2) in
+ lwt () = Lwt_unix.sleep 0.1 in
+ if abs (pos - position) < 10 then
+ return ()
+ else
+ loop ()
+ in
+ loop ()
(* +-----------------------------------------------------------------+
| Grip |
@@ -360,42 +378,39 @@ struct
aa_velocity = 0 }]
let grip_release () =
- USBCard.call Commands.AX12.goto (get_card card) (3, 200, 0, `Now)
+ set_ax12 [{ aa_id = 3;
+ aa_position = 200;
+ aa_velocity = 0 }]
let grip_up () =
- lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x20, 50) in
- lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x1E, 222)
- and () = set_ax12 [{ aa_id = 2;
- aa_position = 180;
- aa_velocity = 70 }] in
+ let thread =
+ lwt () = set_rx64 222 50
+ and () = set_ax12 [{ aa_id = 2;
+ aa_position = 180;
+ aa_velocity = 70 }]
+ in
+ return ()
+ in
lwt () = Lwt_unix.sleep 0.5 in
- lwt load = RX64Card.call Commands.RX64.read16 (get_card card_rx64) (0x28, 2) in
- if load >= 790 then
+ lwt pos = RX64Card.call Commands.RX64.read16 (get_card card_rx64) (0x24, 2) in
+ if pos > 520 then begin
+ cancel thread;
lwt () = RX64Card.call Commands.RX64.write8 (get_card card_rx64) (0x18, 0) in
lwt () = grip_open () in
return false
- else
- let rec loop () =
- lwt pos = RX64Card.call Commands.RX64.read16 (get_card card_rx64) (0x24, 2) in
- if pos <= 225 then
- lwt () = grip_release () in
- return true
- else
- Lwt_unix.sleep 0.1 >> loop ()
- in
- loop ()
+ end else
+ lwt () = thread in
+ return true
let grip_empty_up () =
- lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x20, 50) in
- lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x1E, 222)
+ lwt () = set_rx64 222 50
and () = set_ax12 [{ aa_id = 2;
aa_position = 180;
aa_velocity = 90 }] in
return ()
let grip_down () =
- lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x20, 50) in
- lwt () = RX64Card.call Commands.RX64.write16 (get_card card_rx64) (0x1E, 536)
+ lwt () = set_rx64 536 50
and () = set_ax12 [{ aa_id = 2;
aa_position = 510;
aa_velocity = 50 };
@@ -406,10 +421,10 @@ struct
let grip_close () =
set_ax12 [{ aa_id = 2;
- aa_position = 574;
+ aa_position = 572;
aa_velocity = 200 };
{ aa_id = 3;
- aa_position = 383;
+ aa_position = 371;
aa_velocity = 200 }]
let () =
hooks/post-receive
--
krobot
|