Vous êtes sur la page 1sur 24

Jason Chu: August 14, 2012, SeekTech Although locators have traditionally been able to detect magnetic fields

and display the location of their respective charged lines, problems still exist with the accuracy of the data collected by the locator. If improved, the data could potentially be used to create a field map of multiple pipelines independent of how the user of the SR-XX holds the locator. To obtain an idea of the quality of data logged by the locator, data samples were collected through two transects: Transect 1is a 15.24 meter (50 feet) pink spray-painted pathway directly between SeekTechs 3777 building and the island with a flagpole. Transect 2 is a short, unmarked, diagonal path along the side of SeekTechs 3855 parking lot nearest to Ruffin Road.

SR-XX Mapping Project: Field and Data Report

Transect 1 stretches from the edge of the island to a point 15.24 meters away.

Things to Know 1. Using MATLAB MATLAB is an incredibly powerful tool that is excellent for manipulating large amounts of data. In essence, it can be thought of as a much more powerful graphing calculator. Transect 2 stretches from the Trimble battery to the back wheel of Imported data will always take the form the black truck. of a matrix, which can be manipulated using arithmetic and functions. It is important to remember that because MATLAB works with matrices, some commands will perform matrix operation instead of normal ones. For example, when multiplying matrix A with matrix B, * will perform matrix multiplication while .* will perform elemental multiplication. Good tutorial sites include:

http://www.imc.tue.nl/IMC-main/IMC-main-node1.html http://www.math.siu.edu/matlab/tutorials.html http://www.mathworks.com/academia/student_center/tutorials/ Other topics of interest include Fourier series, Kalman filters, GPS, the Geodetic System, ECEF, Linear Algebra, Nyquist-Shannon sampling, and data wrapping. 2. Importing and Using SR-XX Data in MATLAB Data will be automatically imported into a USB upon attaching the USB itself. The files will have the name srxx_log_ followed by a timestamp of the start of data collection (For example: srxx_log_20120628_135351, which was collected on June 28, 2012 starting 51 seconds into 1:53 PM). Such data by itself is unusable and incompatible with MATLAB. Thus it is recommended to run the data through a binary parser, which converts the binary file to an xml file and finally into an xml object that is usable with MATLAB. Theparser to do this is format_datalog4()i and is located under the directory U:\INTERNS\Jason Chu\MATLAB\Programs. An example of the use of this function is as follows:
xyz = format_datalog4('srxx_log_20120808_113202(86k).bin',true)

where variable xyz represents an xml structure that can be navigated to obtain the required data. Navigation through the structure can be done by adding .directory to the end of the variable, where directory refers to the available options MATLAB should be displaying. For example,ii
Bazi = xml.data.signal_processing.ball_data.BotBallAzimuth

returns a large matrix containing all the bottom balls azimuthal data from the start of data collection and initializes the variable Bazi to that matrix. The data may be manipulated and plotted using various MATLAB functions. Useful commands include plot(), quiver(), rot90(), help, subplot(), hold, figure, interp(), global, unwrap(), and why. 3. The 4-Coil Locator: Data Types Gradient data is a collection of coil voltages that have no unit and are used to calculate various other values in the locator, it can be found under

where xml represents an xml object obtained by parsing. Channels 1-3 represent data collected by the upper ball, which arent particularly useful for these experiments while Channel 7 is completely unused. Channels 5 and 6 represent the front and back coils, respectively, while channels 4 and 8 represent the left and right coils, respectively, on the bottom

ball. Opposite channels should read in opposite gradient values (i.e. same gradient values but different signs) Polar data represents the absolute value of the angle from an arc ranging from the location directly above the pipe to the current location of the locator. Thus, as the locator approaches a point directly above the pipe, polar angle should go to zero. Similarly, as the locator gets infinitely far from the pipeline, the polar angle should approach 90 degrees. 4. The Purpose Ultimately, the goal is to map out consistent values regardless of the orientation of the locator itself. To do this at diagonal orientations (45 and -45 degrees), one must take the x and y components of gradient data and calculate for polar, azimuth, magnitude, etc. based on the sum of the components in one direction. A 4-coil locator is well suited for mapping data because the positions of the four coils allow for reliable x and y components to be obtained, regardless of the direction that the locator faces. Ideally these directions are to be defined by compass data. North-South and East-West thus make up an imaginary Cartesian coordinate plane on which the locator calculates its values. The purpose of collecting differing types of data at various orientations is to know exactly how close the current locator comes to achieving this goal. Another issue arises when multiple pipelines transmitting multiple frequencies are involved. At the moment, the locators software operates by combining all collected gradient data and using said data to calculate for the values of the nearest pipeline. Though this problem isnt very close to being solved, it is still a source of error and a potential problem that can be solved using this data.

