Difference between revisions of "SLAM-assisted creation of a Look-Up Table Overview"

From Lofaro Lab Wiki
Jump to: navigation, search
(Phase I: DataWriter)
(Phase II: LUTWriter)
Line 16: Line 16:
 
== Phase II: LUTWriter ==
 
== Phase II: LUTWriter ==
  
meow meow
+
The LUT writer program utilizes the tag data collected from the data writer system in order to write the LUT of the global frame positions of each tag. Line by line calculations are conducted. For example, line 1 of each file, corresponds to tag 1 data. The 6D local frame tag pose and the camera global frame position at line of each file has data utilized to determine the global frame position of tag 1, which is then placed in line 1 of the LUT.
 +
 
 +
[[File:LUTWriter.jpg]]

Revision as of 13:33, 23 May 2015

In the following page we will go over the two phases necessary for SLAM-assisted creation of a Look-Up Table (LUT). In order to localize in an area using POLARIS, it is necessary to have a LUT that gives the global frame position of all the tags in that area. This global frame position consists of x-y-z global frame coordinate, and orientation of the tag with respect to the global frame. The information in the LUT is in the following order and delimited by commas: x,y,THETA,z. Where THETA is orientation of the tag with respect to the global frame.

Before localizing in an area, we must take care to make sure that no matter what part of the ceiling is in the field of view (FOV) of POLARIS, POLARIS is able to see at least one full tag. As the area increases, we must place more tags and therefore put more tag data in the LUT for that area. If we were to manually put together the LUT as discussed in the Manual Creation of a Look-Up Table (LUT) tutorial, we would have to manually measure each tag's x-y-z position and orientation (around the z-axis) with respect to the global frame. This can become tedious, therefore a system that expedites the process is desirable. This page describes the system that will expedite the process of LUT creation. The system does so by utilizing both SLAM and the AprilTags module. A robot is driven under every tag while SLAM is running, therefore we know the position of POLARIS as it is positioned on top of the robot and the robot's position is known through SLAM. Additionally, while the robot is driven under the tags, the AprilTags module is used to identify tags. Then the local frame position of the tags and the global frame position of POLARIS are stored in text files along with an array keeping track of which tags successfully had their data stored. That concludes phase 1 of 2 of the system.

The second phase simply runs transformations on the data stored in the text files from phase 1 in order to solve for the global frame position of each tag in the area and build the LUT. That concludes phase 2 of 2 of the system.


Phase I: DataWriter

The data writer system takes in the local frame 6D pose of the viewed tag with respect to the camera center and also takes in the global frame position of POLARIS from the simultaneous localization and mapping (SLAM) open-source software system. Data writer then runs a moving average filter on the local frame roll, pitch and yaw of the viewed tag and writes the received data to output files. Collected array is a file that contains a binary 1 or 0 value corresponding to whether or not a tag’s data has been collected. For a tag with ID 7, line 7 of the “collected array” text file would have a 0 if tag 7’s data had not been collected and a 1 if tag 7’s data had been collected. The “6D tag pose” file contains the local frame pose data of the tag at the time the tag is viewed. The “camera global x, y, yaw” file contains the global frame position of POLARIS obtained through SLAM. This data is stored in these aforementioned files utilizing the same convention used for the “collected array” text file. With this method, a simple program can be utilized to determine if the collected array is all ones and thus all necessary tag information has been collected.

Datawriterr.jpg

Phase II: LUTWriter

The LUT writer program utilizes the tag data collected from the data writer system in order to write the LUT of the global frame positions of each tag. Line by line calculations are conducted. For example, line 1 of each file, corresponds to tag 1 data. The 6D local frame tag pose and the camera global frame position at line of each file has data utilized to determine the global frame position of tag 1, which is then placed in line 1 of the LUT.

LUTWriter.jpg