Project

General

Profile

0330 » History » Version 7

Simon Lacroix, 2018-04-01 15:48

1 1 Ellon Paiva Mendes
h1. Meeting to discuss more about PoM/Prism (a good one)
2
3
*Participants*:
4
Ellon, Pierre, Simon
5
6
 
7
8
*Goal of the meeting*: Discuss implementation details of PoM/Prism and try to take a decision about how to proceed (yes, again)
9
10 7 Simon Lacroix
https://redmine.laas.fr/projects/infuse/wiki/Conventions
11
12
13 5 Simon Lacroix
h2. Terminology
14
15 6 Simon Lacroix
# A *pose* is the position of a given frame with respect to a reference frame. Whenever one writes or says the word "pose", one must say the "pose of which frame with respect to which frame".
16
# A *transform* is the 3D transformation from one frame to an other one. Whenever one writes or says the word "transform", one must say the "transform from which frame to which frame".
17 1 Ellon Paiva Mendes
18 6 Simon Lacroix
Note these two words are exactly the same concept, they denote the same data structure. They can be used indifferently, provided one use them according to the convention above.
19
20 1 Ellon Paiva Mendes
h2. Discussion
21
22 6 Simon Lacroix
In this meeting we tried to define all the requirements for PoM, focusing on what is needed to be done for the project and what is going to be done on this sprint. 
23 1 Ellon Paiva Mendes
24
h3. PoM requirements
25
26 6 Simon Lacroix
# *PoM has to provide the most recent pose of the robot body frame with respect to a given frame (e.g.: mission frame, site frame)*
27 1 Ellon Paiva Mendes
  _Why_: Some clients need to know this pose in a high frequency (control, trajectory, velodyne, etc..)
28 6 Simon Lacroix
  This pose is the fusion of the poses produced by the various the localisation processes. It is produced synchronously (i.e. periodically) on a topic/poster. It is the pose of the robot body frame, with respect to a given frame, defined by a configuration request to POM. 
29 4 Simon Lacroix
   
30 6 Simon Lacroix
# *PoM has to provide the sensors poses with respect to the robot body frame for each living sensor, configured at start up.*
31 1 Ellon Paiva Mendes
  _Why_: Because clients that exploit sensor data may need to know these poses to attach to the data
32 6 Simon Lacroix
  The sensor poses to export are defined by configuration requests, that trigger or stop their emission. This way PoM will only output transformation from its internal tree to the sensors that are exploited, instead of publishing the complete tree each time. The output is synchronised with the most recent robot body frame pose (it has the same timestamp, so clients may associate them).
33 1 Ellon Paiva Mendes
   
34 6 Simon Lacroix
# *PoM has to gather all localisation information, as pose or delta-poses (increments), expressed as poses*
35 4 Simon Lacroix
  _Why_: PoM need this information to fuse them so as to export the best robot frame pose
36 6 Simon Lacroix
  PoM may accept poses or delta-poses. Some discussion about how to allow this happened, and the decision was to use a general type that allows to represent both poses and delta-poses (see below). These inputs are made through topics/ports, similar to the way it's done on current pom-genom.
37 1 Ellon Paiva Mendes
   
38
  +NOTE: Only one input will be implemented on sprint 4.+
39
   
40 6 Simon Lacroix
# *PoM should provide a service where a client may request a transform between any pair of frames, at any pair of times*
41 4 Simon Lacroix
  _Why_: because any frame may change in time, except the absolute world frame which is fixed once and for all.
42 1 Ellon Paiva Mendes
  This request will mostly be used by DEM on this sprint.
43 4 Simon Lacroix
   
44 6 Simon Lacroix
# *PoM  has to gather information about internal joints of the robots, expressed as poses*
45
  _Why_: Because this is needed to update the robot internal tree of poses.
46
  The tree is loaded from a URDF file. The information about non-static joints/branches enters PoM through topics/ports published by mounts (or actuators), defined with the same data structure way it's done with localisation information.
47 1 Ellon Paiva Mendes
   
48 4 Simon Lacroix
# *PoM has to perform the fusion of the gathered localisation information*
49 6 Simon Lacroix
  _Why_: This is needed to provide the best robot body frame pose.
50 4 Simon Lacroix
   
51
  +NOTE: This won't be implemented on sprint 4, in which a single localisation DFPC feeds POM+
52 1 Ellon Paiva Mendes
   
53
# *PoM has to provide two services to let clients tell him which poses to memorise and which ones to forget*
54
  _Why_: So it can keep track of which poses may be updated in the future.
55
   
56
  +NOTE: This won't be implemented on sprint 4!+
57
   
58
# *PoM needs to manage an internal memory*
59 6 Simon Lacroix
  _Why_: To allow the update of memorised past poses while keeping the memory size under control
60
  The elements of the internal memory consists of: 1) a circular buffer buffer of a given size where all robot pose outputs are stored; 2) Reference counters to tell PoM if the poses will be kept after they go out of the time-span of the buffer; 3) A garbage collector that removes poses no one will ever ask.
61 1 Ellon Paiva Mendes
   
62
  +NOTE: Only the internal buffer will be implemented on sprint 4.+
63
64
h3. Generic pose type
65
66
We decided to use a generic pose type. The pose will have something like:
67
68 6 Simon Lacroix
* FrameID 1
69 1 Ellon Paiva Mendes
* Timestamp 1
70 6 Simon Lacroix
* FrameID 2
71 1 Ellon Paiva Mendes
* Timestamp 2
72 6 Simon Lacroix
* Transform From_1_to_2
73
* TransformCovariance
74 1 Ellon Paiva Mendes
75 6 Simon Lacroix
This way we can represent "normal poses" (same timestamp, different Frame IDs), "delta poses" (same frame ID, different timestamps), or even transforms between different frames at different times, e.g. "Transform from frame ID 1 at time 1 to frame ID 2 at time 2".
76 1 Ellon Paiva Mendes
77 6 Simon Lacroix
This should be properly documented, and Ellon thinks we may have some problems convincing others to use this structure.
78 1 Ellon Paiva Mendes
79
h3. Metadata tagging
80
81 6 Simon Lacroix
* Modules producing data (like usb3-cameras or velodyne) may access their pose with respect to the robot body frame (extracted from the internal robot tree of poses) to add this pose as a metadata of the data product.
82 1 Ellon Paiva Mendes
83 6 Simon Lacroix
* Robot body frame poses at the time of the data acquisition do not goes into the metadata of the data, because they may be subject to subsequent changes after fusion (contrary to the sensor pose with respect to the robot body frame, which will never be revised).
84 1 Ellon Paiva Mendes
85 6 Simon Lacroix
* If a client needs the robot body frame pose, it will look for it on PoM output poster/topic or get it through a request.
86 1 Ellon Paiva Mendes
87 4 Simon Lacroix
h3. Time management
88 1 Ellon Paiva Mendes
89
* Time is going to be handled by a library that all clients may use to get current time.
90
91 3 Ellon Paiva Mendes
* The interface should be completely independent, although internally this library may use ROS (probably enabled by means of compilation flags) or other mechanism to retrieve time (like gettimeofday or clock network synchronization)
92
93 6 Simon Lacroix
h2. List of requests to POM
94
95 1 Ellon Paiva Mendes
h2. Whiteboard log
96 6 Simon Lacroix
97 1 Ellon Paiva Mendes
98
!White_board_meeting_POM_30_Mars_2018.jpg!