5. Using the Trilock Transmitter The trilock transmitter comes with two contacts and one ground stake. The ground stake is to be driven into loose soil. One contact should be attached to the metal portion of the stake while the other one should be directly clipped onto a meter. For transect 1, the trilock was connected onto a gas meter on the walking path in front of SeekTechs 3777 building. For transect 2, the trilock was connected onto the gas meter near SeekTechs 3855 parking lot.

6. Issue with Leading Zeros By connecting a USB driver to a SR-XX locator, the locator will automatically log data when it turns on. However, though the locator is logging data, some sensors in the locator (such as the locators internal GPS) must wait for feedback before they can return data to log. As a result, one may have a large number of leading zeros in front of their data, skewing them. It is highly recommended to wait a few seconds between turning the locator on and actually collecting data. There are three solutions to this problem:

1. One could wait for the locator to finish its waiting for GPS message and immediately create a new log (press the select button in the middle twice), remembering, of course, to delete the old log when manually importing the data into MATLAB. 2. On certain SR-XXs one could copy-paste the folder sr_xx_bootloader to a USB and insert the USB into the locator. After turning the locator on, it should automatically install the updates inside the bootloader. The bootloader creates an option on the SR-XX to start and stop logging data, which can be toggled on and off by giving the sound button a long press. By default, the locator logs data upon activation. 3. Alternatively, one could run a specific vector through the function cutZero(). However, different data sets may have differing amounts of leading zeros, and running multiple vectors through cutZero() may result in many vectors of different sizes, making it inconvenient to plot them. 7. The Trimble GeoXH 6000 The Trimble is a GPS that can be synced to other devices via Bluetooth. To do so, one must, from the main menu, go to Settings > Bluetooth. Upon reaching the Devices menu, one should press Add new device and select the ID of the target device (the 4-coil locator used in most of the following experiments has ID: SRxx-2A8B91 with password 0000). Upon finishing adding the device, one should select it on the devices screen and check Serial Port if it is unselected. After confirming that Serial Port is checked, one should go to COM Ports located in the upperleft corner of the screen. One should then press New Outgoing Port and select the ID of the target device. Set the port to COM5 and press Finish. Return to the main menu. From the main menu, one should select GNSS Connector and connect to COM5. Only Trimble #1 (Green sticker with a #1 on the back) is capable of connecting to the locator via Bluetooth. Trimble #2 suffers a problem with creating proper COM ports to read Bluetooth signals.

Main Menu

Settings > Bluetooth

GNSS Connector

For a stronger GPS signal, it is recommended to attach the Trimble to the GNSS antenna, which is

supported by a long carbon-fiber pole that can be attached to an SR-XX. If the Trimble is used by itself, it automatically uses its built in antenna as a receptor for GPS satellites. This is problematic due to possible satellite signal interference with everything from the building, flagpoles, trees, or even the user themselves. Thus, it is recommended to use an external antenna, ideally one that stands taller than the user. 8. Methodology After connecting the trilock as described above, the locator is pointed at the ground, held steady, and is used to log data. The five main frequencies used in these experiments are 60 Hz, 710 Hz, 7810 Hz, 85910 Hz, and <4000 Hz. Data was collected at five orientations relative to the transect line: 90, 45, 0, -45, and 90 degrees with 0 degrees being parallel to the transect line and 90 degrees being a quarter-circle turn so that the locators head points to the right of the transect path. Data should be collected while moving at a constant and uniform speed, especially when GPS data or timestamps arent used. iii

In case certain frequencies are un-selectable initially, one can define their own frequencies to sample at. From the main screen, press the menu button. Scroll down to the option directly above info, select it, and select the option directly above the small lightning bolt. After selecting the first option on the new page, one can input their own frequencies to sample at.

Experiments It is recommended for one to try and replicate a few of the simpler experiments to familiarize oneself with the equipment and methodology. 1. Baseline Polar Data After hooking up the trilock to the transmitter to the gas meter described above, a standard, non-4 coil SR-XX was used to collect data across the transect line. Four frequencies (710, 7810, 85910, <4000) were measured in four runs per frequency. Pictured: AngleGraphs1

