You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(13) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(50) |
Feb
(137) |
Mar
(84) |
Apr
(36) |
May
(100) |
Jun
(5) |
Jul
|
Aug
(4) |
Sep
(13) |
Oct
(1) |
Nov
(4) |
Dec
(22) |
2011 |
Jan
(4) |
Feb
(9) |
Mar
(113) |
Apr
(76) |
May
(31) |
Jun
(19) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(4) |
Feb
|
Mar
(2) |
Apr
(6) |
May
(19) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(2) |
Apr
(22) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jérémie D. <Ba...@us...> - 2011-05-27 17:05:27
|
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 ac58fcf9777f7ccd645c408224c34dc2c5f3ce85 (commit) from c5fbd9bd2e6001ab07cbe63de4a8859f91ed75c8 (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 ac58fcf9777f7ccd645c408224c34dc2c5f3ce85 Author: Jérémie Dimino <je...@di...> Date: Fri May 27 19:04:35 2011 +0200 [krobot_planner] better path finding ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/src/tools/krobot_planner.ml b/info/control2011/src/tools/krobot_planner.ml index d6d1796..f980c86 100644 --- a/info/control2011/src/tools/krobot_planner.ml +++ b/info/control2011/src/tools/krobot_planner.ml @@ -98,7 +98,11 @@ module Dijkstra = let sqr x = x *. x -let dist = object_radius +. robot_size /. 2. +(* Distance from borders to the robot. *) +let border_safety_distance = sqrt (sqr robot_size /. 2.) +. 0.05 + +(* Minimum distance from the center of objects to the center robot. *) +let object_safety_distance = object_radius +. robot_size /. 2. (* Test whether there is an intersection between the line (va, vb) and one of the objects. *) @@ -110,7 +114,7 @@ let rec intersection va vb objects = (* Compute coefficients of the polynomial. *) let a = sqr (distance va vb) and b = -2. *. prod (vector va vc) (vector va vb) - and c = sqr (distance va vc) -. sqr dist in + and c = sqr (distance va vc) -. sqr object_safety_distance in let delta = sqr b -. 4. *. a *. c in if delta < 0. then intersection va vb rest @@ -124,15 +128,29 @@ let rec intersection va vb objects = let find_path planner src dst = (* Build bounding boxes. *) - let r = object_radius +. robot_size in + let r1 = object_radius +. robot_size in + let r2 = object_radius +. robot_size *. 3. /. 4. in let vertices = List.fold_left (fun set obj -> - Vertice_set.add { x = obj.x; y = obj.y -. r } - (Vertice_set.add { x = obj.x +. r; y = obj.y } - (Vertice_set.add { x = obj.x; y = obj.y +. r } - (Vertice_set.add { x = obj.x -. r; y = obj.y } - set)))) + let add x y set = + if (x >= border_safety_distance + && x <= world_width -. border_safety_distance + && y >= border_safety_distance + && y <= world_height -. border_safety_distance) then + Vertice_set.add { x; y } set + else + set + in + let set = add obj.x (obj.y -. r1) set in + let set = add (obj.x +. r1) obj.y set in + let set = add obj.x (obj.y +. r1) set in + let set = add (obj.x -. r1) obj.y set in + let set = add obj.x (obj.y -. r2) set in + let set = add (obj.x +. r2) obj.y set in + let set = add obj.x (obj.y +. r2) set in + let set = add (obj.x -. r2) obj.y set in + set) Vertice_set.empty planner.objects in (* Add the source and the destination. *) hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-05-26 19:38:34
|
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 c5fbd9bd2e6001ab07cbe63de4a8859f91ed75c8 (commit) from 398467100644cc193109027565a75a116aff0151 (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 c5fbd9bd2e6001ab07cbe63de4a8859f91ed75c8 Author: Jérémie Dimino <je...@di...> Date: Thu May 26 21:37:26 2011 +0200 [info] start of path planning ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/_oasis b/info/control2011/_oasis index eea9438..90561d3 100644 --- a/info/control2011/_oasis +++ b/info/control2011/_oasis @@ -153,7 +153,7 @@ Executable "krobot-planner" Install: true CompiledObject: best MainIs: krobot_planner.ml - BuildDepends: krobot, lwt.syntax + BuildDepends: krobot, lwt.syntax, ocamlgraph Executable "krobot-objects" Path: src/tools diff --git a/info/control2011/_tags b/info/control2011/_tags index 8d7cff0..20c227a 100644 --- a/info/control2011/_tags +++ b/info/control2011/_tags @@ -2,7 +2,7 @@ <src/interfaces/*.ml>: -syntax_camlp4o # OASIS_START -# DO NOT EDIT (digest: 727ec33b4060953b9ebbde97c6c14363) +# DO NOT EDIT (digest: 1d3ff08546f26990d32be2616f7495bc) # Library krobot "src/lib": include "src/lib/krobot.cmxs": use_krobot @@ -109,9 +109,11 @@ <examples/*.ml{,i}>: pkg_lwt.react # Executable krobot-planner <src/tools/krobot_planner.{native,byte}>: use_krobot +<src/tools/krobot_planner.{native,byte}>: pkg_ocamlgraph <src/tools/krobot_planner.{native,byte}>: pkg_lwt.unix <src/tools/krobot_planner.{native,byte}>: pkg_lwt.syntax <src/tools/krobot_planner.{native,byte}>: pkg_lwt.react +<src/tools/*.ml{,i}>: pkg_ocamlgraph # Executable krobot-record <src/tools/krobot_record.{native,byte}>: use_krobot <src/tools/krobot_record.{native,byte}>: pkg_lwt.unix diff --git a/info/control2011/setup.ml b/info/control2011/setup.ml index c202ad2..33d9d54 100644 --- a/info/control2011/setup.ml +++ b/info/control2011/setup.ml @@ -1,7 +1,7 @@ (* setup.ml generated for the first time by OASIS v0.2.0~alpha1 *) (* OASIS_START *) -(* DO NOT EDIT (digest: 79727b7548ae5f100d31519956433b0b) *) +(* DO NOT EDIT (digest: b50f9201082ebd643759d008620ee0bf) *) (* Regenerated by OASIS v0.2.0 Visit http://oasis.forge.ocamlcore.org for more information and @@ -5575,7 +5575,8 @@ let setup_t = bs_build_depends = [ InternalLibrary "krobot"; - FindlibPackage ("lwt.syntax", None) + FindlibPackage ("lwt.syntax", None); + FindlibPackage ("ocamlgraph", None) ]; bs_build_tools = [ExternalTool "ocamlbuild"]; bs_c_sources = []; diff --git a/info/control2011/src/lib/krobot_bus.ml b/info/control2011/src/lib/krobot_bus.ml index 101151b..3d423b8 100644 --- a/info/control2011/src/lib/krobot_bus.ml +++ b/info/control2011/src/lib/krobot_bus.ml @@ -32,6 +32,7 @@ type message = | Trajectory_go of float * float * float * float | Trajectory_stop | Trajectory_moving of bool + | Trajectory_find_path | Objects of vertice list type t = { @@ -102,6 +103,8 @@ let string_of_message = function sprintf "Trajectory_moving %B" b + | Trajectory_find_path -> + "Trajectory_find_path" | Objects objects -> sprintf "Objects [%s]" diff --git a/info/control2011/src/lib/krobot_bus.mli b/info/control2011/src/lib/krobot_bus.mli index 28a37a2..dd7f2e3 100644 --- a/info/control2011/src/lib/krobot_bus.mli +++ b/info/control2011/src/lib/krobot_bus.mli @@ -50,6 +50,8 @@ type message = (** Stop the current trajectory. *) | Trajectory_moving of bool (** Is the robot following a trajectory ? *) + | Trajectory_find_path + (** Find a path avoiding objects. *) (** Objects *) diff --git a/info/control2011/src/lib/krobot_config.ml b/info/control2011/src/lib/krobot_config.ml index 761a334..9bcbd9c 100644 --- a/info/control2011/src/lib/krobot_config.ml +++ b/info/control2011/src/lib/krobot_config.ml @@ -14,3 +14,4 @@ let wheels_diameter = 0.098 let wheels_distance = 0.150 let wheels_position = robot_size /. 2. let rotary_beacon_index_pos = (4. *. atan 1.) /. 2. (* left side *) +let object_radius = 0.1 diff --git a/info/control2011/src/lib/krobot_config.mli b/info/control2011/src/lib/krobot_config.mli index 266daaf..fc140a8 100644 --- a/info/control2011/src/lib/krobot_config.mli +++ b/info/control2011/src/lib/krobot_config.mli @@ -31,3 +31,6 @@ val wheels_position : float val rotary_beacon_index_pos : float (** The angle of the rotary beacon index angle with respect to the robot's front *) + +val object_radius : float + (** Radius of objects. *) diff --git a/info/control2011/src/tools/krobot_planner.ml b/info/control2011/src/tools/krobot_planner.ml index b15a336..d6d1796 100644 --- a/info/control2011/src/tools/krobot_planner.ml +++ b/info/control2011/src/tools/krobot_planner.ml @@ -59,6 +59,111 @@ type planner = { } (* +-----------------------------------------------------------------+ + | Motion planning | + +-----------------------------------------------------------------+ *) + +module Vertice_set = Set.Make(struct type t = vertice let compare = compare end) +module Vertice_map = Map.Make(struct type t = vertice let compare = compare end) + +module Dijkstra = + Graph.Path.Dijkstra + (struct + type t = Vertice_set.t Vertice_map.t + + module V = struct + type t = vertice + let compare = Pervasives.compare + let hash = Hashtbl.hash + let equal = (=) + end + + module E = struct + type t = vertice * vertice + type label = float + let label (a, b) = distance a b + let dst (a, b) = b + end + + let iter_succ_e f graph v = + Vertice_set.iter (fun v' -> f (v, v')) (Vertice_map.find v graph) + end) + (struct + type label = float + type t = float + let weight d = d + let compare a b = compare a b + let add a b = a +. b + let zero = 0. + end) + +let sqr x = x *. x + +let dist = object_radius +. robot_size /. 2. + +(* Test whether there is an intersection between the line (va, vb) and + one of the objects. *) +let rec intersection va vb objects = + match objects with + | [] -> + false + | vc :: rest -> + (* Compute coefficients of the polynomial. *) + let a = sqr (distance va vb) + and b = -2. *. prod (vector va vc) (vector va vb) + and c = sqr (distance va vc) -. sqr dist in + let delta = sqr b -. 4. *. a *. c in + if delta < 0. then + intersection va vb rest + else + let k1 = (-. b -. sqrt delta) /. (2. *. a) + and k2 = (-. b +. sqrt delta) /. (2. *. a) in + if (k1 >= 0. && k1 <= 1.) || (k2 >= 0. && k2 <= 1.) then + true + else + intersection va vb rest + +let find_path planner src dst = + (* Build bounding boxes. *) + let r = object_radius +. robot_size in + let vertices = + List.fold_left + (fun set obj -> + Vertice_set.add { x = obj.x; y = obj.y -. r } + (Vertice_set.add { x = obj.x +. r; y = obj.y } + (Vertice_set.add { x = obj.x; y = obj.y +. r } + (Vertice_set.add { x = obj.x -. r; y = obj.y } + set)))) + Vertice_set.empty planner.objects + in + (* Add the source and the destination. *) + let vertices = Vertice_set.add src (Vertice_set.add dst vertices) in + (* Build the graph. *) + let graph = + Vertice_set.fold + (fun va map -> + let successors = + Vertice_set.fold + (fun vb set -> + if va <> vb then + if intersection va vb planner.objects then + set + else + Vertice_set.add vb set + else + set) + vertices Vertice_set.empty + in + Vertice_map.add va successors map) + vertices Vertice_map.empty + in + try + (* Compute the shortest path. *) + let path, weight = Dijkstra.shortest_path graph src dst in + List.map (fun (a, b) -> b) path + with Not_found -> + [dst] + +(* +-----------------------------------------------------------------+ | Primitives | +-----------------------------------------------------------------+ *) @@ -292,6 +397,15 @@ let handle_message planner (timestamp, message) = set_vertices planner []; ignore (Krobot_message.send planner.bus (Unix.gettimeofday (), Motor_stop(1.0,0.0))) + | Trajectory_find_path -> + if not planner.moving then begin + match planner.vertices with + | v :: _ -> + set_vertices planner (find_path planner planner.position v) + | _ -> + () + end + | Objects l -> planner.objects <- l diff --git a/info/control2011/src/tools/krobot_viewer.ml b/info/control2011/src/tools/krobot_viewer.ml index 98a36fc..ea98946 100644 --- a/info/control2011/src/tools/krobot_viewer.ml +++ b/info/control2011/src/tools/krobot_viewer.ml @@ -531,6 +531,13 @@ lwt () = false)); ignore + (ui#button_find#event#connect#button_release + (fun ev -> + if GdkEvent.Button.button ev = 1 then + ignore (Krobot_bus.send viewer.bus (Unix.gettimeofday (), Trajectory_find_path)); + false)); + + ignore (ui#button_go#event#connect#button_release (fun ev -> if GdkEvent.Button.button ev = 1 then diff --git a/info/control2011/src/tools/krobot_viewer_ui.glade b/info/control2011/src/tools/krobot_viewer_ui.glade index b4facd3..351e0c4 100644 --- a/info/control2011/src/tools/krobot_viewer_ui.glade +++ b/info/control2011/src/tools/krobot_viewer_ui.glade @@ -200,7 +200,7 @@ <child> <widget class="GtkTable" id="table2"> <property name="visible">True</property> - <property name="n_rows">3</property> + <property name="n_rows">4</property> <property name="n_columns">2</property> <child> <widget class="GtkButton" id="button_clear"> @@ -230,8 +230,8 @@ <property name="receives_default">True</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> <child> @@ -244,8 +244,8 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> <child> @@ -256,8 +256,8 @@ <property name="receives_default">True</property> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> </packing> </child> <child> @@ -270,8 +270,23 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> + <widget class="GtkButton" id="button_find"> + <property name="label" translatable="yes">Find a path</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> </packing> </child> </widget> hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2011-05-25 23:08: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 398467100644cc193109027565a75a116aff0151 (commit) from 7ef6ea143df1f677446d35fa3648b018f63b3a71 (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 398467100644cc193109027565a75a116aff0151 Author: Olivier BICHLER <oli...@cr...> Date: Thu May 26 01:08:03 2011 +0200 [Alim AX12] Added PDF export ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Alim_AX12/PCB/PDF/Bottom Layer.pdf b/elec/boards/Alim_AX12/PCB/PDF/Bottom Layer.pdf new file mode 100644 index 0000000..b4d8035 Binary files /dev/null and b/elec/boards/Alim_AX12/PCB/PDF/Bottom Layer.pdf differ diff --git a/elec/boards/Alim_AX12/PCB/PDF/Drill Drawing.pdf b/elec/boards/Alim_AX12/PCB/PDF/Drill Drawing.pdf new file mode 100644 index 0000000..974d1ff Binary files /dev/null and b/elec/boards/Alim_AX12/PCB/PDF/Drill Drawing.pdf differ hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2011-05-25 21:19:03
|
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 7ef6ea143df1f677446d35fa3648b018f63b3a71 (commit) from 74b082d486517c5bcaaf64251587299524b0cf54 (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 7ef6ea143df1f677446d35fa3648b018f63b3a71 Author: Olivier BICHLER <oli...@cr...> Date: Wed May 25 23:18:31 2011 +0200 [Alim AX12] First board revision draft ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Alim_AX12/PCB/ALIM_AX12-1_0.MAX b/elec/boards/Alim_AX12/PCB/ALIM_AX12-1_0.MAX new file mode 100644 index 0000000..1b1408a Binary files /dev/null and b/elec/boards/Alim_AX12/PCB/ALIM_AX12-1_0.MAX differ diff --git a/elec/boards/Alim_AX12/PCB/ALIM_AX12.MNL b/elec/boards/Alim_AX12/PCB/ALIM_AX12.MNL new file mode 100644 index 0000000..5f4d9d4 Binary files /dev/null and b/elec/boards/Alim_AX12/PCB/ALIM_AX12.MNL differ diff --git a/elec/boards/Alim_AX12/Schematic/ALIM_AX12.DSN b/elec/boards/Alim_AX12/Schematic/ALIM_AX12.DSN new file mode 100644 index 0000000..b54028f Binary files /dev/null and b/elec/boards/Alim_AX12/Schematic/ALIM_AX12.DSN differ diff --git a/elec/boards/Alim_AX12/Schematic/ALIM_AX12_0.DBK b/elec/boards/Alim_AX12/Schematic/ALIM_AX12_0.DBK new file mode 100644 index 0000000..0514567 Binary files /dev/null and b/elec/boards/Alim_AX12/Schematic/ALIM_AX12_0.DBK differ diff --git a/elec/boards/Alim_AX12/Schematic/Alim_AX12.opj b/elec/boards/Alim_AX12/Schematic/Alim_AX12.opj new file mode 100644 index 0000000..3de2b31 --- /dev/null +++ b/elec/boards/Alim_AX12/Schematic/Alim_AX12.opj @@ -0,0 +1,87 @@ +(ExpressProject "Alim_AX12" + (ProjectVersion "19981106") + (ProjectType "Analog or A/D Mixed Mode") + (Folder "Design Resources" + (Folder "Library" + (File "c:\krobot\elec\lib\orcad\krobot.olb" + (Type "Schematic Library"))) + (NoModify) + (File ".\alim_ax12.dsn" + (Type "Schematic Design")) + (BuildFileAddedOrDeleted "x") + (CompileFileAddedOrDeleted "x") + (Netlist_TAB "3") + (LAYOUT_Netlist_File "C:\KROBOT\ELEC\BOARDS\ALIM_AX12\PCB\ALIM_AX12.MNL") + (LAYOUT_PCB_Footprint "{PCB Footprint}") + (FALSE) + (LAYOUT_Units "0")) + (Folder "Outputs" + (File "..\pcb\alim_ax12.mnl" + (Type "LAYOUT Netlist File"))) + (Folder "PSpice Resources" + (Folder "Simulation Profiles") + (Folder "Model Libraries" + (Sort User)) + (Folder "Stimulus Files" + (Sort User)) + (Folder "Include Files" + (Sort User))) + (DefaultLibraryBrowseDirectory "library\PSpice") + (PartMRUSelector + (CON3 + (FullPartName "CON3.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (CON2 + (FullPartName "CON2.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (R + (FullPartName "R.Normal") + (LibraryName + "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\PSPICE\ANALOG.OLB") + (DeviceIndex "0")) + (C + (FullPartName "C.Normal") + (LibraryName + "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\PSPICE\ANALOG.OLB") + (DeviceIndex "0")) + ("CAP POL" + (FullPartName "CAP POL.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\DISCRETE.OLB") + (DeviceIndex "0")) + (GND + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0")) + (PTN78020W + (FullPartName "PTN78020W.Normal") + (LibraryName "C:\KROBOT\ELEC\LIB\ORCAD\KROBOT.OLB") + (DeviceIndex "0"))) + (GlobalState + (FileView + (Path "Design Resources") + (Path "Design Resources" + "C:\krobot\elec\boards\Alim_AX12\Schematic\alim_ax12.dsn") + (Path "Design Resources" + "C:\krobot\elec\boards\Alim_AX12\Schematic\alim_ax12.dsn" "SCHEMATIC1") + (Path "Outputs") + (Select "Design Resources" + "C:\krobot\elec\boards\Alim_AX12\Schematic\alim_ax12.dsn" "SCHEMATIC1" + "Schematic")) + (HierarchyView) + (Doc + (Type "COrCapturePMDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 0 318 0 751")) + (Tab 0)) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 318 1884 0 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path "C:\KROBOT\ELEC\BOARDS\ALIM_AX12\SCHEMATIC\ALIM_AX12.DSN") + (Schematic "SCHEMATIC1") + (Page "Schematic"))) + (MPSSessionName "Olivier")) diff --git a/elec/boards/Alim_AX12/Schematic/PDF/Alim_AX12-1.0.pdf b/elec/boards/Alim_AX12/Schematic/PDF/Alim_AX12-1.0.pdf new file mode 100644 index 0000000..b06da08 Binary files /dev/null and b/elec/boards/Alim_AX12/Schematic/PDF/Alim_AX12-1.0.pdf differ diff --git a/elec/lib/OrCAD/KROBOT.LLB b/elec/lib/OrCAD/KROBOT.LLB index 3d38f13..c61cc1f 100644 Binary files a/elec/lib/OrCAD/KROBOT.LLB and b/elec/lib/OrCAD/KROBOT.LLB differ diff --git a/elec/lib/OrCAD/KROBOT.OLB b/elec/lib/OrCAD/KROBOT.OLB index 63ada8a..1219baa 100644 Binary files a/elec/lib/OrCAD/KROBOT.OLB and b/elec/lib/OrCAD/KROBOT.OLB differ hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-05-25 19:18:17
|
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 74b082d486517c5bcaaf64251587299524b0cf54 (commit) from b3d20062e69f317da0894f7b78746c5cf59dd320 (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 74b082d486517c5bcaaf64251587299524b0cf54 Author: Jérémie Dimino <je...@di...> Date: Sat May 21 21:47:56 2011 +0200 [vision] fix bugs ----------------------------------------------------------------------- Changes: diff --git a/info/vision/coupe2011/Makefile b/info/vision/coupe2011/Makefile index 277fe19..838279c 100644 --- a/info/vision/coupe2011/Makefile +++ b/info/vision/coupe2011/Makefile @@ -1,24 +1,9 @@ OBJECTS = camfilter capture capturevideo findBallse fiteellipse_cam fiteellipse_camfilter +CC = g++ +CFLAGS = -ggdb `pkg-config --cflags opencv` +LDFLAGS = `pkg-config --libs opencv` all: $(OBJECTS) clean: rm -f $(OBJECTS) - -camfilter: camfilter.c - $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` - -capture: capture.c - $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` - -capturevideo: capturevideo.c - $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` - -findBallse: findBallse.c - $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` - -fiteellipse_cam: fiteellipse_cam.c - $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` - -fiteellipse_camfilter: fiteellipse_camfilter.c - $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` \ No newline at end of file diff --git a/info/vision/coupe2011/findBallse.c b/info/vision/coupe2011/findBallse.c index a97c54a..8c98664 100644 --- a/info/vision/coupe2011/findBallse.c +++ b/info/vision/coupe2011/findBallse.c @@ -1,3 +1,13 @@ +/* + * findBallse.c + * ------------ + * Copyright : (c) 2008, Xavier Lagorce <la...@cr...> + * (c) 2011, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + */ + #include "cv.h" #include "highgui.h" #include <math.h> @@ -5,7 +15,9 @@ #include <ctype.h> #include <err.h> -#define min(a,b) (((a) < (b)) ? (a) : (b)) +/* +-----------------------------------------------------------------+ + | Parameters | + +-----------------------------------------------------------------+ */ /* The parameters of the color to find in images. */ struct color_params { @@ -17,14 +29,15 @@ struct color_params { /* Global parameters. */ struct color_params params; -// Load the source image. HighGUI use. +/* Load the source image. HighGUI use. */ IplImage *image01 = 0, *image02 = 0, *image03 = 0, *imCont = 0, *imFill = 0, *imHSV = 0; -int affichage = 0; -int slider_pos; +/* Whether to display the result on the screen or not using HighGUI. */ +int display = 0; -void process_image(); -int in_radius(int val, int center, int radius, int max); +/* +-----------------------------------------------------------------+ + | Config file parsing | + +-----------------------------------------------------------------+ */ /* Parse the configuration file and store the result into params. */ void parse_config(char *file_name) @@ -78,82 +91,15 @@ void parse_config(char *file_name) fclose(fp); } -int main( int argc, char** argv ) -{ - int source, c, quit=0; - CvCapture *capture = NULL; - FILE *fichier; - - // Traitement des paramètres de ligne de commande - if (argc < 2) - { - printf("argv[1] : chemin du fichier de paramètres\n"); - printf("argv[2] : (optionnel) si différent de 0, affiche une fenêtre\n"); - printf("argv[3] : (optionnel) numéro de la webcam à utiliser\n"); - return 1; - } - - /* Parse configuration. */ - parse_config(argv[1]); - - affichage = argc >= 3 ? atoi(argv[2]) : 0; - source = argc >= 4 ? atoi(argv[3]) : 0; - - // Ouvre la webcam - capture = cvCaptureFromCAM(source); - - // Create window - if (affichage != 0) - cvNamedWindow("Result", 1); - - // Récupère une image de la webcam - image01 = cvQueryFrame(capture); - - // Création de l'image en niveaux de gris à la taile de l'image prise par la webcam - image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); - - // Même chose avec l'image pour conversion - imHSV = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 3); - - while (!quit) - { - // Récupère une image de la webcam - image01 = cvQueryFrame(capture); +/* +-----------------------------------------------------------------+ + | Image processing | + +-----------------------------------------------------------------+ */ - process_image(); - - // Show the image - if (affichage != 0) - cvShowImage("Result", imCont); - - // Wait for a key stroke; the same function arranges events processing - c = (char)cvWaitKey(10); - - switch (c) - { - case 'q': - quit = 1; - break; - } - - cvReleaseImage(&imCont); - cvReleaseImage(&imFill); - } - - - // On release la mémoire - cvReleaseCapture(&capture); - - cvReleaseImage(&image02); - cvReleaseImage(&image03); - cvReleaseImage(&imHSV); - cvReleaseImage(&imFill); - cvReleaseImage(&imCont); - - if (affichage != 0) - cvDestroyWindow("Result"); - - return 0; +int in_radius(int val, int center, int radius, int max) +{ + int d; + d = abs(val - center); + return (d <= radius) || (max - d <= radius); } // This function the balls, @@ -170,7 +116,7 @@ void process_image() cvCvtColor(image01, imHSV, CV_BGR2HSV); // Génération de l'image avec les résultats - if (affichage != 0) + if (display != 0) { imCont = cvCloneImage(image01); cvZero(imCont); @@ -213,19 +159,19 @@ void process_image() stor = cvCreateMemStorage(0); cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor); - // Threshold the source image. This needful for cvFindContours(). - cvThreshold( image03, image02, slider_pos, 255, CV_THRESH_BINARY ); + if (cont) { + // Threshold the source image. This needful for cvFindContours(). + cvThreshold( image03, image02, params.threshold, 255, CV_THRESH_BINARY ); - // Find all contours. - cvFindContours( image02, stor, &cont, sizeof(CvContour), - CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cvPoint(0,0)); + // Find all contours. + cvFindContours( image02, stor, &cont, sizeof(CvContour), + CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cvPoint(0,0)); - // Clear image. IPL use. - cvZero(image02); + // Clear image. IPL use. + cvZero(image02); - // This cycle draw all contours and approximate it by ellipses. - for(;cont;cont = cont->h_next) - { + // This cycle draw all contours and approximate it by ellipses. + for(;cont;cont = cont->h_next) { int i; // Indicator of cycle. int count = cont->total; // This is number point in contour CvPoint center; @@ -246,11 +192,10 @@ void process_image() cvCvtSeqToArray(cont, PointArray, CV_WHOLE_SEQ); // Convert CvPoint set to CvBox2D32f set. - for(i=0; i<count; i++) - { - PointArray2D32f[i].x = (float)PointArray[i].x; - PointArray2D32f[i].y = (float)PointArray[i].y; - } + for(i=0; i<count; i++) { + PointArray2D32f[i].x = (float)PointArray[i].x; + PointArray2D32f[i].y = (float)PointArray[i].y; + } // Fits ellipse to current contour. cvFitEllipse(PointArray2D32f, count, box); @@ -265,8 +210,11 @@ void process_image() // On ne dessine le contour et l'ellipse que si son rayon est dans les bornes meanRad = (size.width + size.height) / 2; - if (meanRad >= params.minCont && meanRad <= params.maxCont) - { + if (meanRad >= params.minCont && meanRad <= params.maxCont) { + /* Print ellipsis parameters on stdout. */ + printf("%d %d %d %d %f\n", center.x, center.y, size.width, size.height, box->angle); + + if (display) { // Draw current contour. cvDrawContours(imCont,cont,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1,8,cvPoint(0,0)); @@ -275,24 +223,103 @@ void process_image() box->angle, 0, 360, CV_RGB(255,0,0), 1, CV_AA, 0); } + } // Free memory. - free(imCont->roi); imCont->roi = NULL; free(PointArray); free(PointArray2D32f); free(box); - } + } // On libère la mémoire + if (display) { + free(imCont->roi); + imCont->roi = NULL; + } cvReleaseMemStorage(&stor); cvReleaseImage(&image02); cvReleaseImage(&imFill); } -int in_radius(int val, int center, int radius, int max) +/* +-----------------------------------------------------------------+ + | Entry point | + +-----------------------------------------------------------------+ */ + +int main( int argc, char** argv ) { - int d; - d = abs(val - center); - return min(d,max - d) <= radius; + int source, c, quit=0; + CvCapture *capture = NULL; + FILE *fichier; + + // Traitement des paramètres de ligne de commande + if (argc < 2) + { + printf("argv[1] : chemin du fichier de paramètres\n"); + printf("argv[2] : (optionnel) si différent de 0, affiche une fenêtre\n"); + printf("argv[3] : (optionnel) numéro de la webcam à utiliser\n"); + return 1; + } + + /* Parse configuration. */ + parse_config(argv[1]); + + display = argc >= 3 ? atoi(argv[2]) : 0; + source = argc >= 4 ? atoi(argv[3]) : 0; + + // Ouvre la webcam + capture = cvCaptureFromCAM(source); + + // Create window + if (display != 0) + cvNamedWindow("Result", 1); + + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + // Création de l'image en niveaux de gris à la taile de l'image prise par la webcam + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + + // Même chose avec l'image pour conversion + imHSV = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 3); + + while (!quit) + { + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + process_image(); + + // Show the image + if (display != 0) { + cvShowImage("Source", image01); + cvShowImage("Result", imCont); + } + + // Wait for a key stroke; the same function arranges events processing + c = (char)cvWaitKey(10); + + switch (c) + { + case 'q': + quit = 1; + break; + } + + cvReleaseImage(&imCont); + } + + // On release la mémoire + cvReleaseCapture(&capture); + + cvReleaseImage(&image02); + cvReleaseImage(&image03); + cvReleaseImage(&imHSV); + cvReleaseImage(&imFill); + cvReleaseImage(&imCont); + + if (display != 0) + cvDestroyWindow("Result"); + + return 0; } hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-05-21 17:27:58
|
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 b3d20062e69f317da0894f7b78746c5cf59dd320 (commit) from fd338215ec279f96b2992d7faf8e26fe866fbefe (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 b3d20062e69f317da0894f7b78746c5cf59dd320 Author: Jérémie Dimino <je...@di...> Date: Sat May 21 19:26:51 2011 +0200 [vision] copy the coupe2008 folder to coupe2011 and add config file parsing to findBalles ----------------------------------------------------------------------- Changes: diff --git a/info/vision/coupe2011/Makefile b/info/vision/coupe2011/Makefile new file mode 100644 index 0000000..277fe19 --- /dev/null +++ b/info/vision/coupe2011/Makefile @@ -0,0 +1,24 @@ +OBJECTS = camfilter capture capturevideo findBallse fiteellipse_cam fiteellipse_camfilter + +all: $(OBJECTS) + +clean: + rm -f $(OBJECTS) + +camfilter: camfilter.c + $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` + +capture: capture.c + $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` + +capturevideo: capturevideo.c + $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` + +findBallse: findBallse.c + $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` + +fiteellipse_cam: fiteellipse_cam.c + $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` + +fiteellipse_camfilter: fiteellipse_camfilter.c + $(CXX) $^ -o $@ `pkg-config --cflags --libs opencv` \ No newline at end of file diff --git a/info/vision/coupe2011/camfilter.c b/info/vision/coupe2011/camfilter.c new file mode 100644 index 0000000..f90c95f --- /dev/null +++ b/info/vision/coupe2011/camfilter.c @@ -0,0 +1,283 @@ +#include <cv.h> +#include <highgui.h> +#include <math.h> +#include <stdio.h> + +int slider_pos = 70, minCont = 20, maxCont = 100; +int cenH=90, radH=180, minS=0, maxS=255, minV=0, maxV=255; + +// Load the source image. HighGUI use. +IplImage *image01 = 0, *image02 = 0, *image03 = 0; +IplImage *imH = 0, *imS = 0, *imV = 0, *imHSV = 0, *imFil = 0, *imCont = 0; + +void process_image(int h); +int in_radius(int val, int center, int radius, int max); + +int main( int argc, char** argv ) +{ + int ncams, source, c, quit=0; + CvCapture *capture = NULL; + + // Ouvre la webcam + ncams = (argc >= 2 ? atoi(argv[1]) : 1); + source = (argc >= 3 ? atoi(argv[2]) : 0); + capture = cvCaptureFromCAM(source); + + // Create windows. + cvNamedWindow("H",1); + cvNamedWindow("S",1); + cvNamedWindow("V",1); + cvNamedWindow("Source", 1); + cvNamedWindow("Filtered",1); + cvNamedWindow("Result", 1); + + // Create toolbars. HighGUI use. + cvCreateTrackbar( "Threshold", "Result", &slider_pos, 255, NULL); + cvCreateTrackbar( "Min radius", "Result", &minCont, 255, NULL); + cvCreateTrackbar( "Max radius", "Result", &maxCont, 255, NULL); + + cvCreateTrackbar("Center", "H", &cenH, 180, NULL); + cvCreateTrackbar("Radius", "H", &radH, 180, NULL); + cvCreateTrackbar("Min", "S", &minS, 255, NULL); + cvCreateTrackbar("Max", "S", &maxS, 255, NULL); + cvCreateTrackbar("Min", "V", &minV, 255, NULL); + cvCreateTrackbar("Max", "V", &maxV, 255, NULL); + + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + // Création de l'image03 à la taile de l'image prise par la webcam + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + imH = cvCloneImage(image03); cvZero(imH); + imS = cvCloneImage(image03); cvZero(imS); + imV = cvCloneImage(image03); cvZero(imV); + + // Même chose avec image05 + imHSV = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 3); + + while (!quit) + { + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + process_image(0); + + // Show the images. + cvShowImage("H", imH); + cvShowImage("S", imS); + cvShowImage("V", imV); + cvShowImage("Source", image01); + cvShowImage("Filtered", imFil); + cvShowImage("Result", imCont); + + // Wait for a key stroke; the same function arranges events processing + c = (char)cvWaitKey(10); + + switch (c) + { + case 'c': + source = (source+1) % ncams; + cvReleaseCapture(&capture); + capture = cvCaptureFromCAM(source); + cvReleaseImage(&image03); + image01 = cvQueryFrame(capture); + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + imHSV = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 3); + imH = cvCloneImage(image03); + imS = cvCloneImage(image03); + imV = cvCloneImage(image03); + break; + case 'p': + printf("\nH (center,radius) : (%d,%d)\n", cenH, radH); + printf("S (min,max) : (%d,%d)\n", minS, maxS); + printf("V (min,max) : (%d,%d)\n", minV, maxV); + printf("Threshold : %d\n", slider_pos); + printf("Sort radius (min,max) : (%d,%d)\n", minCont, maxCont); + break; + case 'P': + putchar('\n'); + printf("centH = %d\n", cenH); + printf("radH = %d\n", radH); + printf("minS = %d\n", minS); + printf("maxS = %d\n", maxS); + printf("minV = %d\n", minV); + printf("maxV = %d\n", maxV); + printf("threshold = %d\n", slider_pos); + printf("minCont = %d\n", minCont); + printf("maxCont = %d\n", maxCont); + break; + case 'q': + quit = 1; + break; + } + + cvReleaseImage(&imCont); + cvReleaseImage(&imFil); + } + + + // On release la mémoire + cvReleaseCapture(&capture); + + cvReleaseImage(&image02); + cvReleaseImage(&image03); + cvReleaseImage(&imH); + cvReleaseImage(&imS); + cvReleaseImage(&imV); + cvReleaseImage(&imHSV); + cvReleaseImage(&imFil); + cvReleaseImage(&imCont); + + cvDestroyWindow("H"); + cvDestroyWindow("S"); + cvDestroyWindow("V"); + cvDestroyWindow("Source"); + cvDestroyWindow("Result"); + + return 0; +} + +// Define trackbar callback functon. This function find contours, +// draw it and approximate it by ellipses. +void process_image(int h) +{ + CvMemStorage* stor; + CvSeq* cont; + CvBox2D32f* box; + CvPoint* PointArray; + CvPoint2D32f* PointArray2D32f; + int i, meanRad; + + // Filtre de couleur + cvCvtColor(image01, imHSV, CV_BGR2HSV); + imFil = cvCloneImage(image01); + imCont = cvCloneImage(image01); + + // Génération des images H,S,V + for (i=0 ; i < imHSV->width*imHSV->height; i++) + { + imH->imageData[i] = in_radius(imHSV->imageData[3*i], cenH, radH, 180) ? 255 : 0; + imS->imageData[i] = (((uchar)imHSV->imageData[3*i+1] >= minS) && ((uchar)imHSV->imageData[3*i+1] <= maxS)) ? 255 : 0; + imV->imageData[i] = (((uchar)imHSV->imageData[3*i+2] >= minV) && ((uchar)imHSV->imageData[3*i+2] <= maxV)) ? 255 : 0; + } + + for (i=0 ; i < imFil->width*imFil->height; i++) + { + if (in_radius(imHSV->imageData[3*i], cenH, radH, 180) && + (uchar)imHSV->imageData[3*i+1] >= minS && (uchar)imHSV->imageData[3*i+1] <= maxS && + (uchar)imHSV->imageData[3*i+2] >= minV && (uchar)imHSV->imageData[3*i+2] <= maxV ) + { + // On laisse la couleur du pixel + } + else + { + // sinon on l'efface + imFil->imageData[3*i ] = 0; + imFil->imageData[3*i+1] = 0; + imFil->imageData[3*i+2] = 0; + } + } + + // Conversion en niveaux de gris de l'image filtrée + cvCvtColor(imFil, image03, CV_BGR2GRAY); + + // Create the destination images + image02 = cvCloneImage( image03 ); + + // Create dynamic memory storage and sequence. + stor = cvCreateMemStorage(0); + cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor); + + // Threshold the source image. This needful for cvFindContours(). + cvThreshold( image03, image02, slider_pos, 255, CV_THRESH_BINARY ); + + // Find all contours. + cvFindContours( image02, stor, &cont, sizeof(CvContour), + CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cvPoint(0,0)); + + // Clear images. IPL use. + cvZero(image02); + cvZero(imCont); + + // On fixe la ROI de l'image pour ne pas dessiner à l'extérieur + imCont->roi = (_IplROI*)malloc(sizeof(IplROI)); + imCont->roi->coi = 0; + imCont->roi->xOffset = 0; + imCont->roi->yOffset = 0; + imCont->roi->width = imCont->width; + imCont->roi->height = imCont->height; + + // This cycle draw all contours and approximate it by ellipses. + for(;cont;cont = cont->h_next) + { + int i; // Indicator of cycle. + int count = cont->total; // This is number point in contour + CvPoint center; + CvSize size; + + // Number point must be more than or equal to 6 (for cvFitEllipse_32f). + if( count < 6 ) + continue; + + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + PointArray2D32f= (CvPoint2D32f*)malloc( count*sizeof(CvPoint2D32f) ); + + // Alloc memory for ellipse data. + box = (CvBox2D32f*)malloc(sizeof(CvBox2D32f)); + + // Get contour point set. + cvCvtSeqToArray(cont, PointArray, CV_WHOLE_SEQ); + + // Convert CvPoint set to CvBox2D32f set. + for(i=0; i<count; i++) + { + PointArray2D32f[i].x = (float)PointArray[i].x; + PointArray2D32f[i].y = (float)PointArray[i].y; + } + + // Fits ellipse to current contour. + cvFitEllipse(PointArray2D32f, count, box); + + // Convert ellipse data from float to integer representation. + center.x = cvRound(box->center.x); + center.y = cvRound(box->center.y); + size.width = cvRound(box->size.width*0.5); + size.height = cvRound(box->size.height*0.5); + box->angle = -box->angle; + + // On ne dessine le contour et l'ellipse que si son rayon est dans les bornes + meanRad = (size.width + size.height) / 2; + + if (meanRad >= minCont && meanRad <= maxCont) + { + // Draw current contour. + cvDrawContours(imCont,cont,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1,8,cvPoint(0,0)); + + // Draw ellipse. + cvEllipse(imCont, center, size, + box->angle, 0, 360, + CV_RGB(255,0,0), 1, CV_AA, 0); + } + + // Free memory. + free(imCont->roi); imCont->roi = NULL; + free(PointArray); + free(PointArray2D32f); + free(box); + + } + + // On libère la mémoire + cvReleaseMemStorage(&stor); + cvReleaseImage(&image02); +} + +#define min(a,b) (((a) < (b)) ? (a) : (b)) + +int in_radius(int val, int center, int radius, int max) +{ + int d; + d = abs(val - center); + return min(d,max - d) <= radius; +} diff --git a/info/vision/coupe2011/capture.c b/info/vision/coupe2011/capture.c new file mode 100644 index 0000000..168a74f --- /dev/null +++ b/info/vision/coupe2011/capture.c @@ -0,0 +1,62 @@ +// Programme permettant de voir l'image d'une webcam +// et d'en faire des shots + +#include "cv.h" +#include "highgui.h" +#include <stdio.h> +#include <string.h> + +int main(int argc, char** argv) +{ + CvCapture *capture = NULL; + IplImage *frame = NULL; + unsigned int compteur = 0, source = 0, ncams; + char c, file[51]; + + ncams = (argc == 2 ? atoi(argv[1]) : 1); + capture = cvCaptureFromCAM(source); + + printf("Programme de capture d'image depuis une webcam\n\n"); + printf("Commandes :\n"); + printf("\tq : quitter\n"); + printf("\tc : cycler au travers des différentes webcam coonectées\n"); + printf("\tEspace : sauvegarder une image\n\n"); + printf("\t\tPasser en argument le nombre de webcams si plus d'une.\n\n\n"); + + cvNamedWindow("Capture", 0); + + while (1) + { + frame = cvQueryFrame(capture); + if(frame==NULL) + { + printf("Impossible de lire l'image !\n"); + } + else + { + cvShowImage("Capture", frame); + + c = (char)cvWaitKey(10); + + if (c=='q') break; + switch (c) + { + case 'c' : + source = (source + 1 ) % ncams; + cvReleaseCapture(&capture); + capture = cvCaptureFromCAM(source); + break; + + case ' ' : + compteur++; + sprintf(file, "img%d.jpg", compteur); + cvSaveImage(file,frame); + } + } + } + + cvReleaseCapture(&capture); + cvDestroyWindow("Capture"); + + return 0; +} diff --git a/info/vision/coupe2011/capturevideo.c b/info/vision/coupe2011/capturevideo.c new file mode 100644 index 0000000..a398ace --- /dev/null +++ b/info/vision/coupe2011/capturevideo.c @@ -0,0 +1,86 @@ +// Programme permettant de récupérer une video par la webcam +// sous forme d'une série d'images tiff + +#include "cv.h" +#include "highgui.h" +#include <stdio.h> +#include <string.h> + +int main(int argc, char** argv) +{ + CvCapture *capture = NULL; + IplImage *frame = NULL; + unsigned int compteur = 0, source = 0, ncams; + char c, file[60], basename[51], ext[5]; + int isFilming = 0; + double t; + + ncams = (argc == 2 ? atoi(argv[1]) : 1); + capture = cvCaptureFromCAM(source); + + printf("Programme de capture de video depuis une webcam\n\n"); + printf("Commandes :\n"); + printf("\tq : quitter\n"); + printf("\tc : cycler au travers des différentes webcam coonectées\n"); + printf("\t\t(ne marche que quand le film n'est pas en cours d'acquisition\n"); + printf("\tEspace : commencer/areter de filmer\n\n"); + printf("\t\tPasser en argument le nombre de webcams si plus d'une.\n\n\n"); + + printf("\n\nNom de la série d'images : "); + scanf("%s", basename); + printf("\nExtension des images : "); + scanf("%s", ext); + + cvNamedWindow("Capture", 0); + + t = (double) cvGetTickCount(); + + while (1) + { + // On récupère une image + frame = cvQueryFrame(capture); + if(frame==NULL) + { + printf("Impossible de lire l'image !\n"); + } + else + { + // On l'affiche dans la fenêtre + cvShowImage("Capture", frame); + + c = (char)cvWaitKey(5); + + // On gère l'appui sur une touche du clavier + if (c=='q') break; + switch (c) + { + case 'c' : + if (!isFilming) + { + source = (source + 1 ) % ncams; + cvReleaseCapture(&capture); + capture = cvCaptureFromCAM(source); + break; + } + + case ' ' : + isFilming = !isFilming; + } + + // Si on doit filmer, on vérifie qu'il est temps de prendre une image + // On filme a 25 images par secondes + if (isFilming && ((double)cvGetTickCount() - t >= 0.04)) + { + // On prend une image et on remet à jour le compteur de temps + compteur++; + sprintf(file, "%s%.3d.%s", basename, compteur, ext); + cvSaveImage(file, frame); + } + } + } + + cvReleaseCapture(&capture); + cvDestroyWindow("Capture"); + + return 0; +} diff --git a/info/vision/coupe2011/constructionPositifs.c b/info/vision/coupe2011/constructionPositifs.c new file mode 100644 index 0000000..32fe1c8 --- /dev/null +++ b/info/vision/coupe2011/constructionPositifs.c @@ -0,0 +1,198 @@ +// Programme permettant de traiter une série d'images et de créer une liste +// des fichiers avec les occurences d'un objet dans celles-ci + +#include "cv.h" +#include "highgui.h" +#include <stdio.h> +#include <string.h> + +IplImage *image = NULL; +CvPoint origin; +CvRect selection; +int select_object = 0; + +// Fonction de callback pour gérer la selection à la souris +void on_mouse(int event, int x, int y, int flags, void* param) +{ + if (image != NULL) + { + if (image->origin) + { + x = image->width - x; + y = image->height - y; + } + + // Mise à jour de la zone de sélection + if (select_object) + { + selection.x = MIN(x, origin.x); + selection.y = MIN(y, origin.y); + selection.width = selection.x + CV_IABS(x - origin.x); + selection.height = selection.y + CV_IABS(y-origin.y); + + selection.x = MAX(selection.x, 0); + selection.y = MAX(selection.y, 0); + selection.width = MIN(selection.width, image->width); + selection.height = MIN(selection.height, image->height); + selection.width -= selection.x; + selection.height -= selection.y; + } + + // Gestion des évènements souris + switch(event) + { + case CV_EVENT_LBUTTONDOWN: + // On commence une phase de sélection + origin = cvPoint(x,y); + selection = cvRect(x,y,0,0); + select_object = 1; + break; + case CV_EVENT_LBUTTONUP: + // On termine une phase de sélection + select_object = 0; + if (selection.width > 0 && selection.height > 0) + { + // action à effectuer après la sélection + // On ne fait rien, l'action est exécutée par la boucle principale + } + break; + } + } + + return; +} + + +// Fonction principale +int main(int argc, char** argv) +{ + IplImage *frame = NULL; + int i, j, nbrObjets, quit=0, imgsuiv=0; + CvRect objets[10]; + char c, file[51]; + FILE *fichier; + + printf("Programme de generation d'une liste d'images positives\n"); + printf("pour la generation d'une base de donnees de reconnaissance d'objet\n\n"); + printf("Utilisation : passer la liste d'images a traiter en argument.\n\n"); + printf("Commandes :\n"); + printf("\tq : quitter\n"); + printf("\t<ESPACE> : valider la selection courante\n"); + printf("\t<ESC> : annuler les selections de l'image courante\n"); + printf("\t<ENTREE> : valider les selections et passer a l'image suivante\n\n\n"); + + if (argc < 2) + { + printf("Pas assez d'arguments\n"); + return 1; + } + + printf("Nom du fichier a ecrire (le fichier sera ecrase) : "); + scanf("%s", file); + printf("\n\n\n"); + + if ( (fichier = fopen(file, "w+")) == NULL) + { + printf("Impossible d'ouvrir le fichier destination !\n"); + return 1; + } + + cvNamedWindow("Image courante", 0); + cvSetMouseCallback("Image courante", on_mouse, 0); + + for (i=1; i < argc && !quit; i++) + { + printf("Image : %s\n", argv[i]); + printf("===================================================\n\n"); + + if ( (image = cvLoadImage(argv[i], 1)) == NULL ) + { + printf("\tImpossible de charger l'image...\n\n\n\n"); + continue; + } + cvShowImage("Image courante", image); + + // On alloue les buffers si ce n'est pa déjà fait + if (frame == NULL) + { + frame = cvCreateImage(cvGetSize(image), 8, 3); + frame->origin = image->origin; + } + + // il n'y a pas d'objet + nbrObjets = 0; + // On efface une éventuelle sélection + selection.width = 0; + selection.height = 0; + // On boucle jusqu'à devoir passer à l'image suivante + imgsuiv=0; + + while (!imgsuiv) + { + // On fait le rendu de l'image en ajoutant la zone de selection + // On travaille sur une copie de l'image + cvCopy(image, frame, 0); + // On rend la zone de selection + if( selection.width > 0 && selection.height > 0 ) + { + cvSetImageROI(frame, selection); + cvXorS(frame, cvScalarAll(255), frame, 0); + cvResetImageROI(frame); + } + + // On affiche l'image + cvShowImage("Image courante", frame); + + // On répond aux entrées utilisateur + c = (char)cvWaitKey(10); + + switch (c) + { + case 'q' : + // On passe à l'image suivante + imgsuiv=1; + // En fait, non, on quitte + quit=1; + break; + + case 27 : // <ESC> + nbrObjets = 0; + break; + + case 10 : // <ENTREE> + fprintf(fichier, "%s", argv[i]); + if (nbrObjets > 0) + { + fprintf(fichier, " %d", nbrObjets); + for (j = 0; j < nbrObjets; j++) + fprintf(fichier, " %d %d %d %d", + objets[j].x, objets[j].y, objets[j].width, objets[j].height); + } + fprintf(fichier, "\n"); + // On passe à l'image suivante + imgsuiv=1; + break; + + case 32 : // <ESPACE> + if (selection.width > 0 && selection.height > 0) + { + objets[nbrObjets] = selection; + nbrObjets++; + printf("\t%d. rect x=%d\ty=%d\t\twidth=%d\theight=%d\n", + nbrObjets, selection.x, selection.y, selection.width, selection.height); + } + // On efface la selection courante de l'ecran + selection.width = 0; + selection.height = 0; + break; + } + } + printf("\n\n\n"); + } + + fclose(fichier); + + cvDestroyWindow("Image courante"); + + return 0; +} diff --git a/info/vision/coupe2011/findBallse.c b/info/vision/coupe2011/findBallse.c new file mode 100644 index 0000000..a97c54a --- /dev/null +++ b/info/vision/coupe2011/findBallse.c @@ -0,0 +1,298 @@ +#include "cv.h" +#include "highgui.h" +#include <math.h> +#include <stdio.h> +#include <ctype.h> +#include <err.h> + +#define min(a,b) (((a) < (b)) ? (a) : (b)) + +/* The parameters of the color to find in images. */ +struct color_params { + int centH, radH, minS, maxS, minV, maxV; + int threshold; + int minCont, maxCont; +}; + +/* Global parameters. */ +struct color_params params; + +// Load the source image. HighGUI use. +IplImage *image01 = 0, *image02 = 0, *image03 = 0, *imCont = 0, *imFill = 0, *imHSV = 0; + +int affichage = 0; +int slider_pos; + +void process_image(); +int in_radius(int val, int center, int radius, int max); + +/* Parse the configuration file and store the result into params. */ +void parse_config(char *file_name) +{ + FILE *fp = fopen(file_name, "r"); + + char *line = NULL; + size_t line_len = 0; + char key[1024]; + int value; + + while (getline(&line, &line_len, fp) != -1) { + char *p; + + /* Skip blanks at the beginning of the line. */ + for (p = line; *p && isblank(*p); p++); + + /* Skip empty lines and comments. */ + if (*p == 0 || *p == '#') continue; + + /* Check that key won't overflow. */ + if (strlen(line) >= 1024) errx(2, "line too long in configuration file"); + + /* Parse the line. */ + if (sscanf(p, "%s = %d \n", &key, &value) != 2) errx(2, "invalid configuration file"); + + /* Assign the value to the right parameter. */ + if (strcmp(key, "centH") == 0) + params.centH = value; + else if (strcmp(key, "radH") == 0) + params.radH = value; + else if (strcmp(key, "minS") == 0) + params.minS = value; + else if (strcmp(key, "maxS") == 0) + params.maxS = value; + else if (strcmp(key, "minV") == 0) + params.minV = value; + else if (strcmp(key, "maxV") == 0) + params.maxV = value; + else if (strcmp(key, "threshold") == 0) + params.threshold = value; + else if (strcmp(key, "minCont") == 0) + params.minCont = value; + else if (strcmp(key, "maxCont") == 0) + params.maxCont = value; + else + errx(2, "invalid key in configuration file: '%s'", key); + } + + if (line) free(line); + fclose(fp); +} + +int main( int argc, char** argv ) +{ + int source, c, quit=0; + CvCapture *capture = NULL; + FILE *fichier; + + // Traitement des paramètres de ligne de commande + if (argc < 2) + { + printf("argv[1] : chemin du fichier de paramètres\n"); + printf("argv[2] : (optionnel) si différent de 0, affiche une fenêtre\n"); + printf("argv[3] : (optionnel) numéro de la webcam à utiliser\n"); + return 1; + } + + /* Parse configuration. */ + parse_config(argv[1]); + + affichage = argc >= 3 ? atoi(argv[2]) : 0; + source = argc >= 4 ? atoi(argv[3]) : 0; + + // Ouvre la webcam + capture = cvCaptureFromCAM(source); + + // Create window + if (affichage != 0) + cvNamedWindow("Result", 1); + + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + // Création de l'image en niveaux de gris à la taile de l'image prise par la webcam + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + + // Même chose avec l'image pour conversion + imHSV = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 3); + + while (!quit) + { + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + process_image(); + + // Show the image + if (affichage != 0) + cvShowImage("Result", imCont); + + // Wait for a key stroke; the same function arranges events processing + c = (char)cvWaitKey(10); + + switch (c) + { + case 'q': + quit = 1; + break; + } + + cvReleaseImage(&imCont); + cvReleaseImage(&imFill); + } + + + // On release la mémoire + cvReleaseCapture(&capture); + + cvReleaseImage(&image02); + cvReleaseImage(&image03); + cvReleaseImage(&imHSV); + cvReleaseImage(&imFill); + cvReleaseImage(&imCont); + + if (affichage != 0) + cvDestroyWindow("Result"); + + return 0; +} + +// This function the balls, +void process_image() +{ + CvMemStorage* stor; + CvSeq* cont; + CvBox2D32f* box; + CvPoint* PointArray; + CvPoint2D32f* PointArray2D32f; + int i, j, meanRad; + + // Changement d'espace de couleur + cvCvtColor(image01, imHSV, CV_BGR2HSV); + + // Génération de l'image avec les résultats + if (affichage != 0) + { + imCont = cvCloneImage(image01); + cvZero(imCont); + // On fixe la ROI de l'image pour ne pas dessiner à l'extérieur + imCont->roi = (_IplROI*)malloc(sizeof(IplROI)); + imCont->roi->coi = 0; + imCont->roi->xOffset = 0; + imCont->roi->yOffset = 0; + imCont->roi->width = imCont->width; + imCont->roi->height = imCont->height; + } + + // On fait le traitement pour chaque couleur de balle + imFill = cvCloneImage(image01); + + for (i=0 ; i < imFill->width*imFill->height; i++) + { + if (in_radius(imHSV->imageData[3*i], params.centH, params.radH, 180) && + (uchar)imHSV->imageData[3*i+1] >= params.minS && (uchar)imHSV->imageData[3*i+1] <= params.maxS && + (uchar)imHSV->imageData[3*i+2] >= params.minV && (uchar)imHSV->imageData[3*i+2] <= params.maxV ) + { + // On laisse la couleur du pixel + } + else + { + // sinon on l'efface + imFill->imageData[3*i ] = 0; + imFill->imageData[3*i+1] = 0; + imFill->imageData[3*i+2] = 0; + } + } + + // Conversion en niveaux de gris de l'image filtrée + cvCvtColor(imFill, image03, CV_BGR2GRAY); + + // Create the destination images + image02 = cvCloneImage( image03 ); + + // Create dynamic memory storage and sequence. + stor = cvCreateMemStorage(0); + cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor); + + // Threshold the source image. This needful for cvFindContours(). + cvThreshold( image03, image02, slider_pos, 255, CV_THRESH_BINARY ); + + // Find all contours. + cvFindContours( image02, stor, &cont, sizeof(CvContour), + CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cvPoint(0,0)); + + // Clear image. IPL use. + cvZero(image02); + + // This cycle draw all contours and approximate it by ellipses. + for(;cont;cont = cont->h_next) + { + int i; // Indicator of cycle. + int count = cont->total; // This is number point in contour + CvPoint center; + CvSize size; + + // Number point must be more than or equal to 6 (for cvFitEllipse_32f). + if( count < 6 ) + continue; + + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + PointArray2D32f= (CvPoint2D32f*)malloc( count*sizeof(CvPoint2D32f) ); + + // Alloc memory for ellipse data. + box = (CvBox2D32f*)malloc(sizeof(CvBox2D32f)); + + // Get contour point set. + cvCvtSeqToArray(cont, PointArray, CV_WHOLE_SEQ); + + // Convert CvPoint set to CvBox2D32f set. + for(i=0; i<count; i++) + { + PointArray2D32f[i].x = (float)PointArray[i].x; + PointArray2D32f[i].y = (float)PointArray[i].y; + } + + // Fits ellipse to current contour. + cvFitEllipse(PointArray2D32f, count, box); + + // Convert ellipse data from float to integer representation. + center.x = cvRound(box->center.x); + center.y = cvRound(box->center.y); + size.width = cvRound(box->size.width*0.5); + size.height = cvRound(box->size.height*0.5); + box->angle = -box->angle; + + // On ne dessine le contour et l'ellipse que si son rayon est dans les bornes + meanRad = (size.width + size.height) / 2; + + if (meanRad >= params.minCont && meanRad <= params.maxCont) + { + // Draw current contour. + cvDrawContours(imCont,cont,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1,8,cvPoint(0,0)); + + // Draw ellipse. + cvEllipse(imCont, center, size, + box->angle, 0, 360, + CV_RGB(255,0,0), 1, CV_AA, 0); + } + + // Free memory. + free(imCont->roi); imCont->roi = NULL; + free(PointArray); + free(PointArray2D32f); + free(box); + + } + + // On libère la mémoire + cvReleaseMemStorage(&stor); + cvReleaseImage(&image02); + cvReleaseImage(&imFill); +} + +int in_radius(int val, int center, int radius, int max) +{ + int d; + d = abs(val - center); + return min(d,max - d) <= radius; +} diff --git a/info/vision/coupe2011/fiteellipse_cam.c b/info/vision/coupe2011/fiteellipse_cam.c new file mode 100644 index 0000000..1fbb99f --- /dev/null +++ b/info/vision/coupe2011/fiteellipse_cam.c @@ -0,0 +1,198 @@ +/******************************************************************************** +* +* +* This program is demonstration for ellipse fitting. Program finds +* contours and approximate it by ellipses. +* +* Trackbar specify threshold parametr. +* +* White lines is contours. Red lines is fitting ellipses. +* +* +* Autor: Denis Burenkov. +* +* +* +********************************************************************************/ +#ifdef _CH_ +#pragma package <opencv> +#endif + +#ifndef _EiC +#include "cv.h" +#include "highgui.h" +#endif + +int slider_pos = 70; + +// Load the source image. HighGUI use. +IplImage *image01 = 0, *image02 = 0, *image03 = 0, *image04 = 0; + +void process_image(int h); + +int main( int argc, char** argv ) +{ + int ncams, source, c, quit=0; + CvCapture *capture = NULL; + + // Ouvre la webcam + ncams = (argc >= 2 ? atoi(argv[1]) : 1); + source = (argc >= 3 ? atoi(argv[2]) : 0); + capture = cvCaptureFromCAM(source); + + // Create windows. + cvNamedWindow("Source", 1); + cvNamedWindow("Result", 1); + + // Create toolbars. HighGUI use. + cvCreateTrackbar( "Threshold", "Result", &slider_pos, 255, process_image ); + + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + // Conversion en niveaux de gris + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + + while (!quit) + { + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + // Conversion en niveaux de gris + cvCvtColor(image01, image03, CV_BGR2GRAY); + + cvReleaseImage(&image02); + cvReleaseImage(&image04); + + // Create the destination images + image02 = cvCloneImage( image03 ); + image04 = cvCloneImage( image03 ); + + // Show the image. + cvShowImage("Source", image03); + + process_image(0); + + // Wait for a key stroke; the same function arranges events processing + c = (char)cvWaitKey(10); + + switch (c) + { + case 'c': + source = (source+1) % ncams; + cvReleaseCapture(&capture); + capture = cvCaptureFromCAM(source); + cvReleaseImage(&image03); + image01 = cvQueryFrame(capture); + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + break; + case 'q': + quit = 1; + break; + } + + } + + + // On release la mémoire + cvReleaseCapture(&capture); + + cvReleaseImage(&image01); + cvReleaseImage(&image02); + cvReleaseImage(&image03); + cvReleaseImage(&image04); + + cvDestroyWindow("Source"); + cvDestroyWindow("Result"); + + return 0; +} + +// Define trackbar callback functon. This function find contours, +// draw it and approximate it by ellipses. +void process_image(int h) +{ + CvMemStorage* stor; + CvSeq* cont; + CvBox2D32f* box; + CvPoint* PointArray; + CvPoint2D32f* PointArray2D32f; + + // Create dynamic memory storage and sequence. + stor = cvCreateMemStorage(0); + cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor); + + // Threshold the source image. This needful for cvFindContours(). + cvThreshold( image03, image02, slider_pos, 255, CV_THRESH_BINARY ); + + // Find all contours. + cvFindContours( image02, stor, &cont, sizeof(CvContour), + CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cvPoint(0,0)); + + // Clear images. IPL use. + cvZero(image02); + cvZero(image04); + + // This cycle draw all contours and approximate it by ellipses. + for(;cont;cont = cont->h_next) + { + int i; // Indicator of cycle. + int count = cont->total; // This is number point in contour + CvPoint center; + CvSize size; + + // Number point must be more than or equal to 6 (for cvFitEllipse_32f). + if( count < 6 ) + continue; + + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + PointArray2D32f= (CvPoint2D32f*)malloc( count*sizeof(CvPoint2D32f) ); + + // Alloc memory for ellipse data. + box = (CvBox2D32f*)malloc(sizeof(CvBox2D32f)); + + // Get contour point set. + cvCvtSeqToArray(cont, PointArray, CV_WHOLE_SEQ); + + // Convert CvPoint set to CvBox2D32f set. + for(i=0; i<count; i++) + { + PointArray2D32f[i].x = (float)PointArray[i].x; + PointArray2D32f[i].y = (float)PointArray[i].y; + } + + // Fits ellipse to current contour. + cvFitEllipse(PointArray2D32f, count, box); + + // Draw current contour. + cvDrawContours(image04,cont,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1,8,cvPoint(0,0)); + + // Convert ellipse data from float to integer representation. + center.x = cvRound(box->center.x); + center.y = cvRound(box->center.y); + size.width = cvRound(box->size.width*0.5); + size.height = cvRound(box->size.height*0.5); + box->angle = -box->angle; + + // Draw ellipse. + /*cvEllipse(image04, center, size, + box->angle, 0, 360, + CV_RGB(0,0,255), 1, CV_AA, 0);*/ + + // Free memory. + free(PointArray); + free(PointArray2D32f); + free(box); + + } + + // Show image. HighGUI use. + cvShowImage( "Result", image04 ); + + cvReleaseMemStorage(&stor); +} + +#ifdef _EiC +main(1,"fitellipse.c"); +#endif diff --git a/info/vision/coupe2011/fiteellipse_camfilter.c b/info/vision/coupe2011/fiteellipse_camfilter.c new file mode 100644 index 0000000..899fe05 --- /dev/null +++ b/info/vision/coupe2011/fiteellipse_camfilter.c @@ -0,0 +1,217 @@ +/******************************************************************************** +* +* +* This program is demonstration for ellipse fitting. Program finds +* contours and approximate it by ellipses. +* +* Trackbar specify threshold parametr. +* +* White lines is contours. Red lines is fitting ellipses. +* +* +* Autor: Denis Burenkov. +* +* +* +********************************************************************************/ +#ifdef _CH_ +#pragma package <opencv> +#endif + +#ifndef _EiC +#include "cv.h" +#include "highgui.h" +#endif + +int slider_pos = 70; + +// Load the source image. HighGUI use. +IplImage *image01 = 0, *image02 = 0, *image03 = 0, *image04 = 0, *image05 = 0, *image06 = 0; + +void process_image(int h); + +int main( int argc, char** argv ) +{ + int ncams, source, c, quit=0, i; + CvCapture *capture = NULL; + + // Ouvre la webcam + ncams = (argc >= 2 ? atoi(argv[1]) : 1); + source = (argc >= 3 ? atoi(argv[2]) : 0); + capture = cvCaptureFromCAM(source); + + // Create windows. + cvNamedWindow("HSV",1); + cvNamedWindow("Source", 1); + cvNamedWindow("Result", 1); + + // Create toolbars. HighGUI use. + cvCreateTrackbar( "Threshold", "Result", &slider_pos, 255, process_image ); + + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + // Création de l'image03 à la taile de l'image prise par la webcam + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + + // Même chose avec image05 + image05 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 3); + + while (!quit) + { + // Récupère une image de la webcam + image01 = cvQueryFrame(capture); + + // Conversion en niveaux de gris + cvCvtColor(image01, image03, CV_BGR2GRAY); + + // Filtre de couleur + cvCvtColor(image01, image05, CV_BGR2HSV); + cvReleaseImage(&image06); + image06 = cvCloneImage(image03); + + for (i=0 ; i < image06->width*image06->height; i++) + { + image06->imageData[i] = ((image05->imageData[3*i] > 90 && image05->imageData[3*i] < 110 && image05->imageData[3*i+1] > 20) ? 255 : 0); + } + + + cvReleaseImage(&image02); + cvReleaseImage(&image04); + + // Create the destination images + image02 = cvCloneImage( image03 ); + image04 = cvCloneImage( image03 ); + + // Show the image. + cvShowImage("HSV", image06); + cvShowImage("Source", image01); + + process_image(0); + + // Wait for a key stroke; the same function arranges events processing + c = (char)cvWaitKey(10); + + switch (c) + { + case 'c': + source = (source+1) % ncams; + cvReleaseCapture(&capture); + capture = cvCaptureFromCAM(source); + cvReleaseImage(&image03); + image01 = cvQueryFrame(capture); + image03 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 1); + image05 = cvCreateImage(cvSize(image01->width,image01->height), IPL_DEPTH_8U, 3); + break; + case 'q': + quit = 1; + break; + } + + } + + + // On release la mémoire + cvReleaseCapture(&capture); + + cvReleaseImage(&image01); + cvReleaseImage(&image02); + cvReleaseImage(&image03); + cvReleaseImage(&image04); + cvReleaseImage(&image05); + + cvDestroyWindow("HSV"); + cvDestroyWindow("Source"); + cvDestroyWindow("Result"); + + return 0; +} + +// Define trackbar callback functon. This function find contours, +// draw it and approximate it by ellipses. +void process_image(int h) +{ + CvMemStorage* stor; + CvSeq* cont; + CvBox2D32f* box; + CvPoint* PointArray; + CvPoint2D32f* PointArray2D32f; + + // Create dynamic memory storage and sequence. + stor = cvCreateMemStorage(0); + cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor); + + // Threshold the source image. This needful for cvFindContours(). + cvThreshold( image03, image02, slider_pos, 255, CV_THRESH_BINARY ); + + // Find all contours. + cvFindContours( image02, stor, &cont, sizeof(CvContour), + CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cvPoint(0,0)); + + // Clear images. IPL use. + cvZero(image02); + cvZero(image04); + + // This cycle draw all contours and approximate it by ellipses. + for(;cont;cont = cont->h_next) + { + int i; // Indicator of cycle. + int count = cont->total; // This is number point in contour + CvPoint center; + CvSize size; + + // Number point must be more than or equal to 6 (for cvFitEllipse_32f). + if( count < 6 ) + continue; + + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + PointArray2D32f= (CvPoint2D32f*)malloc( count*sizeof(CvPoint2D32f) ); + + // Alloc memory for ellipse data. + box = (CvBox2D32f*)malloc(sizeof(CvBox2D32f)); + + // Get contour point set. + cvCvtSeqToArray(cont, PointArray, CV_WHOLE_SEQ); + + // Convert CvPoint set to CvBox2D32f set. + for(i=0; i<count; i++) + { + PointArray2D32f[i].x = (float)PointArray[i].x; + PointArray2D32f[i].y = (float)PointArray[i].y; + } + + // Fits ellipse to current contour. + cvFitEllipse(PointArray2D32f, count, box); + + // Draw current contour. + cvDrawContours(image04,cont,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1,8,cvPoint(0,0)); + + // Convert ellipse data from float to integer representation. + center.x = cvRound(box->center.x); + center.y = cvRound(box->center.y); + size.width = cvRound(box->size.width*0.5); + size.height = cvRound(box->size.height*0.5); + box->angle = -box->angle; + + // Draw ellipse. + /*cvEllipse(image04, center, size, + box->angle, 0, 360, + CV_RGB(0,0,255), 1, CV_AA, 0);*/ + + // Free memory. + free(PointArray); + free(PointArray2D32f); + free(box); + + } + + // Show image. HighGUI use. + cvShowImage( "Result", image04 ); + + cvReleaseMemStorage(&stor); +} + +#ifdef _EiC +main(1,"fitellipse.c"); +#endif hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-05-21 14:59:42
|
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 fd338215ec279f96b2992d7faf8e26fe866fbefe (commit) from f3baa3b60397e396e82626bda5d452c8d5461718 (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 fd338215ec279f96b2992d7faf8e26fe866fbefe Author: Jérémie Dimino <je...@di...> Date: Sat May 21 16:58:15 2011 +0200 [krobot_config] update robot parameters ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/src/lib/krobot_config.ml b/info/control2011/src/lib/krobot_config.ml index 86e1c46..761a334 100644 --- a/info/control2011/src/lib/krobot_config.ml +++ b/info/control2011/src/lib/krobot_config.ml @@ -9,8 +9,8 @@ let world_height = 2.1 let world_width = 3. -let robot_size = 0.29 +let robot_size = 0.26 let wheels_diameter = 0.098 -let wheels_distance = 0.259 -let wheels_position = 0.045 +let wheels_distance = 0.150 +let wheels_position = robot_size /. 2. let rotary_beacon_index_pos = (4. *. atan 1.) /. 2. (* left side *) hooks/post-receive -- krobot |
From: Nicolas D. <Ba...@us...> - 2011-05-21 12:27:50
|
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 f3baa3b60397e396e82626bda5d452c8d5461718 (commit) from aa5da0a85fba2bb27d79da5be728f739743257f6 (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 f3baa3b60397e396e82626bda5d452c8d5461718 Author: Nicolas Dandrimont <Nic...@cr...> Date: Sat May 21 14:26:46 2011 +0200 [Meca] Coherent mirror angle for the new opponent detection system ----------------------------------------------------------------------- Changes: diff --git a/meca/2011_Senior/Balises/support_miroir.scad b/meca/2011_Senior/Balises/support_miroir.scad index c00c396..e6dac72 100644 --- a/meca/2011_Senior/Balises/support_miroir.scad +++ b/meca/2011_Senior/Balises/support_miroir.scad @@ -26,14 +26,14 @@ h_min = d_balise; h_max = d_balise + h_balise; theta_min = atan(h_min / D_min); theta_max = atan(h_max / D_max); -theta = (theta_min + theta_max)/2.; +theta = 43.5; echo("Angle minimal du faisceau sortant"); echo(theta_min); echo("Angle maximal du faisceau sortant"); echo(theta_max); -phi = 45. + theta / 2.; +phi = 43.5; echo("Angle du miroir par rapport à l'horizontale"); echo(phi); hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-05-20 19:45:20
|
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 aa5da0a85fba2bb27d79da5be728f739743257f6 (commit) via c922608e44b2ea9e56a1dd6dce0b2efb778a0597 (commit) from 9240ffa0043fb08e18cb6b9c308cc382fed0bc4a (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 aa5da0a85fba2bb27d79da5be728f739743257f6 Author: Jérémie Dimino <je...@di...> Date: Fri May 20 21:44:06 2011 +0200 [info] display objects commit c922608e44b2ea9e56a1dd6dce0b2efb778a0597 Author: Jérémie Dimino <je...@di...> Date: Tue May 17 20:16:04 2011 +0200 [info] add messages for the coders 1 and 2 ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/_oasis b/info/control2011/_oasis index 81dd9ef..eea9438 100644 --- a/info/control2011/_oasis +++ b/info/control2011/_oasis @@ -155,6 +155,13 @@ Executable "krobot-planner" MainIs: krobot_planner.ml BuildDepends: krobot, lwt.syntax +Executable "krobot-objects" + Path: src/tools + Install: true + CompiledObject: best + MainIs: krobot_objects.ml + BuildDepends: krobot, lwt.syntax + Executable "krobot-kill" Path: src/tools Install: true diff --git a/info/control2011/_tags b/info/control2011/_tags index 42135ad..8d7cff0 100644 --- a/info/control2011/_tags +++ b/info/control2011/_tags @@ -2,7 +2,7 @@ <src/interfaces/*.ml>: -syntax_camlp4o # OASIS_START -# DO NOT EDIT (digest: e0fdca06da598f490f540bfd1de2f7ad) +# DO NOT EDIT (digest: 727ec33b4060953b9ebbde97c6c14363) # Library krobot "src/lib": include "src/lib/krobot.cmxs": use_krobot @@ -74,6 +74,11 @@ <examples/send_can.{native,byte}>: pkg_lwt.unix <examples/send_can.{native,byte}>: pkg_lwt.syntax <examples/send_can.{native,byte}>: pkg_lwt.react +# Executable krobot-objects +<src/tools/krobot_objects.{native,byte}>: use_krobot +<src/tools/krobot_objects.{native,byte}>: pkg_lwt.unix +<src/tools/krobot_objects.{native,byte}>: pkg_lwt.syntax +<src/tools/krobot_objects.{native,byte}>: pkg_lwt.react # Executable krobot-kill <src/tools/krobot_kill.{native,byte}>: use_krobot <src/tools/krobot_kill.{native,byte}>: pkg_lwt.unix diff --git a/info/control2011/setup.ml b/info/control2011/setup.ml index 9065940..c202ad2 100644 --- a/info/control2011/setup.ml +++ b/info/control2011/setup.ml @@ -1,7 +1,7 @@ (* setup.ml generated for the first time by OASIS v0.2.0~alpha1 *) (* OASIS_START *) -(* DO NOT EDIT (digest: f74f01087e7cdeda8c8d0d200fd9f844) *) +(* DO NOT EDIT (digest: 79727b7548ae5f100d31519956433b0b) *) (* Regenerated by OASIS v0.2.0 Visit http://oasis.forge.ocamlcore.org for more information and @@ -5404,6 +5404,34 @@ let setup_t = {exec_custom = false; exec_main_is = "send_can.ml"; }); Executable ({ + cs_name = "krobot-objects"; + cs_data = PropList.Data.create (); + cs_plugin_data = []; + }, + { + bs_build = [(OASISExpr.EBool true, true)]; + bs_install = [(OASISExpr.EBool true, true)]; + bs_path = "src/tools"; + bs_compiled_object = Best; + bs_build_depends = + [ + InternalLibrary "krobot"; + FindlibPackage ("lwt.syntax", None) + ]; + bs_build_tools = [ExternalTool "ocamlbuild"]; + bs_c_sources = []; + bs_data_files = []; + bs_ccopt = [(OASISExpr.EBool true, [])]; + bs_cclib = [(OASISExpr.EBool true, [])]; + bs_dlllib = [(OASISExpr.EBool true, [])]; + bs_dllpath = [(OASISExpr.EBool true, [])]; + bs_byteopt = [(OASISExpr.EBool true, [])]; + bs_nativeopt = [(OASISExpr.EBool true, [])]; + }, + {exec_custom = false; exec_main_is = "krobot_objects.ml"; + }); + Executable + ({ cs_name = "krobot-kill"; cs_data = PropList.Data.create (); cs_plugin_data = []; diff --git a/info/control2011/src/lib/krobot_bus.ml b/info/control2011/src/lib/krobot_bus.ml index cf22f9d..101151b 100644 --- a/info/control2011/src/lib/krobot_bus.ml +++ b/info/control2011/src/lib/krobot_bus.ml @@ -32,6 +32,7 @@ type message = | Trajectory_go of float * float * float * float | Trajectory_stop | Trajectory_moving of bool + | Objects of vertice list type t = { oc : Lwt_io.output_channel; @@ -101,6 +102,10 @@ let string_of_message = function sprintf "Trajectory_moving %B" b + | Objects objects -> + sprintf + "Objects [%s]" + (String.concat "; " (List.map string_of_vertice objects)) (* +-----------------------------------------------------------------+ | Sending/receiving messages | diff --git a/info/control2011/src/lib/krobot_bus.mli b/info/control2011/src/lib/krobot_bus.mli index c453e26..28a37a2 100644 --- a/info/control2011/src/lib/krobot_bus.mli +++ b/info/control2011/src/lib/krobot_bus.mli @@ -51,6 +51,11 @@ type message = | Trajectory_moving of bool (** Is the robot following a trajectory ? *) + (** Objects *) + + | Objects of vertice list + (** The list of objects on the board. *) + val string_of_message : message -> string (** Returns a string representation of the given message. *) diff --git a/info/control2011/src/lib/krobot_message.ml b/info/control2011/src/lib/krobot_message.ml index 3a77845..d2ee967 100644 --- a/info/control2011/src/lib/krobot_message.ml +++ b/info/control2011/src/lib/krobot_message.ml @@ -23,6 +23,7 @@ type t = | Battery2_voltages of float * float * float * float | Beacon_position of float * float * float | Beacon_lowlevel_position of float * float * int + | Encoder_position_direction_1_2 of int * direction * int * direction | Encoder_position_direction_3_4 of int * direction * int * direction | Encoder_position_speed_3 of float * float | Encoder_position_speed_4 of float * float @@ -73,6 +74,11 @@ let to_string = function angle width period + | Encoder_position_direction_1_2(pos1, dir1, pos2, dir2) -> + sprintf + "Encoder_position_direction_1_2(%d, %s, %d, %s)" + pos1 (string_of_direction dir1) + pos2 (string_of_direction dir2) | Encoder_position_direction_3_4(pos3, dir3, pos4, dir4) -> sprintf "Encoder_position_direction_3_4(%d, %s, %d, %s)" @@ -136,6 +142,18 @@ let pi = 4. *. atan 1. external encode_bezier : int * int * int * int * int * int -> string = "krobot_message_encode_bezier" let encode = function + | Encoder_position_direction_1_2(pos1, dir1, pos2, dir2) -> + let data = String.create 6 in + put_uint16 data 0 pos1; + put_uint16 data 2 pos2; + put_uint8 data 4 (match dir1 with Forward -> 0 | Backward -> 1); + put_uint8 data 5 (match dir2 with Forward -> 0 | Backward -> 1); + frame + ~identifier:99 + ~kind:Data + ~remote:false + ~format:F29bits + ~data | Encoder_position_direction_3_4(pos3, dir3, pos4, dir4) -> let data = String.create 6 in put_uint16 data 0 pos3; @@ -351,6 +369,12 @@ let decode frame = Unknown frame else match frame.identifier with + | 99 -> + Encoder_position_direction_1_2 + (get_uint16 frame.data 0, + (if get_uint8 frame.data 4 = 0 then Forward else Backward), + get_uint16 frame.data 2, + (if get_uint8 frame.data 5 = 0 then Forward else Backward)) | 100 -> Encoder_position_direction_3_4 (get_uint16 frame.data 0, diff --git a/info/control2011/src/lib/krobot_message.mli b/info/control2011/src/lib/krobot_message.mli index 05f9e49..90ff8f7 100644 --- a/info/control2011/src/lib/krobot_message.mli +++ b/info/control2011/src/lib/krobot_message.mli @@ -22,6 +22,8 @@ type t = (** The position of the beacon relative to the robot *) | Beacon_lowlevel_position of float * float * int (** The position of the beacon as internally stored (for calibration) *) + | Encoder_position_direction_1_2 of int * direction * int * direction + (** The position and direction of encoders 1 and 2. *) | Encoder_position_direction_3_4 of int * direction * int * direction (** The position and direction of encoders 3 and 4. *) | Encoder_position_speed_3 of float * float diff --git a/info/control2011/src/tools/krobot_objects.ml b/info/control2011/src/tools/krobot_objects.ml new file mode 100644 index 0000000..0c2d681 --- /dev/null +++ b/info/control2011/src/tools/krobot_objects.ml @@ -0,0 +1,115 @@ +(* + * krobot_objects.ml + * ----------------- + * Copyright : (c) 2011, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + *) + +(* Service handling the position of the objects on the board. *) + +open Lwt +open Lwt_react +open Krobot_bus +open Krobot_geom + +let section = Lwt_log.Section.make "krobot(objects)" + +(* +-----------------------------------------------------------------+ + | Types | + +-----------------------------------------------------------------+ *) + +type objects = { + bus : Krobot_bus.t; + (* The message bus used to communicate with the robot. *) + + mutable objects : vertice list; + (* The list of objects on the board. *) +} + +(* +-----------------------------------------------------------------+ + | Message handling | + +-----------------------------------------------------------------+ *) + +let handle_message objects (timestamp, message) = + match message with + | Kill "objects" -> + exit 0 + + | Send -> + ignore ( + let ts = Unix.gettimeofday () in + Krobot_bus.send objects.bus (ts, Objects objects.objects) + ) + + | _ -> + () + +(* +-----------------------------------------------------------------+ + | Command-line arguments | + +-----------------------------------------------------------------+ *) + +let fork = ref true + +let options = Arg.align [ + "-no-fork", Arg.Clear fork, " Run in foreground"; +] + +let usage = "\ +Usage: krobot-planner [options] +options are:" + +(* +-----------------------------------------------------------------+ + | Entry point | + +-----------------------------------------------------------------+ *) + +lwt () = + Arg.parse options ignore usage; + + (* Display all informative messages. *) + Lwt_log.append_rule "*" Lwt_log.Info; + + (* Open the krobot bus. *) + lwt bus = Krobot_bus.get () in + + (* Fork if not prevented. *) + if !fork then Lwt_daemon.daemonize (); + + (* Kill any running planner. *) + lwt () = Krobot_bus.send bus (Unix.gettimeofday (), Krobot_bus.Kill "objects") in + + (* Create a new planner. *) + let objects = { + bus; + objects = [ + { x = 0.800; y = 0.350 }; + { x = 1.150; y = 0.350 }; + { x = 1.850; y = 0.350 }; + { x = 2.200; y = 0.350 }; + { x = 1.500; y = 1.050 }; + { x = 0.800; y = 1.400 }; + { x = 2.200; y = 1.400 }; + { x = 1.150; y = 1.750 }; + { x = 1.850; y = 1.750 }; + { x = 0.200; y = 0.290 }; + { x = 0.200; y = 0.570 }; + { x = 0.200; y = 0.850 }; + { x = 0.200; y = 1.130 }; + { x = 0.200; y = 1.410 }; + { x = 2.800; y = 0.290 }; + { x = 2.800; y = 0.570 }; + { x = 2.800; y = 0.850 }; + { x = 2.800; y = 1.130 }; + { x = 2.800; y = 1.410 }; + ]; + } in + + (* Handle krobot message. *) + E.keep (E.map (handle_message objects) (Krobot_bus.recv bus)); + + (* Sends initial objects. *) + lwt () = Krobot_bus.send objects.bus (Unix.gettimeofday (), Objects objects.objects) in + + (* Wait forever. *) + fst (wait ()) diff --git a/info/control2011/src/tools/krobot_planner.ml b/info/control2011/src/tools/krobot_planner.ml index e1e3596..b15a336 100644 --- a/info/control2011/src/tools/krobot_planner.ml +++ b/info/control2011/src/tools/krobot_planner.ml @@ -18,18 +18,6 @@ open Krobot_message let section = Lwt_log.Section.make "krobot(planner)" -let pi = 4. *. atan 1. - -let math_mod_float a b = - let b2 = b /. 2. in - let modf = mod_float a b in - if modf > b2 then - modf -. b - else if modf < -. b2 then - modf +. b - else - modf;; - (* +-----------------------------------------------------------------+ | Types | +-----------------------------------------------------------------+ *) @@ -63,6 +51,9 @@ type planner = { mutable orientation : float; (* The orientation of the robot. *) + mutable objects : vertice list; + (* The list of objects on the board. *) + mutable event : unit event; (* Event kept in the planner. *) } @@ -169,44 +160,6 @@ let go planner rotation_speed rotation_acceleration moving_speed moving_accelera if planner.moving then return () else begin - (* let rec loop () = - match S.value planner.vertices with - | { x; y } :: rest -> - let sqr x = x *. x in - let radius = sqrt (sqr (max wheels_position (robot_size -. wheels_position)) +. sqr (robot_size /. 2.)) in - if x >= radius && x <= world_width -. radius && y >= radius && y <= world_height -. radius then begin - (* Turn the robot. *) - let alpha = math_mod_float (atan2 (y -. planner.position.y) (x -. planner.position.x) -. planner.orientation) (2. *. pi) in - lwt () = Lwt_log.info_f "turning by %f radians" alpha in - lwt () = Krobot_message.send planner.bus (Unix.gettimeofday (), - Motor_turn(alpha, - rotation_speed, - rotation_acceleration)) in - lwt () = wait_done planner in - - (* Move the robot. *) - let dist = sqrt (sqr (x -. planner.position.x) +. sqr (y -. planner.position.y)) in - lwt () = Lwt_log.info_f "moving by %f meters" dist in - lwt () = Krobot_message.send planner.bus (Unix.gettimeofday (), - Motor_move(dist, - moving_speed, - moving_acceleration)) in - lwt () = wait_done planner in - - (* Remove the point. *) - (match S.value planner.vertices with - | _ :: l -> planner.set_vertices l - | [] -> ()); - planner.set_origin (planner.position, - { vx = cos planner.orientation; - vy = sin planner.orientation }); - - loop () - end else - Lwt_log.warning_f "can not move to (%f, %f)" x y - | [] -> - return () - in*) set_moving planner true; planner.mover <- ( try_lwt @@ -339,6 +292,9 @@ let handle_message planner (timestamp, message) = set_vertices planner []; ignore (Krobot_message.send planner.bus (Unix.gettimeofday (), Motor_stop(1.0,0.0))) + | Objects l -> + planner.objects <- l + | _ -> () @@ -386,11 +342,15 @@ lwt () = mover = return (); position = { x = 0.; y = 0. }; orientation = 0.; + objects = []; event = E.never; } in (* Handle krobot message. *) E.keep (E.map (handle_message planner) (Krobot_bus.recv bus)); + (* Ask for objects. *) + lwt () = Krobot_bus.send bus (Unix.gettimeofday (), Send) in + (* Wait forever. *) fst (wait ()) diff --git a/info/control2011/src/tools/krobot_plot.ml b/info/control2011/src/tools/krobot_plot.ml index e5e4cab..1b84ecc 100644 --- a/info/control2011/src/tools/krobot_plot.ml +++ b/info/control2011/src/tools/krobot_plot.ml @@ -29,16 +29,22 @@ lwt () = window#show (); (* Create the graph. *) - let graph = { points = Array.init 2 (fun _ -> Queue.create ()); max = 1. } in + let graph = { points = Array.init 4 (fun _ -> Queue.create ()); max = 1. } in E.keep (E.map (fun (timestamp, msg) -> match msg with + | Encoder_position_direction_1_2(pos1, dir1, pos2, dir2) -> + let pos1 = float pos1 and pos2 = float pos2 in + graph.max <- max graph.max (max pos1 pos2); + Queue.push (timestamp, pos1) graph.points.(0); + Queue.push (timestamp, pos2) graph.points.(1); + update_graph graph timestamp | Encoder_position_direction_3_4(pos3, dir3, pos4, dir4) -> let pos3 = float pos3 and pos4 = float pos4 in graph.max <- max graph.max (max pos3 pos4); - Queue.push (timestamp, pos3) graph.points.(0); - Queue.push (timestamp, pos4) graph.points.(1); + Queue.push (timestamp, pos3) graph.points.(2); + Queue.push (timestamp, pos4) graph.points.(3); update_graph graph timestamp | _ -> ()) diff --git a/info/control2011/src/tools/krobot_viewer.ml b/info/control2011/src/tools/krobot_viewer.ml index 7ddee83..98a36fc 100644 --- a/info/control2011/src/tools/krobot_viewer.ml +++ b/info/control2011/src/tools/krobot_viewer.ml @@ -58,6 +58,9 @@ type viewer = { mutable motor_status : bool * bool * bool *bool; (* Status of the four motor controller. *) + + mutable objects : vertice list; + (* The objects on the table. *) } (* +-----------------------------------------------------------------+ @@ -233,6 +236,19 @@ let draw viewer = Cairo.arc ctx 1.675 0.175 0.05 0. (2. *. pi); Cairo.fill ctx; + (* Draw objects *) + List.iter + (fun { x; y } -> + set_color ctx Yellow; + Cairo.arc ctx x y 0.1 0. (2. *. pi); + Cairo.fill ctx; + + set_color ctx Black; + Cairo.arc ctx x y 0.1 0. (2. *. pi); + Cairo.stroke ctx) + viewer.objects; + + (* Draw the robot and the ghost *) List.iter (fun (state, alpha) -> Cairo.save ctx; @@ -412,6 +428,10 @@ let handle_message viewer (timestamp, message) = viewer.ui#logs#buffer#insert (line ^ "\n"); viewer.ui#scrolled_logs#vadjustment#set_value viewer.ui#scrolled_logs#vadjustment#upper + | Objects l -> + viewer.objects <- l; + queue_draw viewer + | _ -> () @@ -472,6 +492,7 @@ lwt () = curves = []; statusbar_context = ui#statusbar#new_context ""; motor_status = (false, false, false, false); + objects = []; } in (* Handle messages. *) hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2011-05-12 20:13:47
|
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 9240ffa0043fb08e18cb6b9c308cc382fed0bc4a (commit) from 5ac502f354e9bb41b98d23447fa79a422bbfad6d (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 9240ffa0043fb08e18cb6b9c308cc382fed0bc4a Author: Olivier BICHLER <oli...@cr...> Date: Thu May 12 22:13:21 2011 +0200 [Balise IR] Added missing holes for PCB fixation and updated Xbee footprint ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/CARTE_ALIM_CAPTEURS.MAX b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/CARTE_ALIM_CAPTEURS.MAX index d3048ea..e6a5c4c 100644 Binary files a/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/CARTE_ALIM_CAPTEURS.MAX and b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/CARTE_ALIM_CAPTEURS.MAX differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM-DIODES.MAX b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM-DIODES.MAX index 0e3d6f0..ce53138 100644 Binary files a/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM-DIODES.MAX and b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM-DIODES.MAX differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/PCB/CARTE_CAPTEURS.MAX b/elec/boards/Balise_IR/Carte_capteurs/PCB/CARTE_CAPTEURS.MAX index 02be9a1..fc52e14 100644 Binary files a/elec/boards/Balise_IR/Carte_capteurs/PCB/CARTE_CAPTEURS.MAX and b/elec/boards/Balise_IR/Carte_capteurs/PCB/CARTE_CAPTEURS.MAX differ diff --git a/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MAX b/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MAX index faec63e..ba3b487 100644 Binary files a/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MAX and b/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MAX differ hooks/post-receive -- krobot |
From: Jason C. <Ba...@us...> - 2011-05-12 20:05:38
|
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 5ac502f354e9bb41b98d23447fa79a422bbfad6d (commit) from 653cc8da6f2281a43716ba3f299f3adc9828d4af (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 5ac502f354e9bb41b98d23447fa79a422bbfad6d Author: jchevrie <jas...@cr...> Date: Thu May 12 22:03:38 2011 +0200 Dossier contenant les cartes de la balise infra-rouge. Il reste à faire les modifications qu'Olivier a faites avant de commander les cartes (perçages...). ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/CARTE_ALIM_CAPTEURS.MAX b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/CARTE_ALIM_CAPTEURS.MAX new file mode 100644 index 0000000..d3048ea Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/CARTE_ALIM_CAPTEURS.MAX differ diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PART_2.MNL b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PART_2.MNL new file mode 100644 index 0000000..9a0baf3 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PART_2.MNL differ diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PDF/CARTE_ALIM_CAPTEURS_BOTTOM.pdf b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PDF/CARTE_ALIM_CAPTEURS_BOTTOM.pdf new file mode 100644 index 0000000..763c275 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PDF/CARTE_ALIM_CAPTEURS_BOTTOM.pdf differ diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PDF/CARTE_ALIM_CAPTEURS_TOP.pdf b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PDF/CARTE_ALIM_CAPTEURS_TOP.pdf new file mode 100644 index 0000000..50b962a Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/PDF/CARTE_ALIM_CAPTEURS_TOP.pdf differ diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/layout.log b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/layout.log new file mode 100644 index 0000000..87e22ce --- /dev/null +++ b/elec/boards/Balise_IR/Carte_alim_capteurs/PCB/layout.log @@ -0,0 +1 @@ +Thu May 12 12:14:50 Saved as file ~undo.max diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/Composants.BOM b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/Composants.BOM new file mode 100644 index 0000000..4b1a2c8 --- /dev/null +++ b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/Composants.BOM @@ -0,0 +1,41 @@ + Revised: Sunday, May 01, 2011 + Revision: + + + + + + + +Bill Of Materials May 12,2011 13:39:32 Page1 + +Item Quantity Reference Part +______________________________________________ + +1 3 C1,C18,C20 100n +2 1 C17 10u +3 1 C21 4.7u +4 1 C22 1u +5 1 D6 10BQ040 +6 1 D7 5V LED +7 1 D8 3.3V LED +8 1 E1 CAN_T +9 1 E2 R-T +10 1 E3 SCL_PU +11 1 E4 SDA_PU +12 1 HF1 XBEE +13 1 J1 CAN #1 +14 1 J2 JTAG +15 1 J3 I2C +16 1 J12 12V - 24V Power Supply +17 1 J13 CAN #2 +18 1 J33 CON20A +19 1 R1 330 +20 9 R2,R4,R5,R6,R7,R8,R9,R10, 10k + R11 +21 1 R3 120 +22 2 R32,R45 680 +23 2 R34,R35 4.7k +24 1 U1 SN65HVD230 +25 1 U4 TSR 1-2450 +26 1 U5 LT1521-3.3/SOT diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PART_2.DSN b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PART_2.DSN new file mode 100644 index 0000000..f0472aa Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PART_2.DSN differ diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PART_2_0.DBK b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PART_2_0.DBK new file mode 100644 index 0000000..1fcbecf Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PART_2_0.DBK differ diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PDF/Carte_alim_capteurs.pdf b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PDF/Carte_alim_capteurs.pdf new file mode 100644 index 0000000..2c7f15a Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/PDF/Carte_alim_capteurs.pdf differ diff --git a/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/part_2.opj b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/part_2.opj new file mode 100644 index 0000000..2d0fb94 --- /dev/null +++ b/elec/boards/Balise_IR/Carte_alim_capteurs/Schematic/part_2.opj @@ -0,0 +1,81 @@ +(ExpressProject "part_2" + (ProjectVersion "19981106") + (ProjectType "Analog or A/D Mixed Mode") + (Folder "Design Resources" + (Folder "Library") + (NoModify) + (File ".\part_2.dsn" + (Type "Schematic Design")) + (BuildFileAddedOrDeleted "x") + (CompileFileAddedOrDeleted "x") + (DRC_Scope "0") + (DRC_Action "0") + (DRC_Create_Warnings "FALSE") + (DRC_Check_Ports "FALSE") + (DRC_Check_Off-Page_Connectors "FALSE") + (DRC_Identical_References "TRUE") + (DRC_Type_Mismatch "TRUE") + (DRC_Report_Ports_and_Off-page_Connectors "FALSE") + (DRC_SDT_Compatibility "FALSE") + (DRC_Report_Off-grid_Objects "FALSE") + (DRC_Check_Unconnected_Nets "TRUE") + (DRC_Check_for_Misleading_TAP "FALSE") + (DRC_Visible_Power_pins "FALSE") + (DRC_Report_Netnames "FALSE") + (DRC_View_Output "FALSE") + (DRC_Report_File "C:\USERS\VINCENT\BUREAU ETUDE\PART_2\PART_2.DRC") + (BOM_Scope "0") + (BOM_Mode "0") + (BOM_Report_File + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_alim_capteurs\Schematic\Composants.BOM") + (BOM_Merge_Include "FALSE") + (BOM_Property_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_Header "Item\tQuantity\tReference\tPart") + (BOM_Include_File "C:\USERS\VINCENT\BUREAU ETUDE\PART_2\PART_2.INC") + (BOM_Include_File_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_One_Part_Per_Line "FALSE") + (Open_BOM_in_Excel "FALSE") + (BOM_View_Output "FALSE") + (Netlist_TAB "3") + (LAYOUT_Netlist_File "PART_2.MNL") + (LAYOUT_PCB_Footprint "{PCB Footprint}") + (TRUE) + (LAYOUT_Units "0") + (TRUE) + (TRUE)) + (Folder "Outputs" + (File ".\part_2.drc" + (Type "Report")) + (File ".\part_2.bom" + (Type "Report")) + (File ".\part_2.mnl" + (Type "LAYOUT Netlist File")) + (File ".\composants.bom" + (Type "Report"))) + (Folder "PSpice Resources" + (Folder "Simulation Profiles") + (Folder "Model Libraries" + (Sort User)) + (Folder "Stimulus Files" + (Sort User)) + (Folder "Include Files" + (Sort User))) + (DefaultLibraryBrowseDirectory "library\PSpice") + (PartMRUSelector + (CON20A + (FullPartName "CON20A.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0"))) + (GlobalState + (FileView + (Path "Design Resources") + (Path "Outputs") + (Select "Outputs" + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_alim_capteurs\Schematic\composants.bom")) + (HierarchyView) + (Doc + (Type "COrCapturePMDoc") + (Frame + (Placement "44 0 1 0 527 -8 -28 1 347 -15 459")) + (Tab 0))) + (MPSSessionName "rouge")) diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM-DIODES.MAX b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM-DIODES.MAX new file mode 100644 index 0000000..0e3d6f0 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM-DIODES.MAX differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM.MNL b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM.MNL new file mode 100644 index 0000000..3515e71 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/CARTE_ALIM.MNL differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/PCB/PDF/CARTE_ALIM-DIODES-BOTTOM.pdf b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/PDF/CARTE_ALIM-DIODES-BOTTOM.pdf new file mode 100644 index 0000000..5b7e7fa Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/PDF/CARTE_ALIM-DIODES-BOTTOM.pdf differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/PCB/PDF/CARTE_ALIM-DIODES-TOP.pdf b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/PDF/CARTE_ALIM-DIODES-TOP.pdf new file mode 100644 index 0000000..5627c72 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/PDF/CARTE_ALIM-DIODES-TOP.pdf differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/PCB/layout.log b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/layout.log new file mode 100644 index 0000000..2fb3afa --- /dev/null +++ b/elec/boards/Balise_IR/Carte_alim_diodes/PCB/layout.log @@ -0,0 +1 @@ +Thu May 12 12:02:03 Saved as file ~undo.max diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/CARTE_ALIM.DSN b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/CARTE_ALIM.DSN new file mode 100644 index 0000000..6c73b3a Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/CARTE_ALIM.DSN differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/CARTE_ALIM_0.DBK b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/CARTE_ALIM_0.DBK new file mode 100644 index 0000000..6ab4608 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/CARTE_ALIM_0.DBK differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Carte_alim-PSpiceFiles/SCHEMATIC1/default.mrk b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Carte_alim-PSpiceFiles/SCHEMATIC1/default.mrk new file mode 100644 index 0000000..a1c2448 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Carte_alim-PSpiceFiles/SCHEMATIC1/default.mrk differ diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Carte_alim.opj b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Carte_alim.opj new file mode 100644 index 0000000..12cf9c8 --- /dev/null +++ b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Carte_alim.opj @@ -0,0 +1,102 @@ +(ExpressProject "Carte_alim" + (ProjectVersion "19981106") + (ProjectType "Analog or A/D Mixed Mode") + (Folder "Design Resources" + (Folder "Library") + (NoModify) + (File "carte_alim.dsn" + (Type "Schematic Design")) + (BuildFileAddedOrDeleted "x") + (CompileFileAddedOrDeleted "x") + (DRC_Scope "0") + (DRC_Action "0") + (DRC_Create_Warnings "FALSE") + (DRC_Check_Ports "FALSE") + (DRC_Check_Off-Page_Connectors "FALSE") + (DRC_Identical_References "TRUE") + (DRC_Type_Mismatch "TRUE") + (DRC_Report_Ports_and_Off-page_Connectors "FALSE") + (DRC_SDT_Compatibility "FALSE") + (DRC_Report_Off-grid_Objects "FALSE") + (DRC_Check_Unconnected_Nets "TRUE") + (DRC_Check_for_Misleading_TAP "FALSE") + (DRC_Visible_Power_pins "FALSE") + (DRC_Report_Netnames "FALSE") + (DRC_View_Output "FALSE") + (DRC_Report_File + "D:\Documents de Jason\Documents\BE\Robot_holonome\Carte_diodes\CARTE_DIODE.DRC") + (Netlist_TAB "3") + (LAYOUT_Netlist_File "CARTE_ALIM.MNL") + (LAYOUT_PCB_Footprint "{PCB Footprint}") + (TRUE) + (LAYOUT_Units "0") + (TRUE) + (FALSE) + (TRUE) + (TRUE) + (TRUE) + (TRUE) + (TRUE) + (BOM_Scope "0") + (BOM_Mode "0") + (BOM_Report_File + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_alim_diodes\Schematic\Composants.BOM") + (BOM_Merge_Include "FALSE") + (BOM_Property_Combine_7.0 "{Reference}\t{Quantity}\t{Value}") + (BOM_Header "Reference\tQuantity\tPart") + (BOM_Include_File + "D:\DOCUMENTS DE JASON\DOCUMENTS\BE\ROBOT_HOLONOME\CARTE_ALIM\CARTE_ALIM.INC") + (BOM_Include_File_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_One_Part_Per_Line "FALSE") + (Open_BOM_in_Excel "FALSE") + (BOM_View_Output "FALSE")) + (Folder "Outputs" + (File "..\carte_diodes\carte_diode.drc" + (Type "Report")) + (File ".\carte_alim.drc" + (Type "Report")) + (File ".\carte_alim.mnl" + (Type "LAYOUT Netlist File")) + (File "c:\users\rouge\desktop\essai.mnl" + (Type "LAYOUT Netlist File")) + (File ".\carte_alim.bom" + (Type "Report")) + (File ".\composants.bom" + (Type "Report"))) + (Folder "PSpice Resources" + (Folder "Simulation Profiles") + (Folder "Model Libraries" + (Sort User)) + (Folder "Stimulus Files" + (Sort User)) + (Folder "Include Files" + (Sort User))) + (DefaultLibraryBrowseDirectory "library\PSpice") + (PartMRUSelector + (CON20A + (FullPartName "CON20A.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (OFFPAGELEFT-L + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0"))) + (MPSSessionName "rouge") + (GlobalState + (FileView + (Path "Design Resources") + (Path "Outputs") + (Select "Outputs" + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_alim_diodes\Schematic\composants.bom")) + (HierarchyView) + (Doc + (Type "COrCapturePMDoc") + (Frame + (Placement "44 0 1 160 527 -8 -30 25 379 8 383")) + (Tab 0)) + (Doc + (Type "TextFile") + (Frame + (Placement "44 2 3 -1 -1 -8 -30 50 1237 50 429")) + (Path + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_alim_diodes\Schematic\composants.bom") + (Scroll "9")))) diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Composants.BOM b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Composants.BOM new file mode 100644 index 0000000..30da44f --- /dev/null +++ b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/Composants.BOM @@ -0,0 +1,35 @@ + Revised: Friday, May 06, 2011 + Revision: + + + + + + + +Bill Of Materials May 12,2011 13:43:00 Page1 + +Reference Quantity Part +______________________________________________ + +C11 1 10u +C12,C13 2 100n +C14 1 1u +C15 1 4.7u +D11 1 10BQ040 +D12 1 5V LED +D13 1 3.3V LED +E21 1 R-T +E22 1 SCL_PU +E23 1 SDA_PU +HF1 1 XBEE +J11 1 12V - 24V Power Supply +J21 1 JTAG +J22 1 I2C +J32 1 CON20A +R11,R12 2 680 +R21,R22,R23,R24,R25,R26, 8 10k +R27,R28 +R29,R210 2 4.7k +U11 1 TSR 1-2450 +U12 1 LT1521-3.3/SOT diff --git a/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/PDF/Carte_alim.pdf b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/PDF/Carte_alim.pdf new file mode 100644 index 0000000..6388e02 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_alim_diodes/Schematic/PDF/Carte_alim.pdf differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/PCB/CARTE_CAPTEURS.MAX b/elec/boards/Balise_IR/Carte_capteurs/PCB/CARTE_CAPTEURS.MAX new file mode 100644 index 0000000..02be9a1 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_capteurs/PCB/CARTE_CAPTEURS.MAX differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/PCB/PART_1.MNL b/elec/boards/Balise_IR/Carte_capteurs/PCB/PART_1.MNL new file mode 100644 index 0000000..53d5441 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_capteurs/PCB/PART_1.MNL differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/PCB/PDF/CARTE_CAPTEURS_BOTTOM.pdf b/elec/boards/Balise_IR/Carte_capteurs/PCB/PDF/CARTE_CAPTEURS_BOTTOM.pdf new file mode 100644 index 0000000..8296c14 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_capteurs/PCB/PDF/CARTE_CAPTEURS_BOTTOM.pdf differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/PCB/PDF/CARTE_CAPTEURS_TOP.pdf b/elec/boards/Balise_IR/Carte_capteurs/PCB/PDF/CARTE_CAPTEURS_TOP.pdf new file mode 100644 index 0000000..472e42b Binary files /dev/null and b/elec/boards/Balise_IR/Carte_capteurs/PCB/PDF/CARTE_CAPTEURS_TOP.pdf differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/PCB/layout.log b/elec/boards/Balise_IR/Carte_capteurs/PCB/layout.log new file mode 100644 index 0000000..ecaf33f --- /dev/null +++ b/elec/boards/Balise_IR/Carte_capteurs/PCB/layout.log @@ -0,0 +1,2 @@ +Thu May 12 12:08:20 Saved as file ~undo.max +Thu May 12 12:09:26 Saved as file ~undo.max diff --git a/elec/boards/Balise_IR/Carte_capteurs/Schematic/Composants.BOM b/elec/boards/Balise_IR/Carte_capteurs/Schematic/Composants.BOM new file mode 100644 index 0000000..b17fc90 --- /dev/null +++ b/elec/boards/Balise_IR/Carte_capteurs/Schematic/Composants.BOM @@ -0,0 +1,43 @@ +Capteurs infrarouge Revised: Saturday, May 07, 2011 + Revision: + + + + + + + +Bill Of Materials May 12,2011 13:44:18 Page1 + +Item Quantity Reference Part +______________________________________________ + +1 2 C2,C3 12p +2 6 C4,C8,C10,C11,C12,C13 100n +3 2 C6,C7 22p +4 1 C9 1u +5 1 C14 10u +6 16 C24,C25,C26,C27,C28,C29, 4.7u + C30,C31,C32,C33,C34,C35, + C36,C37,C38,C39 +7 1 D1 LED 1 +8 1 D2 LED 2 +9 1 E5 BOOT0 +10 1 E6 BOOT1 +11 16 J15,J16,J17,J18,J19,J20, CON4 + J21,J22,J23,J24,J25,J26, + J27,J28,J29,J30 +12 1 J32 CON20A +13 1 L1 Ferrite bead +14 3 R24,R36,R37 10k +15 2 R27,R28 680 +16 16 R48,R50,R52,R54,R56,R58, 100k + R60,R62,R64,R66,R68,R70, + R72,R74,R76,R78 +17 16 R49,R51,R53,R55,R57,R59, 100 + R61,R63,R65,R67,R69,R71, + R73,R75,R77,R79 +18 1 SW1 RESET +19 1 U2 STM32F103RET +20 1 X1 32768 +21 1 X2 8 MHz diff --git a/elec/boards/Balise_IR/Carte_capteurs/Schematic/PART_1.DSN b/elec/boards/Balise_IR/Carte_capteurs/Schematic/PART_1.DSN new file mode 100644 index 0000000..a0c498f Binary files /dev/null and b/elec/boards/Balise_IR/Carte_capteurs/Schematic/PART_1.DSN differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/Schematic/PART_1_0.DBK b/elec/boards/Balise_IR/Carte_capteurs/Schematic/PART_1_0.DBK new file mode 100644 index 0000000..c5c4117 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_capteurs/Schematic/PART_1_0.DBK differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/Schematic/PDF/Carte_capteurs.pdf b/elec/boards/Balise_IR/Carte_capteurs/Schematic/PDF/Carte_capteurs.pdf new file mode 100644 index 0000000..4010757 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_capteurs/Schematic/PDF/Carte_capteurs.pdf differ diff --git a/elec/boards/Balise_IR/Carte_capteurs/Schematic/Part_1.opj b/elec/boards/Balise_IR/Carte_capteurs/Schematic/Part_1.opj new file mode 100644 index 0000000..179575c --- /dev/null +++ b/elec/boards/Balise_IR/Carte_capteurs/Schematic/Part_1.opj @@ -0,0 +1,102 @@ +(ExpressProject "Part_1" + (ProjectVersion "19981106") + (ProjectType "Analog or A/D Mixed Mode") + (Folder "Design Resources" + (Folder "Library") + (NoModify) + (File ".\part_1.dsn" + (Type "Schematic Design")) + (BuildFileAddedOrDeleted "x") + (CompileFileAddedOrDeleted "x") + (DRC_Scope "0") + (DRC_Action "0") + (DRC_Create_Warnings "FALSE") + (DRC_Check_Ports "FALSE") + (DRC_Check_Off-Page_Connectors "FALSE") + (DRC_Identical_References "TRUE") + (DRC_Type_Mismatch "TRUE") + (DRC_Report_Ports_and_Off-page_Connectors "FALSE") + (DRC_SDT_Compatibility "FALSE") + (DRC_Report_Off-grid_Objects "FALSE") + (DRC_Check_Unconnected_Nets "TRUE") + (DRC_Check_for_Misleading_TAP "FALSE") + (DRC_Visible_Power_pins "FALSE") + (DRC_Report_Netnames "FALSE") + (DRC_View_Output "FALSE") + (DRC_Report_File + "D:\Documents de Jason\Documents\BE\Robot_holonome\Carte_alim\CARTE_ALIM.DRC") + (BOM_Scope "0") + (BOM_Mode "0") + (BOM_Report_File + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_capteurs\Schematic\Composants.BOM") + (BOM_Merge_Include "FALSE") + (BOM_Property_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_Header "Item\tQuantity\tReference\tPart") + (BOM_Include_File "C:\USERS\VINCENT\BUREAU ETUDE\PART_1\PART_1.INC") + (BOM_Include_File_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_One_Part_Per_Line "FALSE") + (Open_BOM_in_Excel "FALSE") + (BOM_View_Output "FALSE") + (Netlist_TAB "3") + (LAYOUT_Netlist_File "PART_1.MNL") + (LAYOUT_PCB_Footprint "{PCB Footprint}") + (TRUE) + (LAYOUT_Units "0") + (TRUE) + (TRUE) + (TRUE) + (TRUE)) + (Folder "Outputs" + (File ".\part_1.drc" + (Type "Report")) + (File ".\part_1.bom" + (Type "Report")) + (File ".\part_1.mnl" + (Type "LAYOUT Netlist File")) + (File + "d:\documents de jason\documents\be\robot_holonome\carte_alim\carte_alim.drc" + (Type "Report")) + (File ".\composants.bom" + (Type "Report"))) + (Folder "PSpice Resources" + (Folder "Simulation Profiles") + (Folder "Model Libraries" + (Sort User)) + (Folder "Stimulus Files" + (Sort User)) + (Folder "Include Files" + (Sort User))) + (DefaultLibraryBrowseDirectory "library\PSpice") + (PartMRUSelector + (OFFPAGELEFT-L + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0")) + (CON16 + (FullPartName "CON16.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (CON16A + (FullPartName "CON16A.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0"))) + (GlobalState + (FileView + (Path "Design Resources") + (Path "Outputs") + (Select "Outputs" + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_capteurs\Schematic\composants.bom")) + (HierarchyView) + (Doc + (Type "COrCapturePMDoc") + (Frame + (Placement "44 0 1 480 527 -8 -28 3 255 1 531")) + (Tab 0)) + (Doc + (Type "TextFile") + (Frame + (Placement "44 2 3 0 531 -8 -30 50 1237 50 429")) + (Path + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_capteurs\Schematic\composants.bom") + (Scroll "9"))) + (LastUsedLibraryBrowseDirectory "C:\OrCAD\OrCAD_16.0\tools\capture\library") + (MPSSessionName "rouge")) diff --git a/elec/boards/Balise_IR/Carte_diodes/PCB/BACKUP1.MAX b/elec/boards/Balise_IR/Carte_diodes/PCB/BACKUP1.MAX new file mode 100644 index 0000000..8783033 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/PCB/BACKUP1.MAX differ diff --git a/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MAX b/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MAX new file mode 100644 index 0000000..faec63e Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MAX differ diff --git a/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MNL b/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MNL new file mode 100644 index 0000000..8be8630 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/PCB/CARTE_DIODES.MNL differ diff --git a/elec/boards/Balise_IR/Carte_diodes/PCB/PDF/CARTE_DIODES_BOTTOM.pdf b/elec/boards/Balise_IR/Carte_diodes/PCB/PDF/CARTE_DIODES_BOTTOM.pdf new file mode 100644 index 0000000..a3c6868 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/PCB/PDF/CARTE_DIODES_BOTTOM.pdf differ diff --git a/elec/boards/Balise_IR/Carte_diodes/PCB/PDF/CARTE_DIODES_TOP.pdf b/elec/boards/Balise_IR/Carte_diodes/PCB/PDF/CARTE_DIODES_TOP.pdf new file mode 100644 index 0000000..7eac155 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/PCB/PDF/CARTE_DIODES_TOP.pdf differ diff --git a/elec/boards/Balise_IR/Carte_diodes/PCB/layout.log b/elec/boards/Balise_IR/Carte_diodes/PCB/layout.log new file mode 100644 index 0000000..41961a4 --- /dev/null +++ b/elec/boards/Balise_IR/Carte_diodes/PCB/layout.log @@ -0,0 +1 @@ +Thu May 12 00:27:26 Saved as file BACKUP1.MAX diff --git a/elec/boards/Balise_IR/Carte_diodes/Schematic/CARTE_DIODE.DSN b/elec/boards/Balise_IR/Carte_diodes/Schematic/CARTE_DIODE.DSN new file mode 100644 index 0000000..a969483 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/Schematic/CARTE_DIODE.DSN differ diff --git a/elec/boards/Balise_IR/Carte_diodes/Schematic/CARTE_DIODE_0.DBK b/elec/boards/Balise_IR/Carte_diodes/Schematic/CARTE_DIODE_0.DBK new file mode 100644 index 0000000..b951d67 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/Schematic/CARTE_DIODE_0.DBK differ diff --git a/elec/boards/Balise_IR/Carte_diodes/Schematic/Carte_diode-PSpiceFiles/SCHEMATIC1/default.mrk b/elec/boards/Balise_IR/Carte_diodes/Schematic/Carte_diode-PSpiceFiles/SCHEMATIC1/default.mrk new file mode 100644 index 0000000..a1c2448 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/Schematic/Carte_diode-PSpiceFiles/SCHEMATIC1/default.mrk differ diff --git a/elec/boards/Balise_IR/Carte_diodes/Schematic/Carte_diode.opj b/elec/boards/Balise_IR/Carte_diodes/Schematic/Carte_diode.opj new file mode 100644 index 0000000..e6a8bbb --- /dev/null +++ b/elec/boards/Balise_IR/Carte_diodes/Schematic/Carte_diode.opj @@ -0,0 +1,143 @@ +(ExpressProject "Carte_diode" + (ProjectVersion "19981106") + (ProjectType "Analog or A/D Mixed Mode") + (Folder "Design Resources" + (Folder "Library" + (File ".\library1.olb" + (Type "Schematic Library"))) + (NoModify) + (File ".\carte_diode.dsn" + (Type "Schematic Design")) + (BuildFileAddedOrDeleted "x") + (CompileFileAddedOrDeleted "x") + (DRC_Scope "0") + (DRC_Action "0") + (DRC_Create_Warnings "FALSE") + (DRC_Check_Ports "FALSE") + (DRC_Check_Off-Page_Connectors "FALSE") + (DRC_Identical_References "TRUE") + (DRC_Type_Mismatch "TRUE") + (DRC_Report_Ports_and_Off-page_Connectors "FALSE") + (DRC_SDT_Compatibility "FALSE") + (DRC_Report_Off-grid_Objects "FALSE") + (DRC_Check_Unconnected_Nets "TRUE") + (DRC_Check_for_Misleading_TAP "FALSE") + (DRC_Visible_Power_pins "FALSE") + (DRC_Report_Netnames "FALSE") + (DRC_View_Output "FALSE") + (DRC_Report_File + "C:\Users\rouge\Desktop\BE\Robot_holonome\Carte_diodes\CARTE_DIODE.DRC") + (Netlist_TAB "3") + (LAYOUT_Netlist_File "CARTE_DIODES.MNL") + (LAYOUT_PCB_Footprint "{PCB Footprint}") + (TRUE) + (LAYOUT_Units "0") + (TRUE) + (TRUE) + (GATE_&_PIN_SWAP_Scope "0") + (GATE_&_PIN_SWAP_File_Name + "C:\USERS\ROUGE\DESKTOP\BE\ROBOT_HOLONOME\CARTE_DIODES\CARTE_DIODE.SWP") + (Backannotation_TAB "1") + (TRUE) + (TRUE) + (BOM_Scope "0") + (BOM_Mode "0") + (BOM_Report_File + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_diodes\Schematic\Composants.BOM") + (BOM_Merge_Include "FALSE") + (BOM_Property_Combine_7.0 "{Reference}\t{Quantity}\t{Value}") + (BOM_Header "Reference\tQuantity\tPart") + (BOM_Include_File + "D:\DOCUMENTS DE JASON\DOCUMENTS\BE\ROBOT_HOLONOME\CARTE_DIODES\CARTE_DIODE.INC") + (BOM_Include_File_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_One_Part_Per_Line "FALSE") + (Open_BOM_in_Excel "FALSE") + (BOM_View_Output "FALSE")) + (Folder "Outputs" + (File "..\orcad_nouveau\carte_robot_adverse.drc" + (Type "Report")) + (File ".\carte_diode.drc" + (Type "Report")) + (File ".\carte_diodes.mnl" + (Type "LAYOUT Netlist File")) + (File ".\carte_diode.bom" + (Type "Report")) + (File ".\composants.bom" + (Type "Report"))) + (Folder "PSpice Resources" + (Folder "Simulation Profiles") + (Folder "Model Libraries" + (Sort User)) + (Folder "Stimulus Files" + (Sort User)) + (Folder "Include Files" + (Sort User))) + (DefaultLibraryBrowseDirectory "library\PSpice") + (PartMRUSelector + (GND + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0")) + (VCC + (LibraryName "\\LAFELN01\ORCAD15\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0")) + (OFFPAGELEFT-L + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0")) + (C + (FullPartName "C.Normal") + (LibraryName "D:\ORCAD\TOOLS\CAPTURE\LIBRARY\PSPICE\ANALOG.OLB") + (DeviceIndex "0")) + (LED + (FullPartName "LED.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\DISCRETE.OLB") + (DeviceIndex "0")) + (74VHC08/SO + (FullPartName "74VHC08/SO.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\GATE.OLB") + (DeviceIndex "0")) + (74VHC132/SO + (FullPartName "74VHC132/SO.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\GATE.OLB") + (DeviceIndex "0")) + (POT + (FullPartName "POT.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\DISCRETE.OLB") + (DeviceIndex "0")) + (R + (FullPartName "R.Normal") + (LibraryName + "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\PSPICE\ANALOG.OLB") + (DeviceIndex "0")) + (A6282 + (FullPartName "A6282.Normal") + (LibraryName + "C:\USERS\ROUGE\DESKTOP\BE\ROBOT_HOLONOME\CARTE_DIODES\LIBRARY1.OLB") + (DeviceIndex "0")) + (OFFPAGELEFT-R + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0")) + (CON20A + (FullPartName "CON20A.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0"))) + (MPSSessionName "rouge") + (GlobalState + (FileView + (Path "Design Resources") + (Path "Outputs") + (Select "Outputs" + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_diodes\Schematic\composants.bom")) + (HierarchyView) + (Doc + (Type "COrCapturePMDoc") + (Frame + (Placement "44 0 1 0 500 -8 -30 -3 333 82 457")) + (Tab 0)) + (Doc + (Type "TextFile") + (Frame + (Placement "44 2 3 -1 -1 -8 -30 50 1237 50 429")) + (Path + "C:\Krobot_Git\krobot\elec\boards\Balise_IR\Carte_diodes\Schematic\composants.bom") + (Scroll "9"))) + (LastUsedLibraryBrowseDirectory "C:\OrCAD\OrCAD_16.0\tools\capture\library")) diff --git a/elec/boards/Balise_IR/Carte_diodes/Schematic/Composants.BOM b/elec/boards/Balise_IR/Carte_diodes/Schematic/Composants.BOM new file mode 100644 index 0000000..ae08c75 --- /dev/null +++ b/elec/boards/Balise_IR/Carte_diodes/Schematic/Composants.BOM @@ -0,0 +1,43 @@ + Revised: Friday, May 06, 2011 + Revision: + + + + + + + +Bill Of Materials May 12,2011 13:46:16 Page1 + +Reference Quantity Part +______________________________________________ + +C11,C12 2 2n +C13 1 0.1u +C21,C27,C28,C29,C42,C210, 7 100n +C211 +C22,C23 2 12p +C24,C25 2 22p +C26 1 1u +C41,C212 2 10u +D21 1 LED 1 +D22 1 LED 2 +D40,D41,D42,D43,D44,D45, 16 LED +D46,D47,D48,D49,D410, +D411,D412,D413,D414,D415 +E21 1 BOOT1 +E22 1 BOOT0 +J31 1 CON20A +L21 1 Ferrite bead +R11 1 120k +R21,R22,R23 3 10k +R24,R25 2 680 +R41 1 1k +R42 1 50k +SW21 1 RESET +U11 1 ADXL213 +U21 1 STM32F103RET +U41 1 A6282 +U42 1 74VHC08/SO +X21 1 32768 +X22 1 8 MHz diff --git a/elec/boards/Balise_IR/Carte_diodes/Schematic/PDF/Carte_diode.pdf b/elec/boards/Balise_IR/Carte_diodes/Schematic/PDF/Carte_diode.pdf new file mode 100644 index 0000000..d58f4c9 Binary files /dev/null and b/elec/boards/Balise_IR/Carte_diodes/Schematic/PDF/Carte_diode.pdf differ hooks/post-receive -- krobot |
From: Benjamin A. <Ba...@us...> - 2011-05-11 08:40:02
|
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 653cc8da6f2281a43716ba3f299f3adc9828d4af (commit) via 7bba3cb9e0b18c442c8659ea2a96d3c2a08f79f9 (commit) from 65a4b675c5f268bae1716ed95ac25cee3184f2a4 (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 653cc8da6f2281a43716ba3f299f3adc9828d4af Merge: 7bba3cb9e0b18c442c8659ea2a96d3c2a08f79f9 65a4b675c5f268bae1716ed95ac25cee3184f2a4 Author: Benjamin Aupetit <au...@cr...> Date: Wed May 11 20:39:26 2011 +1200 Merge branch 'master' of ssh://krobot.git.sourceforge.net/gitroot/krobot/krobot commit 7bba3cb9e0b18c442c8659ea2a96d3c2a08f79f9 Author: Benjamin Aupetit <au...@cr...> Date: Wed May 11 20:36:34 2011 +1200 [meca] Update ----------------------------------------------------------------------- Changes: diff --git a/meca/2011_Senior/Ecrou/Ecrou M2.CATPart b/meca/2011_Senior/Ecrou/Ecrou M2.CATPart index 938753c..8468612 100644 Binary files a/meca/2011_Senior/Ecrou/Ecrou M2.CATPart and b/meca/2011_Senior/Ecrou/Ecrou M2.CATPart differ diff --git a/meca/2011_Senior/Ecrou/Ecrou M3 autoblocant.CATPart b/meca/2011_Senior/Ecrou/Ecrou M3 autoblocant.CATPart index 4bebc82..cabae3a 100644 Binary files a/meca/2011_Senior/Ecrou/Ecrou M3 autoblocant.CATPart and b/meca/2011_Senior/Ecrou/Ecrou M3 autoblocant.CATPart differ diff --git a/meca/2011_Senior/Ecrou/Ecrou M4 autoblocant.CATPart b/meca/2011_Senior/Ecrou/Ecrou M4 autoblocant.CATPart index 84d86c8..d7bf2e8 100644 Binary files a/meca/2011_Senior/Ecrou/Ecrou M4 autoblocant.CATPart and b/meca/2011_Senior/Ecrou/Ecrou M4 autoblocant.CATPart differ diff --git a/meca/2011_Senior/Entretoise/Entretoise M3 M-F 10mm.CATPart b/meca/2011_Senior/Entretoise/Entretoise M3 M-F 10mm.CATPart index f2be17b..5064375 100644 Binary files a/meca/2011_Senior/Entretoise/Entretoise M3 M-F 10mm.CATPart and b/meca/2011_Senior/Entretoise/Entretoise M3 M-F 10mm.CATPart differ diff --git a/meca/2011_Senior/Entretoise/Entretoise M3 M-F 30mm.CATPart b/meca/2011_Senior/Entretoise/Entretoise M3 M-F 30mm.CATPart index b14fcf4..37f2904 100644 Binary files a/meca/2011_Senior/Entretoise/Entretoise M3 M-F 30mm.CATPart and b/meca/2011_Senior/Entretoise/Entretoise M3 M-F 30mm.CATPart differ diff --git a/meca/2011_Senior/Entretoise/Entretoise M4 M-F 10mm.CATPart b/meca/2011_Senior/Entretoise/Entretoise M4 M-F 10mm.CATPart index c1d157e..bd7ee0d 100644 Binary files a/meca/2011_Senior/Entretoise/Entretoise M4 M-F 10mm.CATPart and b/meca/2011_Senior/Entretoise/Entretoise M4 M-F 10mm.CATPart differ diff --git a/meca/2011_Senior/Entretoise/Entretoise M4 M-F 20mm.CATPart b/meca/2011_Senior/Entretoise/Entretoise M4 M-F 20mm.CATPart index 85fcdf5..4c62a5a 100644 Binary files a/meca/2011_Senior/Entretoise/Entretoise M4 M-F 20mm.CATPart and b/meca/2011_Senior/Entretoise/Entretoise M4 M-F 20mm.CATPart differ diff --git a/meca/2011_Senior/Entretoise/Entretoise M4 M-F 60mm.CATPart b/meca/2011_Senior/Entretoise/Entretoise M4 M-F 60mm.CATPart index 4287dca..7343fb3 100644 Binary files a/meca/2011_Senior/Entretoise/Entretoise M4 M-F 60mm.CATPart and b/meca/2011_Senior/Entretoise/Entretoise M4 M-F 60mm.CATPart differ diff --git a/meca/2011_Senior/Etage_3.CATProduct b/meca/2011_Senior/Etage_3.CATProduct deleted file mode 100644 index 2045a4d..0000000 Binary files a/meca/2011_Senior/Etage_3.CATProduct and /dev/null differ diff --git a/meca/2011_Senior/SupportMiroir/Ecrou Gros Pignon.CATPart b/meca/2011_Senior/SupportMiroir/Ecrou Gros Pignon.CATPart index 2105cdc..c108dca 100644 Binary files a/meca/2011_Senior/SupportMiroir/Ecrou Gros Pignon.CATPart and b/meca/2011_Senior/SupportMiroir/Ecrou Gros Pignon.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Gros Pignon.CATPart b/meca/2011_Senior/SupportMiroir/Gros Pignon.CATPart index ff15413..a4abd1f 100644 Binary files a/meca/2011_Senior/SupportMiroir/Gros Pignon.CATPart and b/meca/2011_Senior/SupportMiroir/Gros Pignon.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Mat_Balise.CATProduct b/meca/2011_Senior/SupportMiroir/Mat_Balise.CATProduct index 25a9e4c..ffffd1f 100644 Binary files a/meca/2011_Senior/SupportMiroir/Mat_Balise.CATProduct and b/meca/2011_Senior/SupportMiroir/Mat_Balise.CATProduct differ diff --git a/meca/2011_Senior/SupportMiroir/Maxon_2326.936-22.111-028.CATPart b/meca/2011_Senior/SupportMiroir/Maxon_2326.936-22.111-028.CATPart index 41e5092..d6a51ab 100644 Binary files a/meca/2011_Senior/SupportMiroir/Maxon_2326.936-22.111-028.CATPart and b/meca/2011_Senior/SupportMiroir/Maxon_2326.936-22.111-028.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Omron E3Z-R61.CATPart b/meca/2011_Senior/SupportMiroir/Omron E3Z-R61.CATPart index 2a3a35a..ce1e3e2 100644 Binary files a/meca/2011_Senior/SupportMiroir/Omron E3Z-R61.CATPart and b/meca/2011_Senior/SupportMiroir/Omron E3Z-R61.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Rondelle Gros Pignon.CATPart b/meca/2011_Senior/SupportMiroir/Rondelle Gros Pignon.CATPart index 866a0ba..16418da 100644 Binary files a/meca/2011_Senior/SupportMiroir/Rondelle Gros Pignon.CATPart and b/meca/2011_Senior/SupportMiroir/Rondelle Gros Pignon.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart b/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart index 386ffb2..4ec682a 100644 Binary files a/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart and b/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Support Adverse.CATPart b/meca/2011_Senior/SupportMiroir/Support Adverse.CATPart index 8af8342..ffc11bf 100644 Binary files a/meca/2011_Senior/SupportMiroir/Support Adverse.CATPart and b/meca/2011_Senior/SupportMiroir/Support Adverse.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Support Base.CATPart b/meca/2011_Senior/SupportMiroir/Support Base.CATPart index d3983c0..6708e93 100644 Binary files a/meca/2011_Senior/SupportMiroir/Support Base.CATPart and b/meca/2011_Senior/SupportMiroir/Support Base.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Support_Maxon.CATPart b/meca/2011_Senior/SupportMiroir/Support_Maxon.CATPart index a73c15d..707f09e 100644 Binary files a/meca/2011_Senior/SupportMiroir/Support_Maxon.CATPart and b/meca/2011_Senior/SupportMiroir/Support_Maxon.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Support_Miroir.CATPart b/meca/2011_Senior/SupportMiroir/Support_Miroir.CATPart index 02fc162..d9866bb 100644 Binary files a/meca/2011_Senior/SupportMiroir/Support_Miroir.CATPart and b/meca/2011_Senior/SupportMiroir/Support_Miroir.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Vis Gros Pignon.CATPart b/meca/2011_Senior/SupportMiroir/Vis Gros Pignon.CATPart index 217844a..5539516 100644 Binary files a/meca/2011_Senior/SupportMiroir/Vis Gros Pignon.CATPart and b/meca/2011_Senior/SupportMiroir/Vis Gros Pignon.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Vis tete bombee hexa M3x6.CATPart b/meca/2011_Senior/SupportMiroir/Vis tete bombee hexa M3x6.CATPart index b921047..b68a291 100644 Binary files a/meca/2011_Senior/SupportMiroir/Vis tete bombee hexa M3x6.CATPart and b/meca/2011_Senior/SupportMiroir/Vis tete bombee hexa M3x6.CATPart differ diff --git a/meca/2011_Senior/SupportMiroir/Vis tete fraisee plate M2x4.CATPart b/meca/2011_Senior/SupportMiroir/Vis tete fraisee plate M2x4.CATPart index 55a9198..4c82c98 100644 Binary files a/meca/2011_Senior/SupportMiroir/Vis tete fraisee plate M2x4.CATPart and b/meca/2011_Senior/SupportMiroir/Vis tete fraisee plate M2x4.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis cylindrique hexa M3x10.CATPart b/meca/2011_Senior/Vis/Vis cylindrique hexa M3x10.CATPart index eb2ab64..ed1e8bd 100644 Binary files a/meca/2011_Senior/Vis/Vis cylindrique hexa M3x10.CATPart and b/meca/2011_Senior/Vis/Vis cylindrique hexa M3x10.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis cylindrique hexa M4x25.CATPart b/meca/2011_Senior/Vis/Vis cylindrique hexa M4x25.CATPart index 030720b..199accf 100644 Binary files a/meca/2011_Senior/Vis/Vis cylindrique hexa M4x25.CATPart and b/meca/2011_Senior/Vis/Vis cylindrique hexa M4x25.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis cylindrique hexa M4x35.CATPart b/meca/2011_Senior/Vis/Vis cylindrique hexa M4x35.CATPart index b2ba39e..1b1d398 100644 Binary files a/meca/2011_Senior/Vis/Vis cylindrique hexa M4x35.CATPart and b/meca/2011_Senior/Vis/Vis cylindrique hexa M4x35.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis tete bombee hexa M3x12.CATPart b/meca/2011_Senior/Vis/Vis tete bombee hexa M3x12.CATPart index a063422..5cd9c2f 100644 Binary files a/meca/2011_Senior/Vis/Vis tete bombee hexa M3x12.CATPart and b/meca/2011_Senior/Vis/Vis tete bombee hexa M3x12.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis tete bombee hexa M4x10.CATPart b/meca/2011_Senior/Vis/Vis tete bombee hexa M4x10.CATPart index d002055..22f3672 100644 Binary files a/meca/2011_Senior/Vis/Vis tete bombee hexa M4x10.CATPart and b/meca/2011_Senior/Vis/Vis tete bombee hexa M4x10.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis tete bombee hexa M4x12.CATPart b/meca/2011_Senior/Vis/Vis tete bombee hexa M4x12.CATPart index 76edd31..01b1ff3 100644 Binary files a/meca/2011_Senior/Vis/Vis tete bombee hexa M4x12.CATPart and b/meca/2011_Senior/Vis/Vis tete bombee hexa M4x12.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis tete bombee hexa M4x16.CATPart b/meca/2011_Senior/Vis/Vis tete bombee hexa M4x16.CATPart index 1f8048e..31f6d84 100644 Binary files a/meca/2011_Senior/Vis/Vis tete bombee hexa M4x16.CATPart and b/meca/2011_Senior/Vis/Vis tete bombee hexa M4x16.CATPart differ diff --git a/meca/2011_Senior/Vis/Vis tete bombee pozi M2x12.CATPart b/meca/2011_Senior/Vis/Vis tete bombee pozi M2x12.CATPart index a4ec6a8..4e751a6 100644 Binary files a/meca/2011_Senior/Vis/Vis tete bombee pozi M2x12.CATPart and b/meca/2011_Senior/Vis/Vis tete bombee pozi M2x12.CATPart differ diff --git a/meca/2011_Senior/Vis/attache.CATProduct b/meca/2011_Senior/Vis/attache.CATProduct index d74ebc4..3147150 100644 Binary files a/meca/2011_Senior/Vis/attache.CATProduct and b/meca/2011_Senior/Vis/attache.CATProduct differ diff --git a/meca/2011_Senior/Vis/serrage.CATProduct b/meca/2011_Senior/Vis/serrage.CATProduct index 609543a..b4d0ebf 100644 Binary files a/meca/2011_Senior/Vis/serrage.CATProduct and b/meca/2011_Senior/Vis/serrage.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart index bbb932b..7a11a0b 100644 Binary files a/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart and b/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_moteur.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_moteur.CATPart index 629626e..674f174 100644 Binary files a/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_moteur.CATPart and b/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_moteur.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_axe_chapeau.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_axe_chapeau.CATPart index a80a881..a8c4bce 100644 Binary files a/meca/2011_Senior/ascenceurs/Ascenseur_axe_chapeau.CATPart and b/meca/2011_Senior/ascenceurs/Ascenseur_axe_chapeau.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_axe_chapeau_complet.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_axe_chapeau_complet.CATPart new file mode 100644 index 0000000..bfd8641 Binary files /dev/null and b/meca/2011_Senior/ascenceurs/Ascenseur_axe_chapeau_complet.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_axe_douille.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_axe_douille.CATPart index 3e45683..701d91a 100644 Binary files a/meca/2011_Senior/ascenceurs/Ascenseur_axe_douille.CATPart and b/meca/2011_Senior/ascenceurs/Ascenseur_axe_douille.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_axe_glissiere.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_axe_glissiere.CATPart index 7b62622..f16e533 100644 Binary files a/meca/2011_Senior/ascenceurs/Ascenseur_axe_glissiere.CATPart and b/meca/2011_Senior/ascenceurs/Ascenseur_axe_glissiere.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_plaque.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_plaque.CATPart index ad3c63a..a461105 100644 Binary files a/meca/2011_Senior/ascenceurs/Ascenseur_plaque.CATPart and b/meca/2011_Senior/ascenceurs/Ascenseur_plaque.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/IG-42GM.CATPart b/meca/2011_Senior/ascenceurs/IG-42GM.CATPart index dfaf001..ae26090 100644 Binary files a/meca/2011_Senior/ascenceurs/IG-42GM.CATPart and b/meca/2011_Senior/ascenceurs/IG-42GM.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/IG-42GM_support.CATPart b/meca/2011_Senior/ascenceurs/IG-42GM_support.CATPart index 57bd226..1aeaddb 100644 Binary files a/meca/2011_Senior/ascenceurs/IG-42GM_support.CATPart and b/meca/2011_Senior/ascenceurs/IG-42GM_support.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct b/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct index a672e27..adacf46 100644 Binary files a/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct and b/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct b/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct index 8be584c..c9c1ca1 100644 Binary files a/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct and b/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/Profile en U 1x1x0.125 pouce.CATPart b/meca/2011_Senior/ascenceurs/Profile en U 1x1x0.125 pouce.CATPart index aa790ad..e746785 100644 Binary files a/meca/2011_Senior/ascenceurs/Profile en U 1x1x0.125 pouce.CATPart and b/meca/2011_Senior/ascenceurs/Profile en U 1x1x0.125 pouce.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/ascenseur.CATProduct b/meca/2011_Senior/ascenceurs/ascenseur.CATProduct index cc204cc..0e40be9 100644 Binary files a/meca/2011_Senior/ascenceurs/ascenseur.CATProduct and b/meca/2011_Senior/ascenceurs/ascenseur.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/attache-pince.CATProduct b/meca/2011_Senior/ascenceurs/attache-pince.CATProduct index 371d74d..e354cc0 100644 Binary files a/meca/2011_Senior/ascenceurs/attache-pince.CATProduct and b/meca/2011_Senior/ascenceurs/attache-pince.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart b/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart index 81d5ec7..acd393c 100644 Binary files a/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart and b/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/poulie_bas_axe.CATPart b/meca/2011_Senior/ascenceurs/poulie_bas_axe.CATPart index c63eabd..f916616 100644 Binary files a/meca/2011_Senior/ascenceurs/poulie_bas_axe.CATPart and b/meca/2011_Senior/ascenceurs/poulie_bas_axe.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/poulie_bas_coussinet.CATPart b/meca/2011_Senior/ascenceurs/poulie_bas_coussinet.CATPart index 631d99c..80813f8 100644 Binary files a/meca/2011_Senior/ascenceurs/poulie_bas_coussinet.CATPart and b/meca/2011_Senior/ascenceurs/poulie_bas_coussinet.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/serre-courroie-mobile.CATPart b/meca/2011_Senior/ascenceurs/serre-courroie-mobile.CATPart index 4d4d426..a313ffd 100644 Binary files a/meca/2011_Senior/ascenceurs/serre-courroie-mobile.CATPart and b/meca/2011_Senior/ascenceurs/serre-courroie-mobile.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/serre-courroie-serrage-element.CATProduct b/meca/2011_Senior/ascenceurs/serre-courroie-serrage-element.CATProduct index e41b14b..d444d63 100644 Binary files a/meca/2011_Senior/ascenceurs/serre-courroie-serrage-element.CATProduct and b/meca/2011_Senior/ascenceurs/serre-courroie-serrage-element.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/serre-courroie-serrage.CATProduct b/meca/2011_Senior/ascenceurs/serre-courroie-serrage.CATProduct index 37d94d4..b5aaa14 100644 Binary files a/meca/2011_Senior/ascenceurs/serre-courroie-serrage.CATProduct and b/meca/2011_Senior/ascenceurs/serre-courroie-serrage.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/serre-courroie.CATPart b/meca/2011_Senior/ascenceurs/serre-courroie.CATPart index 14d6826..deb795c 100644 Binary files a/meca/2011_Senior/ascenceurs/serre-courroie.CATPart and b/meca/2011_Senior/ascenceurs/serre-courroie.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/serre-douille.CATProduct b/meca/2011_Senior/ascenceurs/serre-douille.CATProduct index ab3dd2d..2624d3b 100644 Binary files a/meca/2011_Senior/ascenceurs/serre-douille.CATProduct and b/meca/2011_Senior/ascenceurs/serre-douille.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/vis-serre-courroie.CATProduct b/meca/2011_Senior/ascenceurs/vis-serre-courroie.CATProduct index 91b8de6..2aa1d7e 100644 Binary files a/meca/2011_Senior/ascenceurs/vis-serre-courroie.CATProduct and b/meca/2011_Senior/ascenceurs/vis-serre-courroie.CATProduct differ diff --git a/meca/2011_Senior/bati/base.CATPart b/meca/2011_Senior/bati/base.CATPart index 3e7098a..fe01ca5 100644 Binary files a/meca/2011_Senior/bati/base.CATPart and b/meca/2011_Senior/bati/base.CATPart differ diff --git a/meca/2011_Senior/bati/entretoise-bloc-moteur.CATProduct b/meca/2011_Senior/bati/entretoise-bloc-moteur.CATProduct index 70b5c4f..72039d0 100644 Binary files a/meca/2011_Senior/bati/entretoise-bloc-moteur.CATProduct and b/meca/2011_Senior/bati/entretoise-bloc-moteur.CATProduct differ diff --git a/meca/2011_Senior/bati/plaque2.CATPart b/meca/2011_Senior/bati/plaque2.CATPart index d67e6ec..8b5554e 100644 Binary files a/meca/2011_Senior/bati/plaque2.CATPart and b/meca/2011_Senior/bati/plaque2.CATPart differ diff --git a/meca/2011_Senior/bati/plaque3.CATPart b/meca/2011_Senior/bati/plaque3.CATPart index 76625e6..3955ed5 100644 Binary files a/meca/2011_Senior/bati/plaque3.CATPart and b/meca/2011_Senior/bati/plaque3.CATPart differ diff --git a/meca/2011_Senior/bati/plaque4.CATPart b/meca/2011_Senior/bati/plaque4.CATPart index ae720aa..341b566 100644 Binary files a/meca/2011_Senior/bati/plaque4.CATPart and b/meca/2011_Senior/bati/plaque4.CATPart differ diff --git a/meca/2011_Senior/bati/plaque5.CATPart b/meca/2011_Senior/bati/plaque5.CATPart index 7710d0f..537c4df 100644 Binary files a/meca/2011_Senior/bati/plaque5.CATPart and b/meca/2011_Senior/bati/plaque5.CATPart differ diff --git a/meca/2011_Senior/cartes/AX12 Interface.CATPart b/meca/2011_Senior/cartes/AX12 Interface.CATPart index 54d0119..cc8da80 100644 Binary files a/meca/2011_Senior/cartes/AX12 Interface.CATPart and b/meca/2011_Senior/cartes/AX12 Interface.CATPart differ diff --git a/meca/2011_Senior/cartes/Alim Pico-ITX.CATPart b/meca/2011_Senior/cartes/Alim Pico-ITX.CATPart index b6da3ab..8700714 100644 Binary files a/meca/2011_Senior/cartes/Alim Pico-ITX.CATPart and b/meca/2011_Senior/cartes/Alim Pico-ITX.CATPart differ diff --git a/meca/2011_Senior/cartes/Carte-capteur.CATPart b/meca/2011_Senior/cartes/Carte-capteur.CATPart index 557f569..dc211f3 100644 Binary files a/meca/2011_Senior/cartes/Carte-capteur.CATPart and b/meca/2011_Senior/cartes/Carte-capteur.CATPart differ diff --git a/meca/2011_Senior/cartes/CarteAsservissement.CATPart b/meca/2011_Senior/cartes/CarteAsservissement.CATPart index f447c5e..fa1dce3 100644 Binary files a/meca/2011_Senior/cartes/CarteAsservissement.CATPart and b/meca/2011_Senior/cartes/CarteAsservissement.CATPart differ diff --git a/meca/2011_Senior/cartes/H-Bridge.CATPart b/meca/2011_Senior/cartes/H-Bridge.CATPart index 289272d..19a6436 100644 Binary files a/meca/2011_Senior/cartes/H-Bridge.CATPart and b/meca/2011_Senior/cartes/H-Bridge.CATPart differ diff --git a/meca/2011_Senior/cartes/PicoITX.CATPart b/meca/2011_Senior/cartes/PicoITX.CATPart index a1b356b..796db10 100644 Binary files a/meca/2011_Senior/cartes/PicoITX.CATPart and b/meca/2011_Senior/cartes/PicoITX.CATPart differ diff --git a/meca/2011_Senior/cartes/SSD.CATPart b/meca/2011_Senior/cartes/SSD.CATPart index 7901dc1..3decb86 100644 Binary files a/meca/2011_Senior/cartes/SSD.CATPart and b/meca/2011_Senior/cartes/SSD.CATPart differ diff --git a/meca/2011_Senior/cartes/USB-CAN.CATPart b/meca/2011_Senior/cartes/USB-CAN.CATPart index 8ac3575..61cda41 100644 Binary files a/meca/2011_Senior/cartes/USB-CAN.CATPart and b/meca/2011_Senior/cartes/USB-CAN.CATPart differ diff --git a/meca/2011_Senior/cartes/cartes.CATProduct b/meca/2011_Senior/cartes/cartes.CATProduct index 146063b..adabe03 100644 Binary files a/meca/2011_Senior/cartes/cartes.CATProduct and b/meca/2011_Senior/cartes/cartes.CATProduct differ diff --git a/meca/2011_Senior/cartes/entretoise-et3.CATProduct b/meca/2011_Senior/cartes/entretoise-et3.CATProduct index ffe4890..942226b 100644 Binary files a/meca/2011_Senior/cartes/entretoise-et3.CATProduct and b/meca/2011_Senior/cartes/entretoise-et3.CATProduct differ diff --git a/meca/2011_Senior/cartes/entretoises-carte.CATProduct b/meca/2011_Senior/cartes/entretoises-carte.CATProduct index 1f29607..41795b1 100644 Binary files a/meca/2011_Senior/cartes/entretoises-carte.CATProduct and b/meca/2011_Senior/cartes/entretoises-carte.CATProduct differ diff --git a/meca/2011_Senior/cartes/entretoises-cartes.CATProduct b/meca/2011_Senior/cartes/entretoises-cartes.CATProduct index 3f7a070..ecc3802 100644 Binary files a/meca/2011_Senior/cartes/entretoises-cartes.CATProduct and b/meca/2011_Senior/cartes/entretoises-cartes.CATProduct differ diff --git a/meca/2011_Senior/divers/Galet.CATProduct b/meca/2011_Senior/divers/Galet.CATProduct index 2a9d7d2..2180d0b 100644 Binary files a/meca/2011_Senior/divers/Galet.CATProduct and b/meca/2011_Senior/divers/Galet.CATProduct differ diff --git a/meca/2011_Senior/divers/PackBatteries.CATPart b/meca/2011_Senior/divers/PackBatteries.CATPart index ba91394..d129855 100644 Binary files a/meca/2011_Senior/divers/PackBatteries.CATPart and b/meca/2011_Senior/divers/PackBatteries.CATPart differ diff --git a/meca/2011_Senior/divers/galet_axe.CATPart b/meca/2011_Senior/divers/galet_axe.CATPart index 8467b1f..6c537ed 100644 Binary files a/meca/2011_Senior/divers/galet_axe.CATPart and b/meca/2011_Senior/divers/galet_axe.CATPart differ diff --git a/meca/2011_Senior/divers/galet_boulon.CATPart b/meca/2011_Senior/divers/galet_boulon.CATPart index 71eb235..0e85022 100644 Binary files a/meca/2011_Senior/divers/galet_boulon.CATPart and b/meca/2011_Senior/divers/galet_boulon.CATPart differ diff --git a/meca/2011_Senior/divers/galet_rondelle.CATPart b/meca/2011_Senior/divers/galet_rondelle.CATPart index 76d7e2f..c44cfbd 100644 Binary files a/meca/2011_Senior/divers/galet_rondelle.CATPart and b/meca/2011_Senior/divers/galet_rondelle.CATPart differ diff --git a/meca/2011_Senior/divers/galet_roulement.CATPart b/meca/2011_Senior/divers/galet_roulement.CATPart index 01831ac..9b0112a 100644 Binary files a/meca/2011_Senior/divers/galet_roulement.CATPart and b/meca/2011_Senior/divers/galet_roulement.CATPart differ diff --git a/meca/2011_Senior/divers/perimetre.CATPart b/meca/2011_Senior/divers/perimetre.CATPart index 678ec84..341e566 100644 Binary files a/meca/2011_Senior/divers/perimetre.CATPart and b/meca/2011_Senior/divers/perimetre.CATPart differ diff --git a/meca/2011_Senior/divers/pince_haut.CATPart b/meca/2011_Senior/divers/pince_haut.CATPart index 530dd65..2fbe9ec 100644 Binary files a/meca/2011_Senior/divers/pince_haut.CATPart and b/meca/2011_Senior/divers/pince_haut.CATPart differ diff --git a/meca/2011_Senior/divers/plan.CATPart b/meca/2011_Senior/divers/plan.CATPart index bc270c0..465a3d1 100644 Binary files a/meca/2011_Senior/divers/plan.CATPart and b/meca/2011_Senior/divers/plan.CATPart differ diff --git a/meca/2011_Senior/divers/planlaser.CATPart b/meca/2011_Senior/divers/planlaser.CATPart index 908159f..f042836 100644 Binary files a/meca/2011_Senior/divers/planlaser.CATPart and b/meca/2011_Senior/divers/planlaser.CATPart differ diff --git a/meca/2011_Senior/divers/planlaser_avec_support.CATProduct b/meca/2011_Senior/divers/planlaser_avec_support.CATProduct index f08bda7..e7b34af 100644 Binary files a/meca/2011_Senior/divers/planlaser_avec_support.CATProduct and b/meca/2011_Senior/divers/planlaser_avec_support.CATProduct differ diff --git a/meca/2011_Senior/divers/sol.CATPart b/meca/2011_Senior/divers/sol.CATPart index 7f13a8c..4e5a743 100644 Binary files a/meca/2011_Senior/divers/sol.CATPart and b/meca/2011_Senior/divers/sol.CATPart differ diff --git a/meca/2011_Senior/divers/support_planlaser.CATPart b/meca/2011_Senior/divers/support_planlaser.CATPart index 05b63a3..46e041b 100644 Binary files a/meca/2011_Senior/divers/support_planlaser.CATPart and b/meca/2011_Senior/divers/support_planlaser.CATPart differ diff --git a/meca/2011_Senior/divers/webcam.CATProduct b/meca/2011_Senior/divers/webcam.CATProduct index 460a778..c3b6225 100644 Binary files a/meca/2011_Senior/divers/webcam.CATProduct and b/meca/2011_Senior/divers/webcam.CATProduct differ diff --git a/meca/2011_Senior/divers/webcam_cam.CATPart b/meca/2011_Senior/divers/webcam_cam.CATPart index ab178fb..56c3620 100644 Binary files a/meca/2011_Senior/divers/webcam_cam.CATPart and b/meca/2011_Senior/divers/webcam_cam.CATPart differ diff --git a/meca/2011_Senior/divers/webcam_support.CATPart b/meca/2011_Senior/divers/webcam_support.CATPart index ec6b4f2..52715f5 100644 Binary files a/meca/2011_Senior/divers/webcam_support.CATPart and b/meca/2011_Senior/divers/webcam_support.CATPart differ diff --git a/meca/2011_Senior/divers/webcam_vue.CATPart b/meca/2011_Senior/divers/webcam_vue.CATPart index 4c58239..40021cd 100644 Binary files a/meca/2011_Senior/divers/webcam_vue.CATPart and b/meca/2011_Senior/divers/webcam_vue.CATPart differ diff --git a/meca/2011_Senior/etages/Etage_1.CATProduct b/meca/2011_Senior/etages/Etage_1.CATProduct index 6d266fd..c2e5d48 100644 Binary files a/meca/2011_Senior/etages/Etage_1.CATProduct and b/meca/2011_Senior/etages/Etage_1.CATProduct differ diff --git a/meca/2011_Senior/etages/Etage_2.CATProduct b/meca/2011_Senior/etages/Etage_2.CATProduct index 9f12bd8..fa842f0 100644 Binary files a/meca/2011_Senior/etages/Etage_2.CATProduct and b/meca/2011_Senior/etages/Etage_2.CATProduct differ diff --git a/meca/2011_Senior/etages/Etage_3.CATProduct b/meca/2011_Senior/etages/Etage_3.CATProduct index a575b11..5e6ebb6 100644 Binary files a/meca/2011_Senior/etages/Etage_3.CATProduct and b/meca/2011_Senior/etages/Etage_3.CATProduct differ diff --git a/meca/2011_Senior/etages/entretoise-etage3.CATProduct b/meca/2011_Senior/etages/entretoise-etage3.CATProduct index 9d89b60..676a293 100644 Binary files a/meca/2011_Senior/etages/entretoise-etage3.CATProduct and b/meca/2011_Senior/etages/entretoise-etage3.CATProduct differ diff --git a/meca/2011_Senior/etages/entretoises-m3-et2.CATProduct b/meca/2011_Senior/etages/entretoises-m3-et2.CATProduct index 4ed0fed..428681a 100644 Binary files a/meca/2011_Senior/etages/entretoises-m3-et2.CATProduct and b/meca/2011_Senior/etages/entretoises-m3-et2.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/axes.CATProduct b/meca/2011_Senior/etages/etage1/axes.CATProduct index f469523..119548c 100644 Binary files a/meca/2011_Senior/etages/etage1/axes.CATProduct and b/meca/2011_Senior/etages/etage1/axes.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/bloc_moteur.CATProduct b/meca/2011_Senior/etages/etage1/bloc_moteur.CATProduct index da2f81d..9e1854f 100644 Binary files a/meca/2011_Senior/etages/etage1/bloc_moteur.CATProduct and b/meca/2011_Senior/etages/etage1/bloc_moteur.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/entretoise-etage.CATProduct b/meca/2011_Senior/etages/etage1/entretoise-etage.CATProduct index 97eacd5..fee7edf 100644 Binary files a/meca/2011_Senior/etages/etage1/entretoise-etage.CATProduct and b/meca/2011_Senior/etages/etage1/entretoise-etage.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/entretoises-bloc-moteur.CATProduct b/meca/2011_Senior/etages/etage1/entretoises-bloc-moteur.CATProduct index a8b7458..7f770df 100644 Binary files a/meca/2011_Senior/etages/etage1/entretoises-bloc-moteur.CATProduct and b/meca/2011_Senior/etages/etage1/entretoises-bloc-moteur.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/entretoises-etage.CATProduct b/meca/2011_Senior/etages/etage1/entretoises-etage.CATProduct index 4150abc..c92a677 100644 Binary files a/meca/2011_Senior/etages/etage1/entretoises-etage.CATProduct and b/meca/2011_Senior/etages/etage1/entretoises-etage.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/galets.CATProduct b/meca/2011_Senior/etages/etage1/galets.CATProduct index d2a4519..d9d2f35 100644 Binary files a/meca/2011_Senior/etages/etage1/galets.CATProduct and b/meca/2011_Senior/etages/etage1/galets.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/repere.CATPart b/meca/2011_Senior/etages/etage1/repere.CATPart index 057aace..72205a2 100644 Binary files a/meca/2011_Senior/etages/etage1/repere.CATPart and b/meca/2011_Senior/etages/etage1/repere.CATPart differ diff --git a/meca/2011_Senior/etages/etage1/vis-axes.CATProduct b/meca/2011_Senior/etages/etage1/vis-axes.CATProduct index 0bac1c6..a216c47 100644 Binary files a/meca/2011_Senior/etages/etage1/vis-axes.CATProduct and b/meca/2011_Senior/etages/etage1/vis-axes.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/vis_billes.CATProduct b/meca/2011_Senior/etages/etage1/vis_billes.CATProduct index 3b4c0bc..af70295 100644 Binary files a/meca/2011_Senior/etages/etage1/vis_billes.CATProduct and b/meca/2011_Senior/etages/etage1/vis_billes.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/vis_moteur_ascenseur.CATProduct b/meca/2011_Senior/etages/etage1/vis_moteur_ascenseur.CATProduct index 6f404b7..33e35af 100644 Binary files a/meca/2011_Senior/etages/etage1/vis_moteur_ascenseur.CATProduct and b/meca/2011_Senior/etages/etage1/vis_moteur_ascenseur.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/visserie.CATProduct b/meca/2011_Senior/etages/etage1/visserie.CATProduct index a84fb4d..d5d6135 100644 Binary files a/meca/2011_Senior/etages/etage1/visserie.CATProduct and b/meca/2011_Senior/etages/etage1/visserie.CATProduct differ diff --git a/meca/2011_Senior/etages/etage2/entretoise-et2.CATProduct b/meca/2011_Senior/etages/etage2/entretoise-et2.CATProduct index d563ecd..c2cbcc0 100644 Binary files a/meca/2011_Senior/etages/etage2/entretoise-et2.CATProduct and b/meca/2011_Senior/etages/etage2/entretoise-et2.CATProduct differ diff --git a/meca/2011_Senior/etages/etage2/entretoise-etage2.CATProduct b/meca/2011_Senior/etages/etage2/entretoise-etage2.CATProduct index 48ebc57..a3ca908 100644 Binary files a/meca/2011_Senior/etages/etage2/entretoise-etage2.CATProduct and b/meca/2011_Senior/etages/etage2/entretoise-etage2.CATProduct differ diff --git a/meca/2011_Senior/pinces/AX12.CATProduct b/meca/2011_Senior/pinces/AX12.CATProduct index e17b4ac..19578b3 100644 Binary files a/meca/2011_Senior/pinces/AX12.CATProduct and b/meca/2011_Senior/pinces/AX12.CATProduct differ diff --git a/meca/2011_Senior/pinces/AX12_actionneur.CATPart b/meca/2011_Senior/pinces/AX12_actionneur.CATPart index 5285b2a..87263af 100644 Binary files a/meca/2011_Senior/pinces/AX12_actionneur.CATPart and b/meca/2011_Senior/pinces/AX12_actionneur.CATPart differ diff --git a/meca/2011_Senior/pinces/AX12_fixation.CATPart b/meca/2011_Senior/pinces/AX12_fixation.CATPart index fc013cd..00f5eea 100644 Binary files a/meca/2011_Senior/pinces/AX12_fixation.CATPart and b/meca/2011_Senior/pinces/AX12_fixation.CATPart differ diff --git a/meca/2011_Senior/pinces/AX12_mobile.CATPart b/meca/2011_Senior/pinces/AX12_mobile.CATPart index 798860a..beda197 100644 Binary files a/meca/2011_Senior/pinces/AX12_mobile.CATPart and b/meca/2011_Senior/pinces/AX12_mobile.CATPart differ diff --git a/meca/2011_Senior/pinces/L_bas.CATPart b/meca/2011_Senior/pinces/L_bas.CATPart index 5ff594d..b24a7c3 100644 Binary files a/meca/2011_Senior/pinces/L_bas.CATPart and b/meca/2011_Senior/pinces/L_bas.CATPart differ diff --git a/meca/2011_Senior/pinces/L_haut.CATPart b/meca/2011_Senior/pinces/L_haut.CATPart index 1976775..86df757 100644 Binary files a/meca/2011_Senior/pinces/L_haut.CATPart and b/meca/2011_Senior/pinces/L_haut.CATPart differ diff --git a/meca/2011_Senior/pinces/Pince_droite_bas.CATProduct b/meca/2011_Senior/pinces/Pince_droite_bas.CATProduct index d982dbb..1bafadc 100644 Binary files a/meca/2011_Senior/pinces/Pince_droite_bas.CATProduct and b/meca/2011_Senior/pinces/Pince_droite_bas.CATProduct differ diff --git a/meca/2011_Senior/pinces/Pince_droite_haut.CATProduct b/meca/2011_Senior/pinces/Pince_droite_haut.CATProduct index ac4756a..3b2904d 100644 Binary files a/meca/2011_Senior/pinces/Pince_droite_haut.CATProduct and b/meca/2011_Senior/pinces/Pince_droite_haut.CATProduct differ diff --git a/meca/2011_Senior/pinces/Pince_gauche_bas.CATProduct b/meca/2011_Senior/pinces/Pince_gauche_bas.CATProduct index bf33922..b278559 100644 Binary files a/meca/2011_Senior/pinces/Pince_gauche_bas.CATProduct and b/meca/2011_Senior/pinces/Pince_gauche_bas.CATProduct differ diff --git a/meca/2011_Senior/pinces/Pince_gauche_haut.CATProduct b/meca/2011_Senior/pinces/Pince_gauche_haut.CATProduct index e044cc9..bb3201e 100644 Binary files |
From: Olivier B. <Ba...@us...> - 2011-05-09 15:54:32
|
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 65a4b675c5f268bae1716ed95ac25cee3184f2a4 (commit) from 4a16f66338e64e7ba33d4ab2ca4e086eec1707fa (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 65a4b675c5f268bae1716ed95ac25cee3184f2a4 Author: Olivier BICHLER <oli...@cr...> Date: Mon May 9 17:53:47 2011 +0200 [Sensor Actuator] Added card label and revision silkscreen ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX index 43482e5..c13f62e 100644 Binary files a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX and b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX differ diff --git a/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf index d4597c9..3f61c3c 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf and b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN index 0a9201c..4951835 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK index e464ba5..0a9201c 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK differ diff --git a/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj index d4d34fa..ccc751f 100644 --- a/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj +++ b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj @@ -133,7 +133,9 @@ "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn" "SCHEMATIC1") (Path "Design Resources" "Library") - (Path "Outputs")) + (Path "Outputs") + (Select "Design Resources" + "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn")) (HierarchyView) (Doc (Type "COrCapturePMDoc") diff --git a/elec/lib/OrCAD/KROBOT.LLB b/elec/lib/OrCAD/KROBOT.LLB index 4bc3348..3d38f13 100644 Binary files a/elec/lib/OrCAD/KROBOT.LLB and b/elec/lib/OrCAD/KROBOT.LLB differ hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2011-05-05 21:06:24
|
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 4a16f66338e64e7ba33d4ab2ca4e086eec1707fa (commit) from f4e43624677899b58fce21636dc9117e0f5c6ea1 (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 4a16f66338e64e7ba33d4ab2ca4e086eec1707fa Author: Olivier BICHLER <oli...@cr...> Date: Thu May 5 23:05:53 2011 +0200 [Sensor Actuator] Added BOM + minor changes ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Sensor_Actuator/Assembly/SENSOR ACTUATOR.BOM b/elec/boards/Sensor_Actuator/Assembly/SENSOR ACTUATOR.BOM new file mode 100644 index 0000000..c4cc442 --- /dev/null +++ b/elec/boards/Sensor_Actuator/Assembly/SENSOR ACTUATOR.BOM @@ -0,0 +1,90 @@ +Sensor Actuator - Communication Revised: Wednesday, May 04, 2011 + Revision: 1.0 + + + + + + + +Bill Of Materials May 5,2011 23:04:06 Page1 + +Item Quantity Reference Part +______________________________________________ + +1 41 C1,C2,C3,C4,C5,C6,C7,C8, 100n + C9,C12,C13,C14,C15,C16, + C17,C20,C21,C22,C23,C24, + C25,C28,C29,C30,C31,C32, + C33,C38,C39,C40,C41,C45, + C49,C50,C51,C52,C53,C55, + C57,C60,C61 +2 12 C10,C11,C18,C19,C26,C27, 10u + C34,C35,C36,C42,C54,C56 +3 2 C43,C44 12p +4 2 C46,C47 22p +5 2 C48,C59 1u +6 1 C58 50u +7 1 D1 FAULT LED +8 1 D2 STATUS LED +9 1 D3 5V LED +10 1 D4 3.3V LED +11 1 E1 CAN_T +12 1 E2 R-T +13 2 E3,E4 JP3 +14 1 E9 BOOT1 +15 1 E10 BOOT0 +16 1 J1 CAN #1 +17 1 J2 CAN #2 +18 1 J3 JTAG +19 1 J4 A1 +20 1 J5 A2 +21 1 J6 A3 +22 1 J7 A4 +23 1 J8 A5 +24 1 J9 A6 +25 1 J10 A7 +26 1 J11 A8 +27 2 J12,J18 D1 +28 2 J13,J19 D2 +29 2 J14,J20 D3 +30 2 J15,J21 D4 +31 2 J16,J22 D5 +32 2 J17,J23 D6 +33 2 J24,J26 I2C #1 +34 2 J25,J27 I2C #2 +35 1 J28 I2C #1 + 2 GPIO +36 1 J29 I2C #2 + 2 GPIO +37 1 J30 Serial #1 +38 1 J31 Serial #2 +39 1 J32 SW1 +40 1 J33 SW2 +41 1 J34 SW3 +42 1 J35 SW4 +43 1 J36 12V - 24V Power Supply +44 1 LS1 BUZZER 5VDC +45 1 L1 Ferrite bead +46 1 Q1 BC846AL +47 1 R1 330 +48 22 R2,R4,R5,R6,R7,R8,R9,R10, 10k + R11,R34,R35,R38,R39,R42, + R43,R55,R56,R57,R58,R59, + R60,R61 +49 1 R3 120 +50 24 R12,R13,R16,R17,R20,R21, 1k + R24,R25,R28,R29,R30,R31, + R32,R33,R36,R37,R40,R41, + R44,R45,R50,R51,R52,R53 +51 8 R14,R15,R18,R19,R22,R23, 2k + R26,R27 +52 4 R46,R47,R48,R49 4.7k +53 4 R54,R62,R64,R65 680 +54 1 R63 2.4k +55 1 SW1 RESET +56 1 U1 SN65HVD230 +57 1 U2 TPS2087D +58 1 U3 STM32F103RET +59 1 U4 THN20-2411WI +60 1 U5 LM3940IMP-3.3 +61 1 X1 32768 +62 1 X2 8 MHz diff --git a/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf index 31eb37c..d4597c9 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf and b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN index 5cc7870..0a9201c 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK index 3a5ecdc..e464ba5 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK differ diff --git a/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj index 8c6dd7e..d4d34fa 100644 --- a/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj +++ b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj @@ -44,12 +44,27 @@ (ANNOTATE_Refdes_Control_Required "FALSE") (FALSE) (FALSE) - (FALSE)) + (FALSE) + (BOM_Scope "0") + (BOM_Mode "0") + (BOM_Report_File + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\Assembly\SENSOR ACTUATOR.BOM") + (BOM_Merge_Include "FALSE") + (BOM_Property_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_Header "Item\tQuantity\tReference\tPart") + (BOM_Include_File + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.INC") + (BOM_Include_File_Combine_7.0 "{Item}\t{Quantity}\t{Reference}\t{Value}") + (BOM_One_Part_Per_Line "FALSE") + (Open_BOM_in_Excel "FALSE") + (BOM_View_Output "FALSE")) (Folder "Outputs" (File ".\sensor actuator.drc" (Type "Report")) (File "..\pcb\sensor actuator.mnl" - (Type "LAYOUT Netlist File"))) + (Type "LAYOUT Netlist File")) + (File "..\assembly\sensor actuator.bom" + (Type "Report"))) (Folder "PSpice Resources" (Folder "Simulation Profiles") (Folder "Model Libraries" @@ -118,9 +133,7 @@ "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn" "SCHEMATIC1") (Path "Design Resources" "Library") - (Path "Outputs") - (Select "Design Resources" - "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn")) + (Path "Outputs")) (HierarchyView) (Doc (Type "COrCapturePMDoc") @@ -131,7 +144,7 @@ (Type "COrSchematicDoc") (Frame (Placement "44 0 1 -1 -1 -8 -30 318 1884 0 1068") - (Scroll "0 0") + (Scroll "0 14") (Zoom "137") (Occurrence "/")) (Path hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2011-05-04 22:19:25
|
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 f4e43624677899b58fce21636dc9117e0f5c6ea1 (commit) from 83487f9a1b43e3cc57d8b4fc9699aa87d679933b (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 f4e43624677899b58fce21636dc9117e0f5c6ea1 Author: Olivier BICHLER <oli...@cr...> Date: Wed May 4 22:01:48 2011 +0200 [Sensor Actuator] Small refinements ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX index 308ff49..43482e5 100644 Binary files a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX and b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX differ diff --git a/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf index 3892bb5..31eb37c 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf and b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN index 96ec29e..5cc7870 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK index f6ad04f..3a5ecdc 100644 Binary files a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK differ diff --git a/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj index e0d4f11..8c6dd7e 100644 --- a/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj +++ b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj @@ -120,8 +120,7 @@ (Path "Design Resources" "Library") (Path "Outputs") (Select "Design Resources" - "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn" - "SCHEMATIC1")) + "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn")) (HierarchyView) (Doc (Type "COrCapturePMDoc") hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2011-05-03 22:15:49
|
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 83487f9a1b43e3cc57d8b4fc9699aa87d679933b (commit) from 9f787726ecadeffeb65ded0b557e538127ed2fe2 (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 83487f9a1b43e3cc57d8b4fc9699aa87d679933b Author: Olivier BICHLER <oli...@cr...> Date: Wed May 4 00:15:25 2011 +0200 [Sensor Actuator] Flood ground VIA + wider power supply nets ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX index 2c72c25..308ff49 100644 Binary files a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX and b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX differ hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2011-05-03 19:40:14
|
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 9f787726ecadeffeb65ded0b557e538127ed2fe2 (commit) from 896f3b133a8cb61279c49959082fb53ee066fb6b (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 9f787726ecadeffeb65ded0b557e538127ed2fe2 Author: Olivier BICHLER <oli...@cr...> Date: Tue May 3 21:39:35 2011 +0200 [Sensor Actuator] Added schematic and routed board (to be reviewed) ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX new file mode 100644 index 0000000..2c72c25 Binary files /dev/null and b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR-1_0.MAX differ diff --git a/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR.MNL b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR.MNL new file mode 100644 index 0000000..32a0677 Binary files /dev/null and b/elec/boards/Sensor_Actuator/PCB/SENSOR ACTUATOR.MNL differ diff --git a/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf new file mode 100644 index 0000000..3892bb5 Binary files /dev/null and b/elec/boards/Sensor_Actuator/Schematic/PDF/Sensor_Actuator-1.0.pdf differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DRC b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DRC new file mode 100644 index 0000000..98d8076 --- /dev/null +++ b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DRC @@ -0,0 +1,88 @@ + +Checking Pins and Pin Connections + +-------------------------------------------------- +Checking Schematic: SCHEMATIC1 +-------------------------------------------------- +Checking Electrical Rules +ERROR: [DRC0004] Possible pin type conflict U6,OUT Output Connected to Power + SCHEMATIC1, Power Supply (4.70, 3.90) +ERROR: [DRC0004] Possible pin type conflict U1,VDD Power Connected to Output + SCHEMATIC1, Communication (3.50, 1.20) +ERROR: [DRC0004] Possible pin type conflict U2,VDD_4 Power Connected to Output + SCHEMATIC1, Microcontroller (4.50, 3.60) +ERROR: [DRC0004] Possible pin type conflict U2,VBAT Power Connected to Output + SCHEMATIC1, Microcontroller (4.50, 1.80) +ERROR: [DRC0004] Possible pin type conflict U2,VDD_1 Power Connected to Output + SCHEMATIC1, Microcontroller (4.50, 4.90) +ERROR: [DRC0004] Possible pin type conflict U2,VDD_3 Power Connected to Output + SCHEMATIC1, Microcontroller (7.30, 1.80) +ERROR: [DRC0004] Possible pin type conflict U2,VDD_2 Power Connected to Output + SCHEMATIC1, Microcontroller (7.30, 3.40) + +Checking for Unconnected Nets + +Checking Off-Page Connections + +Checking Pin to Port Connections + +Checking for Invalid References + +Checking for Duplicate References + +Reporting Ports + +Reporting Off-Page Connections + I2C2_2 + D3 + CTS1 + SERVO_OE + D8/SERVO6 + D5/I2C1_3 + D4 + CTS2 + A1 + JTCK + RTS1 + CAN_TX + A2 + RTS2 + BUZ + SDA1 + A3 + CAN_RX + A4 + SDA2 + JTDO + A5 + NRST + A6 + A7 + D6/I2C2_3 + SCL1 + A8 + RX1 + SCL2 + RX2 + SERVO1 + D7/SERVO5 + TX1 + SERVO2 + TX2 + NJTRST + SERVO3 + SERVO4 + D1 + I2C1_1 + JTDI + I2C2_1 + D2 + I2C1_2 + JTMS + +Reporting Globals + VCC + VCC_5V + GND + +Check Bus width mismatch diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN new file mode 100644 index 0000000..96ec29e Binary files /dev/null and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR.DSN differ diff --git a/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK new file mode 100644 index 0000000..f6ad04f Binary files /dev/null and b/elec/boards/Sensor_Actuator/Schematic/SENSOR ACTUATOR_0.DBK differ diff --git a/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj new file mode 100644 index 0000000..e0d4f11 --- /dev/null +++ b/elec/boards/Sensor_Actuator/Schematic/Sensor Actuator.opj @@ -0,0 +1,231 @@ +(ExpressProject "Sensor Actuator" + (ProjectVersion "19981106") + (ProjectType "Analog or A/D Mixed Mode") + (Folder "Design Resources" + (Folder "Library" + (File "c:\krobot\elec\lib\orcad\krobot.olb" + (Type "Schematic Library"))) + (NoModify) + (File ".\sensor actuator.dsn" + (Type "Schematic Design")) + (BuildFileAddedOrDeleted "x") + (CompileFileAddedOrDeleted "x") + (DRC_Scope "0") + (DRC_Action "0") + (DRC_Create_Warnings "FALSE") + (DRC_Check_Ports "TRUE") + (DRC_Check_Off-Page_Connectors "TRUE") + (DRC_Identical_References "TRUE") + (DRC_Type_Mismatch "TRUE") + (DRC_Report_Ports_and_Off-page_Connectors "TRUE") + (DRC_SDT_Compatibility "FALSE") + (DRC_Report_Off-grid_Objects "FALSE") + (DRC_Check_Unconnected_Nets "TRUE") + (DRC_Check_for_Misleading_TAP "FALSE") + (DRC_Visible_Power_pins "FALSE") + (DRC_Report_Netnames "FALSE") + (DRC_View_Output "FALSE") + (DRC_Report_File + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DRC") + (Netlist_TAB "3") + (LAYOUT_Netlist_File + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\PCB\SENSOR ACTUATOR.MNL") + (LAYOUT_PCB_Footprint "{PCB Footprint}") + (FALSE) + (LAYOUT_Units "0") + (ANNOTATE_Scope "0") + (ANNOTATE_Mode "1") + (ANNOTATE_Action "0") + (Annotate_Page_Order "0") + (ANNOTATE_Reset_References_to_1 "FALSE") + (ANNOTATE_No_Page_Number_Change "FALSE") + (ANNOTATE_Property_Combine "{Value}{Source Package}{POWER_GROUP}") + (ANNOTATE_IncludeNonPrimitive "TRUE") + (ANNOTATE_Refdes_Control_Required "FALSE") + (FALSE) + (FALSE) + (FALSE)) + (Folder "Outputs" + (File ".\sensor actuator.drc" + (Type "Report")) + (File "..\pcb\sensor actuator.mnl" + (Type "LAYOUT Netlist File"))) + (Folder "PSpice Resources" + (Folder "Simulation Profiles") + (Folder "Model Libraries" + (Sort User)) + (Folder "Stimulus Files" + (Sort User)) + (Folder "Include Files" + (Sort User))) + (DefaultLibraryBrowseDirectory "library\PSpice") + (PartMRUSelector + (CON2 + (FullPartName "CON2.Normal") + (LibraryName "D:\ORCAD\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (TPS2087D + (FullPartName "TPS2087D.Normal") + (LibraryName "C:\KROBOT\ELEC\LIB\ORCAD\KROBOT.OLB") + (DeviceIndex "0")) + (ADG1612 + (FullPartName "ADG1612.Normal") + (LibraryName "C:\KROBOT\ELEC\LIB\ORCAD\KROBOT.OLB") + (DeviceIndex "0")) + (VCC_ARROW + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CAPSYM.OLB") + (DeviceIndex "0")) + (ACS712 + (FullPartName "ACS712.Normal") + (LibraryName "C:\KROBOT\ELEC\LIB\ORCAD\KROBOT.OLB") + (DeviceIndex "0")) + (CON3 + (FullPartName "CON3.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (74HCT365 + (FullPartName "74HCT365.Normal") + (LibraryName + "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\BUSDRIVERTRANSCEIVER.OLB") + (DeviceIndex "0")) + (74HCT245 + (FullPartName "74HCT245.Normal") + (LibraryName + "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\BUSDRIVERTRANSCEIVER.OLB") + (DeviceIndex "0")) + (CON6 + (FullPartName "CON6.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (CON5 + (FullPartName "CON5.Normal") + (LibraryName "C:\ORCAD\ORCAD_16.0\TOOLS\CAPTURE\LIBRARY\CONNECTOR.OLB") + (DeviceIndex "0")) + (TXS0108E + (FullPartName "TXS0108E.Normal") + (LibraryName "C:\KROBOT\ELEC\LIB\ORCAD\KROBOT.OLB") + (DeviceIndex "0")) + (JP3 + (FullPartName "JP3.Normal") + (LibraryName "C:\KROBOT\ELEC\LIB\ORCAD\KROBOT.OLB") + (DeviceIndex "0"))) + (GlobalState + (FileView + (Path "Design Resources") + (Path "Design Resources" + "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn") + (Path "Design Resources" + "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn" + "SCHEMATIC1") + (Path "Design Resources" "Library") + (Path "Outputs") + (Select "Design Resources" + "C:\krobot\elec\boards\Sensor_Actuator\Schematic\sensor actuator.dsn" + "SCHEMATIC1")) + (HierarchyView) + (Doc + (Type "COrCapturePMDoc") + (Frame + (Placement "44 0 1 0 1041 -8 -30 0 317 0 710")) + (Tab 0)) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -8 -30 318 1884 0 1068") + (Scroll "0 0") + (Zoom "137") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Microcontroller")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 318 1884 0 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Communication")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 317 1883 1 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Interface I2C")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -8 -30 317 1883 0 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Interface Analog")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 317 1883 0 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Interface Serial")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 317 1883 0 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Power Supply")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 318 1884 0 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Interface Digital #2")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 317 1883 0 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Interface Digital #1")) + (Doc + (Type "COrSchematicDoc") + (Frame + (Placement "44 0 1 -1 -1 -1 -1 318 1884 1 1068") + (Scroll "0 0") + (Zoom "136") + (Occurrence "/")) + (Path + "C:\KROBOT\ELEC\BOARDS\SENSOR_ACTUATOR\SCHEMATIC\SENSOR ACTUATOR.DSN") + (Schematic "SCHEMATIC1") + (Page "Interface Switch"))) + (LastUsedLibraryBrowseDirectory "C:\OrCAD\OrCAD_16.0\tools\capture\library") + (MPSSessionName "Olivier")) diff --git a/elec/lib/OrCAD/KROBOT.LLB b/elec/lib/OrCAD/KROBOT.LLB index 3b45eba..4bc3348 100644 Binary files a/elec/lib/OrCAD/KROBOT.LLB and b/elec/lib/OrCAD/KROBOT.LLB differ diff --git a/elec/lib/OrCAD/KROBOT.OLB b/elec/lib/OrCAD/KROBOT.OLB index 847ff3a..63ada8a 100644 Binary files a/elec/lib/OrCAD/KROBOT.OLB and b/elec/lib/OrCAD/KROBOT.OLB differ diff --git a/elec/lib/OrCAD/KROBOT.TCH b/elec/lib/OrCAD/KROBOT.TCH index 9ea7305..45d6ded 100644 Binary files a/elec/lib/OrCAD/KROBOT.TCH and b/elec/lib/OrCAD/KROBOT.TCH differ hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-04-26 15:49:15
|
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 896f3b133a8cb61279c49959082fb53ee066fb6b (commit) from fa8932bc991c708686e7813f52e5d441c1f3b966 (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 896f3b133a8cb61279c49959082fb53ee066fb6b Author: Jérémie Dimino <je...@di...> Date: Mon Apr 25 22:41:19 2011 +0200 [info] handle backward trajectories ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/src/lib/krobot_geom.ml b/info/control2011/src/lib/krobot_geom.ml index 7ca6909..8f09d85 100644 --- a/info/control2011/src/lib/krobot_geom.ml +++ b/info/control2011/src/lib/krobot_geom.ml @@ -149,43 +149,43 @@ module Bezier = struct translate origin ((b.a *| t3) +| (b.b *| t2) +| (b.c *| t1) +| b.p) let fold_vertices f initial vertices acc = - let add_vertices q r v1 v2 acc = f q (translate q v1) (translate r v2) r acc in + let add_vertices sign q r v1 v2 acc = f sign q (translate q v1) (translate r v2) r acc in (* Compute cubic bezier curves. *) - let rec loop acc = function + let rec loop sign acc = function | p :: (q :: r :: s :: _ as rest) -> (* Computes tangents with a length that is half of the minimum length of the adjacent segments. *) let _, v1 = tangents p q r and v2, _ = tangents q r s in let v1 = v1 *| (min (distance p q) (distance q r) /. 2.) and v2 = v2 *| (min (distance q r) (distance r s) /. 2.) in - loop (add_vertices q r v1 v2 acc) rest + loop sign (add_vertices sign q r v1 v2 acc) rest | [p; q; r] -> let _, v1 = tangents p q r and v2 = vector r q /| distance q r in let v1 = v1 *| (min (distance p q) (distance q r) /. 2.) and v2 = v2 *| (distance q r /. 2.) in - add_vertices q r v1 v2 acc + add_vertices sign q r v1 v2 acc | _ -> acc in match vertices with | q :: r :: s :: _ -> - let initial = if prod initial (vector q r) < 0. then minus initial else initial in + let initial, sign = if prod initial (vector q r) < 0. then (minus initial, -1.) else (initial, 1.) in let v1 = initial and v2, _ = tangents q r s in let v1 = v1 *| (distance q r /. 2.) and v2 = v2 *| (distance q r /. 2.) in - loop (add_vertices q r v1 v2 acc) vertices + loop sign (add_vertices sign q r v1 v2 acc) vertices | [q; r] -> - let initial = if prod initial (vector q r) < 0. then minus initial else initial in + let initial, sign = if prod initial (vector q r) < 0. then (minus initial, -1.) else (initial, 1.) in let v1 = initial and v2 = vector r q /| distance q r in let v1 = v1 *| (distance q r /. 2.) and v2 = v2 *| (distance q r /. 2.) in - add_vertices q r v1 v2 acc + add_vertices sign q r v1 v2 acc | [_] | [] -> acc let fold_curves f initial vertices acc = - fold_vertices (fun p q r s acc -> f (of_vertices p q r s) acc) initial vertices acc + fold_vertices (fun sign p q r s acc -> f (of_vertices p q r s) acc) initial vertices acc end diff --git a/info/control2011/src/lib/krobot_geom.mli b/info/control2011/src/lib/krobot_geom.mli index abebd94..df40b0d 100644 --- a/info/control2011/src/lib/krobot_geom.mli +++ b/info/control2011/src/lib/krobot_geom.mli @@ -76,7 +76,8 @@ module Bezier : sig passing through the given list of vertices. [vector] is the initial direction vector. *) - val fold_vertices : (vertice -> vertice -> vertice -> vertice -> 'a -> 'a) -> vector -> vertice list -> 'a -> 'a + val fold_vertices : (float -> vertice -> vertice -> vertice -> vertice -> 'a -> 'a) -> vector -> vertice list -> 'a -> 'a (** [fold_vertices f vector vertices acc] same as {!fold_curves} - but pass parameters instead of curves to [f]. *) + but pass parameters instead of curves to [f]. The first + parameter passed to [f] is the sign of [d1]. *) end diff --git a/info/control2011/src/tools/krobot_planner.ml b/info/control2011/src/tools/krobot_planner.ml index 5f872e5..e1e3596 100644 --- a/info/control2011/src/tools/krobot_planner.ml +++ b/info/control2011/src/tools/krobot_planner.ml @@ -41,7 +41,7 @@ type planner = { mutable vertices : vertice list; (* The list of vertices for the trajectory. *) - mutable curves : (vertice * vertice * vertice * vertice) list; + mutable curves : (float * vertice * vertice * vertice * vertice) list; (* The parameters of bezier curves. *) mutable moving : bool; @@ -87,10 +87,11 @@ let set_vertices planner ?curves vertices = l | None -> let v = { vx = cos planner.orientation; vy = sin planner.orientation } in - List.rev (Bezier.fold_vertices (fun p q r s acc -> (p, q, r, s) :: acc) v vertices []) + List.rev (Bezier.fold_vertices (fun sign p q r s acc -> (sign, p, q, r, s) :: acc) v vertices []) in planner.curves <- curves; - ignore (Krobot_bus.send planner.bus (Unix.gettimeofday (), Trajectory_vertices(vertices, curves))) + ignore (Krobot_bus.send planner.bus (Unix.gettimeofday (), Trajectory_vertices(vertices, + List.map (fun (sign, p, q, r, s) -> (p, q, r, s)) curves))) let set_moving planner moving = planner.moving <- moving; @@ -210,9 +211,9 @@ let go planner rotation_speed rotation_acceleration moving_speed moving_accelera planner.mover <- ( try_lwt (* Send a bezier curve to the robot. *) - let send_curve (p, q, r, s) v_end = + let send_curve (sign, p, q, r, s) v_end = (* Compute parameters. *) - let d1 = distance p q and d2 = distance r s in + let d1 = sign *. distance p q and d2 = distance r s in let v = vector r s in let theta_end = atan2 v.vy v.vx in @@ -311,7 +312,7 @@ let handle_message planner (timestamp, message) = let ts = Unix.gettimeofday () in let vertices = if planner.moving then planner.vertices else planner.position :: planner.vertices in join [ - Krobot_bus.send planner.bus (ts, Trajectory_vertices(vertices, planner.curves)); + Krobot_bus.send planner.bus (ts, Trajectory_vertices(vertices, List.map (fun (sign, p, q, r, s) -> (p, q, r, s)) planner.curves)); Krobot_bus.send planner.bus (ts, Trajectory_moving planner.moving); ] ) hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2011-04-25 21:12:24
|
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 fa8932bc991c708686e7813f52e5d441c1f3b966 (commit) via 4bd527c9a4d54185ac2a373c956a57a74c281350 (commit) from b18032438c48e011c678a04eb968c697bb90e66c (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 fa8932bc991c708686e7813f52e5d441c1f3b966 Author: Xavier Lagorce <Xav...@cr...> Date: Mon Apr 25 23:11:01 2011 +0200 [Controller_Motor_STM32] Fixed ghost angle conversion. commit 4bd527c9a4d54185ac2a373c956a57a74c281350 Author: Xavier Lagorce <Xav...@cr...> Date: Mon Apr 25 22:40:10 2011 +0200 [Controller_Motor_STM32] Added possibilty for backward movement. ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h index 5760216..81a44c2 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h @@ -90,9 +90,9 @@ typedef struct { typedef struct { uint16_t x_end:12 __attribute__((__packed__)); // end point x coordinate in mm uint16_t y_end:12 __attribute__((__packed__)); // end point y coordinate in mm - uint8_t d1; // first branch length in cm - uint8_t d2; // last branch length in cm - int16_t theta_end:13 __attribute__((__packed__)); // end angle in 1/1000 radians + int16_t d1:9 __attribute__((__packed__)); // first branch length in cm + uint8_t d2:8 __attribute__((__packed__)); // last branch length in cm + int16_t theta_end:12 __attribute__((__packed__)); // end angle in 1/100 radians uint16_t v_end:11 __attribute__((__packed__)); // final speed in mm/s } bezier_msg_t; diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c index 22fa8c1..8c3793d 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c @@ -121,7 +121,7 @@ static void NORETURN canMonitor_process(void) { msg_ghost.data.state = dd_get_ghost_state(&odometry, &u); msg_ghost.data.x = (int16_t)(odometry.x * 1000.0); msg_ghost.data.y = (int16_t)(odometry.y * 1000.0); - msg_ghost.data.theta = (int16_t)(odometry.theta * 1000.0); + msg_ghost.data.theta = (int16_t)(odometry.theta * 10000.0); msg_ghost.data.u = (uint8_t)(u * 255); txm.data32[0] = msg_ghost.data32[0]; txm.data32[1] = msg_ghost.data32[1]; @@ -188,7 +188,7 @@ static void NORETURN canMonitorListen_process(void) { bezier_msg.data32[1] = frame.data32[1]; dd_add_bezier(bezier_msg.data.x_end/1000.0, bezier_msg.data.y_end/1000.0, bezier_msg.data.d1/100.0, bezier_msg.data.d2/100.0, - bezier_msg.data.theta_end/1000.0, bezier_msg.data.v_end/1000.0); + bezier_msg.data.theta_end/100.0, bezier_msg.data.v_end/1000.0); break; case CAN_MSG_STOP: stop_msg.data32[0] = frame.data32[0]; diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c index 7883f9a..179db7f 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c @@ -326,7 +326,7 @@ uint8_t dd_add_bezier(float x_end, float y_end, float d1, float d2, float end_an traj->theta_end = end_angle; traj->start[0] = x_ini; traj->start[1] = y_ini; - traj->theta_ini = theta_ini; + traj->theta_ini = (d1 >= 0.0) ? theta_ini : (theta_ini + M_PI); // Differentiate parameters bezier_diff(traj->params, traj->dparams); bezier_diff(traj->dparams, traj->ddparams); hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-04-25 19:33:07
|
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 b18032438c48e011c678a04eb968c697bb90e66c (commit) from a35b4e1cdf9f415501fa0ae4e44d2718ee5fb94c (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 b18032438c48e011c678a04eb968c697bb90e66c Author: Jérémie Dimino <je...@di...> Date: Mon Apr 25 21:32:28 2011 +0200 [krobot_message] add __attribute__((__packed__)) ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/src/lib/krobot_message_stubs.c b/info/control2011/src/lib/krobot_message_stubs.c index ecb5de5..33909b1 100644 --- a/info/control2011/src/lib/krobot_message_stubs.c +++ b/info/control2011/src/lib/krobot_message_stubs.c @@ -12,12 +12,12 @@ #include <caml/alloc.h> struct bezier_message { - unsigned int x : 12; - unsigned int y : 12; - int d1 : 9; - unsigned int d2 : 8; - int theta : 12; - unsigned int v : 11; + unsigned int x : 12 __attribute__((__packed__)); + unsigned int y : 12 __attribute__((__packed__)); + int d1 : 9 __attribute__((__packed__)); + unsigned int d2 : 8 __attribute__((__packed__)); + int theta : 12 __attribute__((__packed__)); + unsigned int v : 11 __attribute__((__packed__)); }; CAMLprim value krobot_message_encode_bezier(value params) hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2011-04-25 19:21:14
|
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 a35b4e1cdf9f415501fa0ae4e44d2718ee5fb94c (commit) via 2ce237ac7b8e79e18262493ea91dfee1d91247b5 (commit) from 65ffbe46c0f588fd33ae4c84bb0d7309d1602293 (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 a35b4e1cdf9f415501fa0ae4e44d2718ee5fb94c Author: Jérémie Dimino <je...@di...> Date: Mon Apr 25 21:20:04 2011 +0200 [krobot_message] remove manual handling of the sign of theta in bezier messages commit 2ce237ac7b8e79e18262493ea91dfee1d91247b5 Author: Jérémie Dimino <je...@di...> Date: Mon Apr 25 21:00:37 2011 +0200 [info] change bezier messages ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/src/lib/krobot_geom.ml b/info/control2011/src/lib/krobot_geom.ml index 1c84bf3..7ca6909 100644 --- a/info/control2011/src/lib/krobot_geom.ml +++ b/info/control2011/src/lib/krobot_geom.ml @@ -54,6 +54,9 @@ let div v s = { vy = v.vy /. s; } +let prod a b = + a.vx *. b.vx +. a.vy *. b.vy + let ( +| ) = add let ( -| ) = sub let ( ~| ) = minus @@ -167,12 +170,14 @@ module Bezier = struct in match vertices with | q :: r :: s :: _ -> + let initial = if prod initial (vector q r) < 0. then minus initial else initial in let v1 = initial and v2, _ = tangents q r s in let v1 = v1 *| (distance q r /. 2.) and v2 = v2 *| (distance q r /. 2.) in loop (add_vertices q r v1 v2 acc) vertices | [q; r] -> + let initial = if prod initial (vector q r) < 0. then minus initial else initial in let v1 = initial and v2 = vector r q /| distance q r in let v1 = v1 *| (distance q r /. 2.) diff --git a/info/control2011/src/lib/krobot_geom.mli b/info/control2011/src/lib/krobot_geom.mli index 59bee62..abebd94 100644 --- a/info/control2011/src/lib/krobot_geom.mli +++ b/info/control2011/src/lib/krobot_geom.mli @@ -28,6 +28,7 @@ val sub : vector -> vector -> vector val minus : vector -> vector val mul : vector -> float -> vector val div : vector -> float -> vector +val prod : vector -> vector -> float val ( +| ) : vector -> vector -> vector val ( -| ) : vector -> vector -> vector diff --git a/info/control2011/src/lib/krobot_message.ml b/info/control2011/src/lib/krobot_message.ml index 82df8a3..3a77845 100644 --- a/info/control2011/src/lib/krobot_message.ml +++ b/info/control2011/src/lib/krobot_message.ml @@ -233,7 +233,7 @@ let encode = function and y = int_of_float (y *. 1000.) and d1 = int_of_float (d1 *. 100.) and d2 = int_of_float (d2 *. 100.) - and theta = int_of_float (theta *. 1000.) land 0b1111111111111; + and theta = int_of_float (theta *. 100.) and v = int_of_float (v *. 1000.) in frame ~identifier:206 @@ -411,10 +411,7 @@ let decode frame = float y /. 1000., float d1 /. 100., float d2 /. 100., - (if theta >= 4096 then - float (theta - 8192) /. 1000. - else - float theta /. 1000.), + float theta /. 100., float v /. 1000.) | 301 -> Beacon_position diff --git a/info/control2011/src/lib/krobot_message_stubs.c b/info/control2011/src/lib/krobot_message_stubs.c index e34c242..ecb5de5 100644 --- a/info/control2011/src/lib/krobot_message_stubs.c +++ b/info/control2011/src/lib/krobot_message_stubs.c @@ -14,9 +14,9 @@ struct bezier_message { unsigned int x : 12; unsigned int y : 12; - unsigned int d1 : 8; + int d1 : 9; unsigned int d2 : 8; - int theta : 13; + int theta : 12; unsigned int v : 11; }; hooks/post-receive -- krobot |
From: Benjamin A. <Ba...@us...> - 2011-04-22 16:40:31
|
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 65ffbe46c0f588fd33ae4c84bb0d7309d1602293 (commit) from b0e5d3352f32fab87bc972e87ba8db42e2bc8ae5 (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 65ffbe46c0f588fd33ae4c84bb0d7309d1602293 Author: Benjamin Aupetit <au...@cr...> Date: Fri Apr 22 18:38:58 2011 +0200 [meca] Adding some small holes for sensors Some small holes, some small holes, always some small holes... ----------------------------------------------------------------------- Changes: diff --git a/meca/2011_Senior/bati/base.CATPart b/meca/2011_Senior/bati/base.CATPart index 96d3460..3e7098a 100644 Binary files a/meca/2011_Senior/bati/base.CATPart and b/meca/2011_Senior/bati/base.CATPart differ hooks/post-receive -- krobot |
From: Benjamin A. <Ba...@us...> - 2011-04-22 15:21:07
|
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 b0e5d3352f32fab87bc972e87ba8db42e2bc8ae5 (commit) via 06d121e49e25d84325e05939f34e7da6b4c4614f (commit) via 542daffd2e1086b407295b2f5665efa84820ea64 (commit) from 62f90db8b68913bc816a7ee80a619333e226f1f4 (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 b0e5d3352f32fab87bc972e87ba8db42e2bc8ae5 Author: Benjamin Aupetit <au...@cr...> Date: Fri Apr 22 17:19:36 2011 +0200 [meca] Deletion of unused files commit 06d121e49e25d84325e05939f34e7da6b4c4614f Author: Benjamin Aupetit <au...@cr...> Date: Fri Apr 22 17:16:51 2011 +0200 [meca] Changing elevator bottom pulley commit 542daffd2e1086b407295b2f5665efa84820ea64 Author: Benjamin Aupetit <au...@cr...> Date: Fri Apr 22 17:15:23 2011 +0200 [meca] Draw of some part ----------------------------------------------------------------------- Changes: diff --git a/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart b/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart index 02268e7..386ffb2 100644 Binary files a/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart and b/meca/2011_Senior/SupportMiroir/Soutien_Omron.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart b/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart index c9f58a6..bbb932b 100644 Binary files a/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart and b/meca/2011_Senior/ascenceurs/Ascenseur_Poulie_bas2.CATPart differ diff --git a/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct b/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct index 63f5a64..a672e27 100644 Binary files a/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct and b/meca/2011_Senior/ascenceurs/Moteur_ascenseur.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct b/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct index c9b82fc..8be584c 100644 Binary files a/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct and b/meca/2011_Senior/ascenceurs/Poulie_bas_avec_support.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/ascenseur.CATProduct b/meca/2011_Senior/ascenceurs/ascenseur.CATProduct index 2edafc5..cc204cc 100644 Binary files a/meca/2011_Senior/ascenceurs/ascenseur.CATProduct and b/meca/2011_Senior/ascenceurs/ascenseur.CATProduct differ diff --git a/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart b/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart index 79762bf..81d5ec7 100644 Binary files a/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart and b/meca/2011_Senior/ascenceurs/longueur_courroie.CATPart differ diff --git a/meca/2011_Senior/bati/base.CATPart b/meca/2011_Senior/bati/base.CATPart index 72651a5..96d3460 100644 Binary files a/meca/2011_Senior/bati/base.CATPart and b/meca/2011_Senior/bati/base.CATPart differ diff --git a/meca/2011_Senior/bati/plaque3.CATPart b/meca/2011_Senior/bati/plaque3.CATPart index 5750f9c..76625e6 100644 Binary files a/meca/2011_Senior/bati/plaque3.CATPart and b/meca/2011_Senior/bati/plaque3.CATPart differ diff --git a/meca/2011_Senior/cartes/Boussole CMP03.CATPart b/meca/2011_Senior/cartes/Boussole CMP03.CATPart deleted file mode 100644 index 7e629ab..0000000 Binary files a/meca/2011_Senior/cartes/Boussole CMP03.CATPart and /dev/null differ diff --git a/meca/2011_Senior/cartes/Monitoring batteries.CATPart b/meca/2011_Senior/cartes/Monitoring batteries.CATPart deleted file mode 100644 index f1385f2..0000000 Binary files a/meca/2011_Senior/cartes/Monitoring batteries.CATPart and /dev/null differ diff --git a/meca/2011_Senior/cartes/PontH.CATPart b/meca/2011_Senior/cartes/PontH.CATPart deleted file mode 100644 index e968419..0000000 Binary files a/meca/2011_Senior/cartes/PontH.CATPart and /dev/null differ diff --git a/meca/2011_Senior/cartes/Proximity Sensor.CATPart b/meca/2011_Senior/cartes/Proximity Sensor.CATPart deleted file mode 100644 index 19a2dd4..0000000 Binary files a/meca/2011_Senior/cartes/Proximity Sensor.CATPart and /dev/null differ diff --git a/meca/2011_Senior/cartes/Robot Interface.CATPart b/meca/2011_Senior/cartes/Robot Interface.CATPart deleted file mode 100644 index f6950a8..0000000 Binary files a/meca/2011_Senior/cartes/Robot Interface.CATPart and /dev/null differ diff --git a/meca/2011_Senior/divers/webcam.CATProduct b/meca/2011_Senior/divers/webcam.CATProduct index 771557b..460a778 100644 Binary files a/meca/2011_Senior/divers/webcam.CATProduct and b/meca/2011_Senior/divers/webcam.CATProduct differ diff --git a/meca/2011_Senior/etages/Etage_1.CATProduct b/meca/2011_Senior/etages/Etage_1.CATProduct index 306bce0..6d266fd 100644 Binary files a/meca/2011_Senior/etages/Etage_1.CATProduct and b/meca/2011_Senior/etages/Etage_1.CATProduct differ diff --git a/meca/2011_Senior/etages/Etage_2.CATProduct b/meca/2011_Senior/etages/Etage_2.CATProduct index 34b13e0..9f12bd8 100644 Binary files a/meca/2011_Senior/etages/Etage_2.CATProduct and b/meca/2011_Senior/etages/Etage_2.CATProduct differ diff --git a/meca/2011_Senior/etages/etage1/axes.CATProduct b/meca/2011_Senior/etages/etage1/axes.CATProduct index ccae73f..f469523 100644 Binary files a/meca/2011_Senior/etages/etage1/axes.CATProduct and b/meca/2011_Senior/etages/etage1/axes.CATProduct differ diff --git a/meca/2011_Senior/planlaser.CATPart b/meca/2011_Senior/planlaser.CATPart deleted file mode 100644 index d3d90d2..0000000 Binary files a/meca/2011_Senior/planlaser.CATPart and /dev/null differ diff --git a/meca/2011_Senior/robot.CATProduct b/meca/2011_Senior/robot.CATProduct index cf532ee..616aeba 100644 Binary files a/meca/2011_Senior/robot.CATProduct and b/meca/2011_Senior/robot.CATProduct differ diff --git a/meca/2011_Senior/roues/Bloc_roue.CATProduct b/meca/2011_Senior/roues/Bloc_roue.CATProduct index 679bd5e..c657ffd 100644 Binary files a/meca/2011_Senior/roues/Bloc_roue.CATProduct and b/meca/2011_Senior/roues/Bloc_roue.CATProduct differ diff --git a/meca/2011_Senior/usinage/support-adverse.CATDrawing b/meca/2011_Senior/usinage/support-adverse.CATDrawing new file mode 100644 index 0000000..9efcc9d Binary files /dev/null and b/meca/2011_Senior/usinage/support-adverse.CATDrawing differ diff --git a/meca/2011_Senior/usinage/support-base.CATDrawing b/meca/2011_Senior/usinage/support-base.CATDrawing new file mode 100644 index 0000000..aaa0eb7 Binary files /dev/null and b/meca/2011_Senior/usinage/support-base.CATDrawing differ diff --git a/meca/2011_Table/Elements/Pion-base.CATPart b/meca/2011_Table/Elements/Pion-base.CATPart index 5b8ff8a..f3ae0ab 100644 Binary files a/meca/2011_Table/Elements/Pion-base.CATPart and b/meca/2011_Table/Elements/Pion-base.CATPart differ diff --git a/meca/2011_Table/Elements/couronne-roi.CATPart b/meca/2011_Table/Elements/couronne-roi.CATPart index 8e1fc8a..bf5a2de 100644 Binary files a/meca/2011_Table/Elements/couronne-roi.CATPart and b/meca/2011_Table/Elements/couronne-roi.CATPart differ diff --git a/meca/2011_Table/Pion.CATProduct b/meca/2011_Table/Pion.CATProduct index ff5d5fa..62eacf9 100644 Binary files a/meca/2011_Table/Pion.CATProduct and b/meca/2011_Table/Pion.CATProduct differ diff --git a/meca/2011_Table/Roi.CATProduct b/meca/2011_Table/Roi.CATProduct index 24b61ad..de900b8 100644 Binary files a/meca/2011_Table/Roi.CATProduct and b/meca/2011_Table/Roi.CATProduct differ diff --git a/meca/2011_Table/Tour_complete.CATProduct b/meca/2011_Table/Tour_complete.CATProduct index e5a57b5..6ffdb11 100644 Binary files a/meca/2011_Table/Tour_complete.CATProduct and b/meca/2011_Table/Tour_complete.CATProduct differ hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2011-04-21 14:31:07
|
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 62f90db8b68913bc816a7ee80a619333e226f1f4 (commit) from edd099fd4078acee928803c9e63934c83b783f19 (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 62f90db8b68913bc816a7ee80a619333e226f1f4 Author: Xavier Lagorce <Xav...@cr...> Date: Thu Apr 21 16:29:53 2011 +0200 [Controller_Motor_STM32] Added the possibility to limit PWM output in software. To allow for 'hard' and dirty limitation of motor voltage is nominal voltage is different from power bus voltage. ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.c b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.c index 16bec21..08cafb3 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.c +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.c @@ -16,19 +16,21 @@ uint8_t enabledMotors = 0, indMotors = 0; signed char currentSpeedSign[] = {0, 0, 0, 0}; +int32_t maxPWMs[] = {MAX_PWM, MAX_PWM, MAX_PWM, MAX_PWM}; TIM_OCInitTypeDef TIM_OCInitStructure; -/* - Some dirty imports from the stm32lib from ST <stm32_lib> - */ - -//#define __IO volatile /*!< defines 'read / write' permissions */ -//typedef __IO uint16_t vu16; - - -/* - End of imports </stm32_lib> - */ +static int32_t staSpeed(int32_t speed, int32_t maxSpeed, uint8_t *ind) { + if (speed >= maxSpeed) { + *ind = 1; + return MAX_PWM; + } else if (speed <= -maxSpeed) { + *ind = 1; + return -maxSpeed; + } else { + *ind = 0; + return speed; + } +} /* * Initialises TIM2 for PWM generation and associated GPIOs @@ -174,32 +176,24 @@ void disableMotor(uint8_t motor) { void motorSetSpeed(uint8_t motor, int32_t speed) { uint8_t ind = 0; - - if (speed >= MAX_PWM) { - speed = MAX_PWM; - ind = 1; - } else if (speed <= -MAX_PWM) { - speed = -MAX_PWM; - ind = 1; - } else { - ind = 0; - } + int32_t app_speed; if (motor & MOTOR1) { - if(speed >= 0) { + app_speed = staSpeed(speed, maxPWMs[0], &ind); + if(app_speed >= 0) { if (currentSpeedSign[0] != 1) { currentSpeedSign[0] = 1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(4), 1); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(5), 0); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)speed; + TIM_OCInitStructure.TIM_Pulse = (uint16_t)app_speed; } else { if (currentSpeedSign[0] != -1) { currentSpeedSign[0] = -1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(4), 0); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(5), 1); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-speed); + TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-app_speed); } TIM_OC1Init(TIM2, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); @@ -215,20 +209,21 @@ void motorSetSpeed(uint8_t motor, int32_t speed) { } } if (motor & MOTOR2) { - if(speed >= 0) { + app_speed = staSpeed(speed, maxPWMs[1], &ind); + if(app_speed >= 0) { if (currentSpeedSign[1] != 1) { currentSpeedSign[1] = 1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(1), 1); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(14), 0); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)speed; + TIM_OCInitStructure.TIM_Pulse = (uint16_t)app_speed; } else { if (currentSpeedSign[1] != -1) { currentSpeedSign[1] = -1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(1), 0); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(14), 1); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-speed); + TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-app_speed); } TIM_OC2Init(TIM2, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); @@ -244,20 +239,21 @@ void motorSetSpeed(uint8_t motor, int32_t speed) { } } if (motor & MOTOR3) { - if(speed >= 0) { + app_speed = staSpeed(speed, maxPWMs[2], &ind); + if(app_speed >= 0) { if (currentSpeedSign[2] != 1) { currentSpeedSign[2] = 1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(10), 1); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(11), 0); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)speed; + TIM_OCInitStructure.TIM_Pulse = (uint16_t)app_speed; } else { if (currentSpeedSign[2] != -1) { currentSpeedSign[2] = -1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(10), 0); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOC_BASE), BV(11), 1); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-speed); + TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-app_speed); } TIM_OC3Init(TIM2, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable); @@ -273,20 +269,21 @@ void motorSetSpeed(uint8_t motor, int32_t speed) { } } if (motor & MOTOR4) { - if(speed >= 0) { + app_speed = staSpeed(speed, maxPWMs[0], &ind); + if(app_speed >= 0) { if (currentSpeedSign[3] != 1) { currentSpeedSign[3] = 1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(5), 1); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(9), 0); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)speed; + TIM_OCInitStructure.TIM_Pulse = (uint16_t)app_speed; } else { if (currentSpeedSign[3] != -1) { currentSpeedSign[3] = -1; stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(5), 0); stm32_gpioPinWrite(((struct stm32_gpio *)GPIOB_BASE), BV(9), 1); } - TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-speed); + TIM_OCInitStructure.TIM_Pulse = (uint16_t)(-app_speed); } TIM_OC4Init(TIM2, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); @@ -352,3 +349,33 @@ void motorStop(uint8_t motor, uint8_t mode) { } } } + +void motorSetMaxPWM(uint8_t motor, int32_t maxPWM) { + if (maxPWM < 0) + return; + + if (motor & MOTOR1) { + if (maxPWM <= MAX_PWM) + maxPWMs[0] = maxPWM; + else + maxPWMs[0] = MAX_PWM; + } + if (motor & MOTOR2) { + if (maxPWM <= MAX_PWM) + maxPWMs[1] = maxPWM; + else + maxPWMs[1] = MAX_PWM; + } + if (motor & MOTOR3) { + if (maxPWM <= MAX_PWM) + maxPWMs[2] = maxPWM; + else + maxPWMs[2] = MAX_PWM; + } + if (motor & MOTOR4) { + if (maxPWM <= MAX_PWM) + maxPWMs[3] = maxPWM; + else + maxPWMs[3] = MAX_PWM; + } +} diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.h b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.h index 13eb4bf..ff8ed53 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.h +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/motor.h @@ -31,5 +31,6 @@ void enableMotor(uint8_t motor); void disableMotor(uint8_t motor); void motorSetSpeed(uint8_t motor, int32_t speed); void motorStop(uint8_t motor, uint8_t mode); +void motorSetMaxPWM(uint8_t motor, int32_t maxPWM); #endif hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2011-04-21 13:25:18
|
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 edd099fd4078acee928803c9e63934c83b783f19 (commit) via ad9957749e6fc00a602866bcc19928c9c3393d28 (commit) from 362646a87e0f22370a259e4d0ce0bf13c2f707bb (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 edd099fd4078acee928803c9e63934c83b783f19 Author: Xavier Lagorce <Xav...@cr...> Date: Thu Apr 21 15:23:00 2011 +0200 [Controller_Motor_STM32] Added a function to stop following the current trajectory. This function can be used to stop following the current trajectory and delete other queued trajectories. The code has been added in the control program to use this ability when the stop button is pressed in the viewer. (note that the real robot will brake with a certain acceleration but that the simulator will instantly stop.) commit ad9957749e6fc00a602866bcc19928c9c3393d28 Author: Xavier Lagorce <Xav...@cr...> Date: Thu Apr 21 14:48:03 2011 +0200 [Controller_Motor_STM32] Store current linear velocity in trajectory structure for futur use. ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h index e7d2cd6..5760216 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_messages.h @@ -96,9 +96,10 @@ typedef struct { uint16_t v_end:11 __attribute__((__packed__)); // final speed in mm/s } bezier_msg_t; -// Emergency stop +// Stop Bezier Spline following and brakes typedef struct { - uint8_t stop; // stop everything + float lin_acc __attribute__((__packed__)); // Linear acceleration for braking + float rot_acc __attribute__((__packed__)); // Rotational acceleration for braking } stop_msg_t; // Select robot mode (normal or HIL) diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c index 5f60fcb..22fa8c1 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/can_monitor.c @@ -193,10 +193,7 @@ static void NORETURN canMonitorListen_process(void) { case CAN_MSG_STOP: stop_msg.data32[0] = frame.data32[0]; stop_msg.data32[1] = frame.data32[1]; - if (stop_msg.data.stop == 1) { - mc_delete_controller(MOTOR3); - mc_delete_controller(MOTOR4); - } + dd_interrupt_trajectory(stop_msg.data.rot_acc, stop_msg.data.lin_acc); break; case CAN_MSG_ODOMETRY_SET: odometry_msg.data32[0] = frame.data32[0]; diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c index 578cbdd..7883f9a 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.c @@ -19,7 +19,7 @@ typedef struct { uint8_t initialized, enabled; float params[2][4], dparams[2][4], ddparams[2][4]; float du, v_tab[101]; - float goal[2], v_end, theta_end; + float goal[2], v_end, theta_end, v_lin; float start[2], theta_ini; } dd_bezier_traj_t; @@ -44,7 +44,7 @@ static void NORETURN traj_following_process(void) { Timer timer; uint8_t next_traj, ui; robot_state_t rs; - float cr, v_lin, v_ratio, v_max, v_rot, dxu, dyu; + float cr, v_ratio, v_max, v_rot, dxu, dyu; float z1, z2, z3, w1, w2, u1, u2, dt; dd_bezier_traj_t *traj; int32_t last_time, cur_time; @@ -100,17 +100,17 @@ static void NORETURN traj_following_process(void) { if (ui*traj->du > 1.0) ui--; if (ui > 0) { - v_lin = traj->v_tab[ui-1] + + traj->v_lin = traj->v_tab[ui-1] + (traj->v_tab[ui]-traj->v_tab[ui-1]) * (params.u - traj->du*(ui-1))/traj->du; } else { - v_lin = traj->v_tab[0]; + traj->v_lin = traj->v_tab[0]; } if (isnan(cr) || isinf(cr)) { v_ratio = 1.0; } else { v_ratio = (cr + params.shaft_width/2.0) / (cr - params.shaft_width/2.0); } - v_max = 2/(1+MIN(fabsf(v_ratio), fabsf(1.0/v_ratio)))*v_lin; + v_max = 2/(1+MIN(fabsf(v_ratio), fabsf(1.0/v_ratio)))*traj->v_lin; if (cr >= 0) { v_rot = v_max * (1 - 1/v_ratio) / params.shaft_width; } else { @@ -122,9 +122,9 @@ static void NORETURN traj_following_process(void) { dt = (cur_time - last_time) * 1e-6; dxu = bezier_apply(traj->dparams[0], params.u); dyu = bezier_apply(traj->dparams[1], params.u); - params.u += v_lin/sqrtf(dxu*dxu+dyu*dyu)*dt; - params.ghost_state.x += v_lin*cosf(params.ghost_state.theta)*dt; - params.ghost_state.y += v_lin*sinf(params.ghost_state.theta)*dt; + params.u += traj->v_lin/sqrtf(dxu*dxu+dyu*dyu)*dt; + params.ghost_state.x += traj->v_lin*cosf(params.ghost_state.theta)*dt; + params.ghost_state.y += traj->v_lin*sinf(params.ghost_state.theta)*dt; params.ghost_state.theta = fmodf(params.ghost_state.theta + v_rot*dt, 2*M_PI); if (params.ghost_state.theta > M_PI) { params.ghost_state.theta -= 2*M_PI; @@ -137,10 +137,10 @@ static void NORETURN traj_following_process(void) { z2=-(rs.x-params.ghost_state.x)*sinf(params.ghost_state.theta)+(rs.y-params.ghost_state.y)*cosf(params.ghost_state.theta); z3=tanf(rs.theta-params.ghost_state.theta); - w1=-params.k1*fabsf(v_lin)*(z1+z2*z3); - w2=-params.k2*v_lin*z2-params.k3*fabsf(v_lin)*z3; + w1=-params.k1*fabsf(traj->v_lin)*(z1+z2*z3); + w2=-params.k2*traj->v_lin*z2-params.k3*fabsf(traj->v_lin)*z3; - u1=(w1+v_lin)/cosf(rs.theta-params.ghost_state.theta); + u1=(w1+traj->v_lin)/cosf(rs.theta-params.ghost_state.theta); u2=w2*powf(cosf(rs.theta-params.ghost_state.theta),2)+v_rot; // Apply command @@ -342,6 +342,21 @@ uint8_t dd_add_bezier(float x_end, float y_end, float d1, float d2, float end_an } } +void dd_interrupt_trajectory(float rot_acc, float lin_acc) { + + // Prevent the controller from following the current trajectory + params.working = 0; + + // Disable all the trajectories + params.trajs[0].initialized = 0; + params.trajs[0].enabled = 0; + params.trajs[1].initialized = 0; + params.trajs[1].enabled = 0; + // Brake ! + dd_set_rotational_speed(0., rot_acc); + dd_set_linear_speed(0., lin_acc); +} + uint8_t dd_get_ghost_state(robot_state_t *state, float *u) { if (state != NULL) { state->x = params.ghost_state.x; diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.h b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.h index 73d6944..0a0a0f9 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.h +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/differential_drive.h @@ -96,6 +96,15 @@ void dd_set_rotational_speed(float speed, float acceleration); uint8_t dd_add_bezier(float x_end, float y_end, float d1, float d2, float end_angle, float end_speed); /* + * Stops the current trajectory and removes the queued ones. + * - rot_acc : acceleration to stop the rotational motion of the drive. + * - lin_acc : acceleration to stop the linear motion of the drive. + * + * If one of the accelerations if zero, the corresponding movement will be stopped abruptly + */ +void dd_interrupt_trajectory(float rot_acc, float lin_acc); + +/* * Return the current state of the followed ghost robot * - state : pointer to a robot_state_t structure where the ghost state will be written * - u : pointer to a float in which to write the current value of the parameter on the spline diff --git a/info/control2011/src/lib/krobot_message.ml b/info/control2011/src/lib/krobot_message.ml index 93ee3f4..82df8a3 100644 --- a/info/control2011/src/lib/krobot_message.ml +++ b/info/control2011/src/lib/krobot_message.ml @@ -30,7 +30,7 @@ type t = | Motor_move of float * float * float | Motor_turn of float * float * float | Motor_bezier of float * float * float * float * float * float - | Motor_stop + | Motor_stop of float * float | Odometry of float * float * float | Odometry_ghost of float * float * float * int * bool | Set_odometry of float * float * float @@ -102,8 +102,10 @@ let to_string = function sprintf "Motor_bezier(%f, %f, %f, %f, %f, %f)" x y d1 d2 theta v - | Motor_stop -> - "Motor_stop" + | Motor_stop(lin_acc, rot_acc) -> + sprintf + "Motor_stop(%f, %f)" + lin_acc rot_acc | Odometry(x, y, theta) -> sprintf "Odometry(%f, %f, %f)" @@ -296,13 +298,16 @@ let encode = function ~remote:false ~format:F29bits ~data - | Motor_stop -> + | Motor_stop(lin_acc, rot_acc) -> + let data = String.create 8 in + put_float32 data 0 lin_acc; + put_float32 data 4 rot_acc; frame ~identifier:204 ~kind:Data ~remote:false ~format:F29bits - ~data:"\x01" + ~data | Set_controller_mode b -> frame ~identifier:205 @@ -395,6 +400,8 @@ let decode frame = float (get_sint16 frame.data 4) /. 10000.) | 204 -> Motor_stop + (get_float32 frame.data 0, + get_float32 frame.data 4) | 205 -> Set_controller_mode (get_uint8 frame.data 0 <> 0) diff --git a/info/control2011/src/lib/krobot_message.mli b/info/control2011/src/lib/krobot_message.mli index c17cb0b..05f9e49 100644 --- a/info/control2011/src/lib/krobot_message.mli +++ b/info/control2011/src/lib/krobot_message.mli @@ -46,8 +46,12 @@ type t = *) | Motor_bezier of float * float * float * float * float * float (** [Motor_bezier(x_end, y_end, d1, d2, theta_end, v_end)] *) - | Motor_stop - (** Stops the motors. *) + | Motor_stop of float * float + (** [Motor_stop(lin_acc, rot_acc)] command to stop following the + current Bezier Spline and the queued ones. + - [lin_acc] in m/s^2 + - [rot_acc] in rad/s^2 + *) | Odometry of float * float * float (** [Odometry(x, y, theta)] the position of the robot on the table. *) diff --git a/info/control2011/src/tools/krobot_planner.ml b/info/control2011/src/tools/krobot_planner.ml index 176826e..5f872e5 100644 --- a/info/control2011/src/tools/krobot_planner.ml +++ b/info/control2011/src/tools/krobot_planner.ml @@ -336,7 +336,7 @@ let handle_message planner (timestamp, message) = cancel planner.mover; set_moving planner false; set_vertices planner []; - ignore (Krobot_message.send planner.bus (Unix.gettimeofday (), Motor_stop)) + ignore (Krobot_message.send planner.bus (Unix.gettimeofday (), Motor_stop(1.0,0.0))) | _ -> () diff --git a/info/control2011/src/tools/krobot_simulator.ml b/info/control2011/src/tools/krobot_simulator.ml index ad0bf78..4e52d9b 100644 --- a/info/control2011/src/tools/krobot_simulator.ml +++ b/info/control2011/src/tools/krobot_simulator.ml @@ -210,7 +210,7 @@ lwt () = lwt () = Lwt_log.info_f "received: turn(%f, %f, %f)" angle speed acc in turn sim angle speed acc; return () - | Motor_stop -> + | Motor_stop(lin_acc, rot_acc) -> sim.command <- Idle; return () | Req_motor_status -> hooks/post-receive -- krobot |