Collected data can be found in the folder Original Data. Data plotted was BotBallPolar data vs. a matrix representing 50 feet. Functions used include xmlPolarGraph() and arrayPolarGraph(). Results turned out as expected with the exception of the unusual noisiness of 710 and 7810 Hz. Later, it was discovered that a poor grounding location caused the transmitter to output a weaker magnetic field, leading to a generally weaker signal.

2. Redone Baseline Polar Data After hooking up the trilock to the transmitter to the gas meter described above, a standard, non-4 coil SR-XX was used to collect data across the transect line. Five frequencies (60, 710, 7810, 85910, <4000) were measured in three runs per frequency. This was done with a much better ground and hence, a stronger signal than Experiment #1. Pictured: AngleGraphs2

Collected data can be found in the folder OrthGrad with Intermediates. Data plotted was BotBallPolar data vs. a matrix representing 15.24 meters. Functions used include xmlPolarGraph() and arrayPolarGraph(). Results were significantly improved from Experiment #1, noise was decreased across all frequencies. Interestingly, though 7810 Hz was generally better behaved than from Experiment #1, there would still be runs with lots of noise. The blue dataset on 7810 is meant to represent this.

3. Initial Turned Data After connecting the trilock to the gas meter, a standard SR-XX was turned while collecting data. Left refers to a -90 degree orientation while right refers to a 90 degree orientation. Five frequencies (60, 710, 7810, 85910, <4000) were measured with one run per frequency per orientation. Pictured: AngleGraphs3

Collected data can be found in the folder OrthGrad no Intermediates. Data plotted was BotBallPolar data vs. a matrix representing 15.24 meters. Functions used include xmlPolarGraph() and arrayPolarGraph(). Noise levels are similar to those in Experiment #2, with the sole exception of 7810 Hz, which was extremely noisy. The expected trend is accuracy proportional to the frequency (i.e. 89510 Hz is the most accurate while 60 Hz is the least) with the exception of <4000 because it covers a large range of frequencies. However, the data seems to contradict this. Finally, the left data seems to generally mirror the right data, which is another expected result.

4. Gradient Data The procedure in Experiment #3 was repeated with the locator turned at 90 (right) and -90 (left) degrees relative to the transect line. This experiment was still done with a standard 2-coil SR-XX. Pictured: TransectGraphs1 and TransectGraphs2

Collected data can be found in the folder OrthGrad Exclusives. Normalized data plotted was (|R|-|L|)/(|R|+|L|) vs. a matrix representing 15.24 meters where R is the right gradient channel (no. 4) and L is the left gradient channel (no. 8). Unnormalized data was |R|-|L| vs. a matrix representing 15.24 meters. Functions used include RLPoints(). Though the noise problem with 7810 Hz seems much better, 710 Hz is still quite noisy. With the exception of 60 Hz, all of the graphs follow the expected trend of a decrease in accuracy proportional to frequency. Because of the 180 degree difference between the two orientations, the right and left data are expected to be opposite in sign, which is shown in this data.

5. Redone Gradient Data Repeated the procedure in Experiment #3 with a better ground and stronger signal. Pictured: NewTransectGraphs1 and NewTransectGraphs2

Collected data can be found in the folder OrthGrad Exclusives no Intermediates. Data plotted was (|R|-|L|)/(|R|+|L|) vs. a matrix representing 15.24 meters where R is the right gradient channel (no. 4) and L is the left gradient channel (no. 8). Unnormalized data was |R|-|L| vs. a matrix representing 15.24 meters. Functions used include RLPoints(). Noise seems all but gone in all graphs, with the exception of some minor disturbance in 60 Hz. However, this follows the prediction that higher frequencies would have proportionally less noise than lower ones.

6. 4-Coil Gradient Data First run with the new 4-coil SR-XX. This run sampled the same 5 frequencies at 5 orientations. Actual locations of lines are marked as black vertical lines. Blue is 90, red is 45, green is 0, magenta is -45, cyan is -90. Pictured: 4CoilGraphs

Collected data can be found in the folder Calibrated CompositeData. Data plotted was |R|-|L| and |F|-|B| vs. a matrix representing 15.24 meters. Functions used include RLPoints(), FBPoints(), and importActual(). Once again, the data meets expectations and behaves predictably. For example, as the locator passes over a pipeline, the forwards-backwards graph(most notably 0 degrees) increases heavily as the pipeline is approached, quickly flips signs to negative, and stabilizes itself at zero. It is notable, however, that the lines for 45 and -45 do not seem to be opposite each other

7. 4-Coil Normalized Gradient Data Same data as Experiment #6, recalculated into the formula: | | | | | | | | | | | | | | | | | | | | | | | |

Pictured: 4CoilGraphs2

Collected data can be found in the folder Calibrated CompositeData. Functions used include normalize() and importActual(). The purpose of this formula was to prevent the data from skewing itself too much as the locator approaches the pipeline. Though it was successful for 60 Hz, 7810 Hz, and <4000 Hz, the remaining frequencies still have sharp spikes in them.

8. 4-Coil Gradient Quiver Data The Trimble GPS was integrated into the 4-coil SR-XX. The x and y coordinates of each point represents the displacement of the locator with respect to the initial starting position, which is defined as (0,0). The only frequency used for this experiment was 85910 Hz. Pictured: 86kQuiver

Collected data can be found in the folder Calibrated CompositeDataGPS. X and y coordinates of each point represent the location of the locator. The length of each arrow vector represents the strength of the magnetic field while the angle of each vector represents azimuthal angle. Functions used include convertLat(), convertLong, convertLatLongDist(), stretchVec(), and xmlQuiverGraph() Several problems were encountered while analyzing this data. Firstly, the sampling rate of the GPS was found to be significantly less than that of the gradients, resulting in more gradient data points than latitude and longitude ones. This problem was circumvented using the function stretchVec(), which creates intermediate values depending on a linear approximation between adjacent points. Secondly, because displacement along the transect path was constant, the tails of the vectors are expected to be in a straight x = y line. However, the inconsistency of the data with our predictions suggests that GPS error exists (after all, there is an error indicator in the upper right side of TerraSync on the Trimble). Thirdly, the directions of the arrows are not exact due to the fact that the compass data has not yet been used to correct them. Finally, azimuthal angle and magnetic field strength should be independent of orientation, and thus, all 5 graphs should look somewhat identical. Obviously, this is not the case.

9. 4-Coil Yaw, Pitch, Roll Data The same data from Experiment #8 was used. To calculate the yaw, pitch, and roll of the 85910 Hz data. Pictured: YPR86k

Collected data can be found in the folder BData. Data plotted was Yaw, Pitch, and Roll vs. sampling values. Functions used include find_yaw_pitch_roll_from_mapper16(). As expected, pitch and roll are relatively close to zero throughout all datasets, signifying that the locator was held perpendicular to the ground at all times. Similarly, though yaw was not expected to stay at zero, it was expected to stay relatively stable throughout the experiment. However, yaw appears to vary wildly, especially when signal strength is strong. Though human error in holding the locator could be to blame, it doesnt account for the extreme fluctuations seen here.

10. 4-Coil Azimuth and Polar Data Using the same dataset as Experiment #9, polar and azimuthal values were again plotted. Pictured: BaziBpol86k

Collected data can be found in the folder BData. Data plotted was BotBallAzimuth and BotBallPolar vs. sampling values. Functions used include readPlotcsv(). Polar data is still unchanged and relatively reasonable. However, azimuth data is unusually noisy, frequently jumping 180 degrees. To achieve better accuracy, jumps must be eliminated using unwrap().

11. 4-Coil Unwrapped Azimuth and Polar Data Using the same data as Experiment #9, only the 90 degree plots were used. Data was filtered through the unwrap() function in MATLAB.

Collected data can be found in the folder Calibrated CompositeData. Data plotted is polar and azimuthal angle in degrees vs. sampling value. Functions used include readPlotcsv(). Sadly, unwrapping the data fails to make the curve any smoother. Lowering the tolerance for unwrapping seems equally useless. Polar data is completely unaffected by unwrapping.

12. 4-Coil Transect 2 Azimuth and Polar Data This data was collected along transect 2 in the 3855 parking lot as opposed to transect 1 in front of 3777. Pictured: AngleGraphs4

Collected data can be found in the folder WrappingData. Data plotted was BotBallAzimuth and BotBallPolar vs. sampling values. No special functions were used. The data is still consistent with expectations: as the locator passes over the gas line, polar angle drops to zero degrees and azimuthal angle is incremented by 180 degrees. However, initial and end behavior are much more enigmatic. There exists a plateau region immediately before the locator passes the line in which the azimuth is held at around 150 degrees. Azimuth end behavior is even more inconsistent, with 7810 Hz fluctuating 360 degrees between -180 and 180 while 89510 Hz and 710 Hz begin to plateau.

13. 4-Coil Transect 2 Unwrapped Azimuth and Polar Data The data in Experiment #11 was reprocessed using two unwrap() commands. Pictured: DoubleUnwrap

Functions used include xmlLineUnwrap(). The original intention was to create a smoother azimuthal curve by initially unwrapping the data, doubling the values of all data points, and unwrapping the doubled values. However, after the first call to unwrap() no amount of unwrapping at any tolerance could further smoothen the graph at all.

Suggestions and Tips for the Future 1. There exists freshly collected, unused, and unanalyzed data collected with an antenna + GPS + 4coil locator in the CollectedData folder called Calibrated GPSAntennaData 2. A thorough analysis of the diagonal data (45 and -45 degrees) is needed to determine how accurately the SR-XX can use the gradients x and y components to calculate ball data. 3. Consider using Trimble #2s USB port to log GPS data into the locator instead of forcing the software to create a COM port. Alternatively, one could initiate a factory reset of Trimble #2 and reinstall/reconfigure everything in accordance with Trimble #1 4. Try using a protractor or something similar to measure the actual angle in which the data is being collected. 5. There needs to be a more accurate method of guaranteeing the locators moving at a constant velocity. For this, a timer or stopwatch could be used. 6. Similar runs can be done with other easy-to-use orientations such as 30 and 60 degrees. 7. The locators internal compass data could be used to correct for azimuthal values 8. A good grounding location for the transmitters normally consists of wet soil. A bad grounding location can lead to a weak and erratic signal. 9. Generally, if the upper-left hand corners signal strength value is above 1000, the data collected is reliable. 10. The current created by the transmitter in transect 1 may be coupling onto another line or may be meeting an insulator, leading to poorer data 11. A longer antenna may result in better GPS data. However, the carbon-fiber pole has a tendency to wobble, which may translate to equally wobbly data when analyzing the locators latitude and longitude data. 12. Be gentle with the SR-XX, its been through a lot 13. The flashing lights can be turned off by pressing the Menu button, scrolling down to Safety Light, and setting it to off. 14. Remember to place a period in front of arithmetic operations (such as .* instead of just * ) to do operation by each element instead of matrix multiplication.

In order to run format_datalog4(), other files such as parseXML.exe and srxx_types.xml are needed, thus it is recommended to import everything in U:\INTERNS\Jason Chu\MATLAB\Programs into the current MATLAB workspace before processing any data. ii A semicolon can be appended to the end of a line of code to suppress output, however, output will still be displayed if the disp() function is used. Using (or not using) disp() and semicolons may be useful for debugging code. iii The SR-XX is prone to erratic behavior such as randomly turning off, especially if it suffers significant physical trauma. This is most likely caused by electronics coming apart within the hull of the locator.

Dyson Vacuum Teardown *Unrelated to SR-XX Field and Data project Dyson handheld vacuum teardown: Do not attempt consumption of this tool

The Dyson is consistent of two parts, the filter and the motor. The filter is further split into a removable battery (Left) and the handheld motor itself (Right)

The filter splits into the debris container (Left) and the filters themselves (Right)

The filter itself is primarily made of two separate filters: a screen for larger particles, and cyclone filters (US patent 6835222) to remove smaller particles from the air fluid.

More tampering reveals two more filters for even smaller particles: a foam cover (Colored black below the white plastic cover) and a replaceable filter attached to the motor (Shown with a pattern of small taps). Everything up to this point is simple to remove: no screws or adhesives. The hard part begins. After forcibly prying off the back end of the motor, we see that this is where most of the electronics lies. At the motors back end, we can see the circuitry behind the MAX button, complete with LEDs.

The transformers which convert the batterys current into mechanical energy are located right behind the semicircle-shaped motherboard.

After removing a large rubber dampener from the side of the motor, we isolate the electromagnetic motor itself. The circuit and the two capacitors below it are all glued in place.

Finishing off the handle apparatus, an L-shaped down button lies in the center of the page. Several springs have been pulled off.

The circuit can be separated from the motor by forcing apart the adhesives between them. Another plastic mold (right) can be pushed off the center of this circuit.

More brute force reveals a magnet, a fan, and a lot of adhesive in the motor