Serveur d'exploration sur la télématique

Attention, ce site est en cours de développement !
Attention, site généré par des moyens informatiques à partir de corpus bruts.
Les informations ne sont donc pas validées.

A Kalman Filter Implementation for Precision Improvement in Low-Cost GPS Positioning of Tractors

Identifieur interne : 000574 ( Pmc/Corpus ); précédent : 000573; suivant : 000575

A Kalman Filter Implementation for Precision Improvement in Low-Cost GPS Positioning of Tractors

Auteurs : Jaime Gomez-Gil ; Ruben Ruiz-Gonzalez ; Sergio Alonso-Garcia ; Francisco Javier Gomez-Gil

Source :

RBID : PMC:3871121

Abstract

Low-cost GPS receivers provide geodetic positioning information using the NMEA protocol, usually with eight digits for latitude and nine digits for longitude. When these geodetic coordinates are converted into Cartesian coordinates, the positions fit in a quantization grid of some decimeters in size, the dimensions of which vary depending on the point of the terrestrial surface. The aim of this study is to reduce the quantization errors of some low-cost GPS receivers by using a Kalman filter. Kinematic tractor model equations were employed to particularize the filter, which was tuned by applying Monte Carlo techniques to eighteen straight trajectories, to select the covariance matrices that produced the lowest Root Mean Square Error in these trajectories. Filter performance was tested by using straight tractor paths, which were either simulated or real trajectories acquired by a GPS receiver. The results show that the filter can reduce the quantization error in distance by around 43%. Moreover, it reduces the standard deviation of the heading by 75%. Data suggest that the proposed filter can satisfactorily preprocess the low-cost GPS receiver data when used in an assistance guidance GPS system for tractors. It could also be useful to smooth tractor GPS trajectories that are sharpened when the tractor moves over rough terrain.


Url:
DOI: 10.3390/s131115307
PubMed: 24217355
PubMed Central: 3871121

Links to Exploration step

PMC:3871121

Le document en format XML

<record>
<TEI>
<teiHeader>
<fileDesc>
<titleStmt>
<title xml:lang="en">A Kalman Filter Implementation for Precision Improvement in Low-Cost GPS Positioning of Tractors</title>
<author>
<name sortKey="Gomez Gil, Jaime" sort="Gomez Gil, Jaime" uniqKey="Gomez Gil J" first="Jaime" last="Gomez-Gil">Jaime Gomez-Gil</name>
<affiliation>
<nlm:aff id="af1-sensors-13-15307"> Department of Signal Theory, Communications and Telematics Engineering, University of Valladolid, 47011 Valladolid, Spain; E-Mails:
<email>rruigon@ribera.tel.uva.es</email>
(R.R.-G.);
<email>salonsog@ribera.tel.uva.es</email>
(S.A.-G.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Ruiz Gonzalez, Ruben" sort="Ruiz Gonzalez, Ruben" uniqKey="Ruiz Gonzalez R" first="Ruben" last="Ruiz-Gonzalez">Ruben Ruiz-Gonzalez</name>
<affiliation>
<nlm:aff id="af1-sensors-13-15307"> Department of Signal Theory, Communications and Telematics Engineering, University of Valladolid, 47011 Valladolid, Spain; E-Mails:
<email>rruigon@ribera.tel.uva.es</email>
(R.R.-G.);
<email>salonsog@ribera.tel.uva.es</email>
(S.A.-G.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Alonso Garcia, Sergio" sort="Alonso Garcia, Sergio" uniqKey="Alonso Garcia S" first="Sergio" last="Alonso-Garcia">Sergio Alonso-Garcia</name>
<affiliation>
<nlm:aff id="af1-sensors-13-15307"> Department of Signal Theory, Communications and Telematics Engineering, University of Valladolid, 47011 Valladolid, Spain; E-Mails:
<email>rruigon@ribera.tel.uva.es</email>
(R.R.-G.);
<email>salonsog@ribera.tel.uva.es</email>
(S.A.-G.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Gomez Gil, Francisco Javier" sort="Gomez Gil, Francisco Javier" uniqKey="Gomez Gil F" first="Francisco Javier" last="Gomez-Gil">Francisco Javier Gomez-Gil</name>
<affiliation>
<nlm:aff id="af2-sensors-13-15307"> Department of Electromechanical Engineering, University of Burgos, 09006 Burgos, Spain; E-Mail:
<email>fjggil@ubu.es</email>
</nlm:aff>
</affiliation>
</author>
</titleStmt>
<publicationStmt>
<idno type="wicri:source">PMC</idno>
<idno type="pmid">24217355</idno>
<idno type="pmc">3871121</idno>
<idno type="url">http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3871121</idno>
<idno type="RBID">PMC:3871121</idno>
<idno type="doi">10.3390/s131115307</idno>
<date when="2013">2013</date>
<idno type="wicri:Area/Pmc/Corpus">000574</idno>
<idno type="wicri:explorRef" wicri:stream="Pmc" wicri:step="Corpus" wicri:corpus="PMC">000574</idno>
</publicationStmt>
<sourceDesc>
<biblStruct>
<analytic>
<title xml:lang="en" level="a" type="main">A Kalman Filter Implementation for Precision Improvement in Low-Cost GPS Positioning of Tractors</title>
<author>
<name sortKey="Gomez Gil, Jaime" sort="Gomez Gil, Jaime" uniqKey="Gomez Gil J" first="Jaime" last="Gomez-Gil">Jaime Gomez-Gil</name>
<affiliation>
<nlm:aff id="af1-sensors-13-15307"> Department of Signal Theory, Communications and Telematics Engineering, University of Valladolid, 47011 Valladolid, Spain; E-Mails:
<email>rruigon@ribera.tel.uva.es</email>
(R.R.-G.);
<email>salonsog@ribera.tel.uva.es</email>
(S.A.-G.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Ruiz Gonzalez, Ruben" sort="Ruiz Gonzalez, Ruben" uniqKey="Ruiz Gonzalez R" first="Ruben" last="Ruiz-Gonzalez">Ruben Ruiz-Gonzalez</name>
<affiliation>
<nlm:aff id="af1-sensors-13-15307"> Department of Signal Theory, Communications and Telematics Engineering, University of Valladolid, 47011 Valladolid, Spain; E-Mails:
<email>rruigon@ribera.tel.uva.es</email>
(R.R.-G.);
<email>salonsog@ribera.tel.uva.es</email>
(S.A.-G.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Alonso Garcia, Sergio" sort="Alonso Garcia, Sergio" uniqKey="Alonso Garcia S" first="Sergio" last="Alonso-Garcia">Sergio Alonso-Garcia</name>
<affiliation>
<nlm:aff id="af1-sensors-13-15307"> Department of Signal Theory, Communications and Telematics Engineering, University of Valladolid, 47011 Valladolid, Spain; E-Mails:
<email>rruigon@ribera.tel.uva.es</email>
(R.R.-G.);
<email>salonsog@ribera.tel.uva.es</email>
(S.A.-G.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Gomez Gil, Francisco Javier" sort="Gomez Gil, Francisco Javier" uniqKey="Gomez Gil F" first="Francisco Javier" last="Gomez-Gil">Francisco Javier Gomez-Gil</name>
<affiliation>
<nlm:aff id="af2-sensors-13-15307"> Department of Electromechanical Engineering, University of Burgos, 09006 Burgos, Spain; E-Mail:
<email>fjggil@ubu.es</email>
</nlm:aff>
</affiliation>
</author>
</analytic>
<series>
<title level="j">Sensors (Basel, Switzerland)</title>
<idno type="eISSN">1424-8220</idno>
<imprint>
<date when="2013">2013</date>
</imprint>
</series>
</biblStruct>
</sourceDesc>
</fileDesc>
<profileDesc>
<textClass></textClass>
</profileDesc>
</teiHeader>
<front>
<div type="abstract" xml:lang="en">
<p>Low-cost GPS receivers provide geodetic positioning information using the NMEA protocol, usually with eight digits for latitude and nine digits for longitude. When these geodetic coordinates are converted into Cartesian coordinates, the positions fit in a quantization grid of some decimeters in size, the dimensions of which vary depending on the point of the terrestrial surface. The aim of this study is to reduce the quantization errors of some low-cost GPS receivers by using a Kalman filter. Kinematic tractor model equations were employed to particularize the filter, which was tuned by applying Monte Carlo techniques to eighteen straight trajectories, to select the covariance matrices that produced the lowest Root Mean Square Error in these trajectories. Filter performance was tested by using straight tractor paths, which were either simulated or real trajectories acquired by a GPS receiver. The results show that the filter can reduce the quantization error in distance by around 43%. Moreover, it reduces the standard deviation of the heading by 75%. Data suggest that the proposed filter can satisfactorily preprocess the low-cost GPS receiver data when used in an assistance guidance GPS system for tractors. It could also be useful to smooth tractor GPS trajectories that are sharpened when the tractor moves over rough terrain.</p>
</div>
</front>
<back>
<div1 type="bibliography">
<listBibl>
<biblStruct>
<analytic>
<author>
<name sortKey="Slaughter, D C" uniqKey="Slaughter D">D.C. Slaughter</name>
</author>
<author>
<name sortKey="Giles, D K" uniqKey="Giles D">D.K. Giles</name>
</author>
<author>
<name sortKey="Downey, D" uniqKey="Downey D">D. Downey</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Zhang, N" uniqKey="Zhang N">N. Zhang</name>
</author>
<author>
<name sortKey="Wang, M" uniqKey="Wang M">M. Wang</name>
</author>
<author>
<name sortKey="Wang, N" uniqKey="Wang N">N. Wang</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Auernhammer, H" uniqKey="Auernhammer H">H. Auernhammer</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Keicher, R" uniqKey="Keicher R">R. Keicher</name>
</author>
<author>
<name sortKey="Seufert, H" uniqKey="Seufert H">H. Seufert</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Li, M" uniqKey="Li M">M. Li</name>
</author>
<author>
<name sortKey="Imou, K" uniqKey="Imou K">K. Imou</name>
</author>
<author>
<name sortKey="Wakabayashi, K" uniqKey="Wakabayashi K">K. Wakabayashi</name>
</author>
<author>
<name sortKey="Yokoyama, S" uniqKey="Yokoyama S">S. Yokoyama</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Holden, N M" uniqKey="Holden N">N.M. Holden</name>
</author>
<author>
<name sortKey="Comparetti, A" uniqKey="Comparetti A">A. Comparetti</name>
</author>
<author>
<name sortKey="Ward, S M" uniqKey="Ward S">S.M. Ward</name>
</author>
<author>
<name sortKey="Mcgovern, E A" uniqKey="Mcgovern E">E.A. McGovern</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct></biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="August, P" uniqKey="August P">P. August</name>
</author>
<author>
<name sortKey="Michaud, J" uniqKey="Michaud J">J. Michaud</name>
</author>
<author>
<name sortKey="Lavash, C" uniqKey="Lavash C">C. Lavash</name>
</author>
<author>
<name sortKey="Smith, C" uniqKey="Smith C">C. Smith</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct></biblStruct>
<biblStruct></biblStruct>
<biblStruct></biblStruct>
<biblStruct></biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Smith, S O" uniqKey="Smith S">S.O. Smith</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Snyder, J P" uniqKey="Snyder J">J.P. Snyder</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Pearson, F" uniqKey="Pearson F">F. Pearson</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Grewal, M S" uniqKey="Grewal M">M.S. Grewal</name>
</author>
<author>
<name sortKey="Weill, L R" uniqKey="Weill L">L.R. Weill</name>
</author>
<author>
<name sortKey="Andrews, A P" uniqKey="Andrews A">A.P. Andrews</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Latombe, J C" uniqKey="Latombe J">J.-C. Latombe</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Kalman, R E" uniqKey="Kalman R">R.E. Kalman</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Brown, R G" uniqKey="Brown R">R.G. Brown</name>
</author>
<author>
<name sortKey="Hwang, P Y C" uniqKey="Hwang P">P.Y.C. Hwang</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Zarchan, P" uniqKey="Zarchan P">P. Zarchan</name>
</author>
<author>
<name sortKey="Musoff, H" uniqKey="Musoff H">H. Musoff</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Papoulis, A" uniqKey="Papoulis A">A. Papoulis</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey=" Kesson, B M" uniqKey=" Kesson B">B.M. Åkesson</name>
</author>
<author>
<name sortKey="J Rgensen, J B" uniqKey="J Rgensen J">J.B. Jørgensen</name>
</author>
<author>
<name sortKey="Poulsen, N K" uniqKey="Poulsen N">N.K. Poulsen</name>
</author>
<author>
<name sortKey="J Rgensen, S B" uniqKey="J Rgensen S">S.B. Jørgensen</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Saha, M" uniqKey="Saha M">M. Saha</name>
</author>
<author>
<name sortKey="Goswami, B" uniqKey="Goswami B">B. Goswami</name>
</author>
<author>
<name sortKey="Ghosh, R" uniqKey="Ghosh R">R. Ghosh</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Bodizs, L" uniqKey="Bodizs L">L. Bodizs</name>
</author>
<author>
<name sortKey="Srinivasan, B" uniqKey="Srinivasan B">B. Srinivasan</name>
</author>
<author>
<name sortKey="Bonvin, D" uniqKey="Bonvin D">D. Bonvin</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Loebis, D" uniqKey="Loebis D">D. Loebis</name>
</author>
<author>
<name sortKey="Sutton, R" uniqKey="Sutton R">R. Sutton</name>
</author>
<author>
<name sortKey="Chudley, J" uniqKey="Chudley J">J. Chudley</name>
</author>
<author>
<name sortKey="Naeem, W" uniqKey="Naeem W">W. Naeem</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Korniyenko, O V" uniqKey="Korniyenko O">O.V. Korniyenko</name>
</author>
<author>
<name sortKey="Sharawi, M S" uniqKey="Sharawi M">M.S. Sharawi</name>
</author>
<author>
<name sortKey="Aloi, D N" uniqKey="Aloi D">D.N. Aloi</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Goodall, C" uniqKey="Goodall C">C. Goodall</name>
</author>
<author>
<name sortKey="El Sheimy, N" uniqKey="El Sheimy N">N. El-Sheimy</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Ran, C" uniqKey="Ran C">C. Ran</name>
</author>
<author>
<name sortKey="Deng, Z" uniqKey="Deng Z">Z. Deng</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Mosavi, M R" uniqKey="Mosavi M">M.R. Mosavi</name>
</author>
<author>
<name sortKey="Sadeghian, M" uniqKey="Sadeghian M">M. Sadeghian</name>
</author>
<author>
<name sortKey="Saeidi, S" uniqKey="Saeidi S">S. Saeidi</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Stroud, P D" uniqKey="Stroud P">P.D. Stroud</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Liu, J S" uniqKey="Liu J">J.S. Liu</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Czajewski, J" uniqKey="Czajewski J">J. Czajewski</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Gan Mor, S" uniqKey="Gan Mor S">S. Gan-Mor</name>
</author>
<author>
<name sortKey="Clark, R L" uniqKey="Clark R">R.L. Clark</name>
</author>
<author>
<name sortKey="Upchurch, B L" uniqKey="Upchurch B">B.L. Upchurch</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Valbuena, R" uniqKey="Valbuena R">R. Valbuena</name>
</author>
<author>
<name sortKey="Mauro, F" uniqKey="Mauro F">F. Mauro</name>
</author>
<author>
<name sortKey="Rodriguez Solano, R" uniqKey="Rodriguez Solano R">R. Rodríguez-Solano</name>
</author>
<author>
<name sortKey="Manzanera, J A" uniqKey="Manzanera J">J.A. Manzanera</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Peters, R T" uniqKey="Peters R">R.T. Peters</name>
</author>
<author>
<name sortKey="Evett, S R" uniqKey="Evett S">S.R. Evett</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Witte, T H" uniqKey="Witte T">T.H. Witte</name>
</author>
<author>
<name sortKey="Wilson, A M" uniqKey="Wilson A">A.M. Wilson</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Arnold, L L" uniqKey="Arnold L">L.L. Arnold</name>
</author>
<author>
<name sortKey="Zandbergen, P A" uniqKey="Zandbergen P">P.A. Zandbergen</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Alonso Garcia, S" uniqKey="Alonso Garcia S">S. Alonso-Garcia</name>
</author>
<author>
<name sortKey="Gomez Gil, J" uniqKey="Gomez Gil J">J. Gomez-Gil</name>
</author>
<author>
<name sortKey="Arribas, J I" uniqKey="Arribas J">J.I. Arribas</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Gomez Gil, J" uniqKey="Gomez Gil J">J. Gomez-Gil</name>
</author>
<author>
<name sortKey="Alonso Garcia, S" uniqKey="Alonso Garcia S">S. Alonso-Garcia</name>
</author>
<author>
<name sortKey="Gomez Gil, F J" uniqKey="Gomez Gil F">F.J. Gomez-Gil</name>
</author>
<author>
<name sortKey="Stombaugh, T" uniqKey="Stombaugh T">T. Stombaugh</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Han, S" uniqKey="Han S">S. Han</name>
</author>
<author>
<name sortKey="Zhang, Q" uniqKey="Zhang Q">Q. Zhang</name>
</author>
<author>
<name sortKey="Noh, H" uniqKey="Noh H">H. Noh</name>
</author>
</analytic>
</biblStruct>
</listBibl>
</div1>
</back>
</TEI>
<pmc article-type="research-article">
<pmc-dir>properties open_access</pmc-dir>
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors (Basel)</journal-id>
<journal-id journal-id-type="iso-abbrev">Sensors (Basel)</journal-id>
<journal-title-group>
<journal-title>Sensors (Basel, Switzerland)</journal-title>
</journal-title-group>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="pmid">24217355</article-id>
<article-id pub-id-type="pmc">3871121</article-id>
<article-id pub-id-type="doi">10.3390/s131115307</article-id>
<article-id pub-id-type="publisher-id">sensors-13-15307</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>A Kalman Filter Implementation for Precision Improvement in Low-Cost GPS Positioning of Tractors</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Gomez-Gil</surname>
<given-names>Jaime</given-names>
</name>
<xref ref-type="aff" rid="af1-sensors-13-15307">
<sup>1</sup>
</xref>
<xref rid="c1-sensors-13-15307" ref-type="corresp">
<sup>*</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Ruiz-Gonzalez</surname>
<given-names>Ruben</given-names>
</name>
<xref ref-type="aff" rid="af1-sensors-13-15307">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Alonso-Garcia</surname>
<given-names>Sergio</given-names>
</name>
<xref ref-type="aff" rid="af1-sensors-13-15307">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Gomez-Gil</surname>
<given-names>Francisco Javier</given-names>
</name>
<xref ref-type="aff" rid="af2-sensors-13-15307">
<sup>2</sup>
</xref>
</contrib>
</contrib-group>
<aff id="af1-sensors-13-15307">
<label>1</label>
Department of Signal Theory, Communications and Telematics Engineering, University of Valladolid, 47011 Valladolid, Spain; E-Mails:
<email>rruigon@ribera.tel.uva.es</email>
(R.R.-G.);
<email>salonsog@ribera.tel.uva.es</email>
(S.A.-G.)</aff>
<aff id="af2-sensors-13-15307">
<label>2</label>
Department of Electromechanical Engineering, University of Burgos, 09006 Burgos, Spain; E-Mail:
<email>fjggil@ubu.es</email>
</aff>
<author-notes>
<corresp id="c1-sensors-13-15307">
<label>*</label>
Author to whom correspondence should be addressed; E-Mail:
<email>jgomez@tel.uva.es</email>
; Tel.: +34-6175-07469; Fax: +34-9834-23667.</corresp>
</author-notes>
<pub-date pub-type="collection">
<month>11</month>
<year>2013</year>
</pub-date>
<pub-date pub-type="epub">
<day>08</day>
<month>11</month>
<year>2013</year>
</pub-date>
<volume>13</volume>
<issue>11</issue>
<fpage>15307</fpage>
<lpage>15323</lpage>
<history>
<date date-type="received">
<day>03</day>
<month>9</month>
<year>2013</year>
</date>
<date date-type="rev-recd">
<day>03</day>
<month>11</month>
<year>2013</year>
</date>
<date date-type="accepted">
<day>04</day>
<month>11</month>
<year>2013</year>
</date>
</history>
<permissions>
<copyright-statement>© 2013 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2013</copyright-year>
<license>
<license-p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (
<ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</ext-link>
).</license-p>
</license>
</permissions>
<abstract>
<p>Low-cost GPS receivers provide geodetic positioning information using the NMEA protocol, usually with eight digits for latitude and nine digits for longitude. When these geodetic coordinates are converted into Cartesian coordinates, the positions fit in a quantization grid of some decimeters in size, the dimensions of which vary depending on the point of the terrestrial surface. The aim of this study is to reduce the quantization errors of some low-cost GPS receivers by using a Kalman filter. Kinematic tractor model equations were employed to particularize the filter, which was tuned by applying Monte Carlo techniques to eighteen straight trajectories, to select the covariance matrices that produced the lowest Root Mean Square Error in these trajectories. Filter performance was tested by using straight tractor paths, which were either simulated or real trajectories acquired by a GPS receiver. The results show that the filter can reduce the quantization error in distance by around 43%. Moreover, it reduces the standard deviation of the heading by 75%. Data suggest that the proposed filter can satisfactorily preprocess the low-cost GPS receiver data when used in an assistance guidance GPS system for tractors. It could also be useful to smooth tractor GPS trajectories that are sharpened when the tractor moves over rough terrain.</p>
</abstract>
<kwd-group>
<kwd>Kalman filter</kwd>
<kwd>agricultural vehicle</kwd>
<kwd>Global Positioning System (GPS)</kwd>
<kwd>vehicle guidance</kwd>
<kwd>sensor data fusion</kwd>
<kwd>autonomous navigation</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec>
<label>1.</label>
<title>Introduction</title>
<p>Global Positioning Systems (GPS) are nowadays used in many agricultural tasks [
<xref rid="b1-sensors-13-15307" ref-type="bibr">1</xref>
<xref rid="b3-sensors-13-15307" ref-type="bibr">3</xref>
]. GPS receivers with RTK differential corrections are frequently employed in agricultural equipment [
<xref rid="b4-sensors-13-15307" ref-type="bibr">4</xref>
,
<xref rid="b5-sensors-13-15307" ref-type="bibr">5</xref>
]. Nevertheless, tasks such as yield mapping [
<xref rid="b6-sensors-13-15307" ref-type="bibr">6</xref>
] and assisted guidance in cereal fertilization do not always need centimeter precision. In consequence, some companies manufacture assisted guidance systems for tractors equipped with low-cost GPS receivers, such as
<italic>Agroguia</italic>
<sup>®</sup>
[
<xref rid="b7-sensors-13-15307" ref-type="bibr">7</xref>
] and
<italic>Tractordrive</italic>
<sup>®</sup>
[
<xref rid="b8-sensors-13-15307" ref-type="bibr">8</xref>
], for example, in Spain. Moreover, the universalization of mobile computing with smartphones and tablet devices, equipped with powerful processors and low-cost embedded GPS receivers, makes the use of these devices in agricultural tasks attractive. However, due to a quantization effect, most low-cost GPS receivers provide positions on a rectangular grid of some decimeters on each side. Because of this fact, low speed trajectories and parts of the trajectories with headings close to a coordinate axle suffer from significant speed, position, and heading errors when using low-cost GPS receivers.</p>
<p>The aim of this work is to smooth the tractor trajectories acquired by low-cost GPS receivers, by improving the precision of their position data by decreasing their quantization error. To do so, an implementation of the Kalman filter was applied to the trajectory data provided by a low-cost GPS receiver that was placed on a farm tractor.</p>
<p>The following points are introduced below for a better understanding of this implementation: (i) error considerations for GPS receivers; (ii) the quantization effects in low-cost GPS receivers; (iii) the kinematic model of a tractor; (iv) the Kalman filter; and (v) the Kalman filter tuning.</p>
<sec>
<label>1.1.</label>
<title>Error Considerations for GPS Receivers</title>
<p>Two kinds of errors can be defined for GPS receivers and GPS guidance systems [
<xref rid="b9-sensors-13-15307" ref-type="bibr">9</xref>
<xref rid="b11-sensors-13-15307" ref-type="bibr">11</xref>
]: (i) precision, relative accuracy, reproducibility, repeatability, or pass-to-pass accuracy, which refer to the degree to which the measurements reported by a GPS receiver in a fixed placement provide close positions regardless of the real position; and (ii) accuracy or absolute accuracy, which refer to the degree of closeness of the measured positions to their real position.
<xref rid="f1-sensors-13-15307" ref-type="fig">Figure 1</xref>
illustrates the difference between precision and accuracy.</p>
<p>In guidance system applications, where the time between each pass is relatively short and the trajectories are not saved from year to year, precision can be considered the most important variable. In this way, low-cost GPS receivers with 10 m accuracy but sub-meter precision will be alternatives in such agricultural task.</p>
</sec>
<sec>
<label>1.2.</label>
<title>Quantization Effects in Low-Cost GPS Receivers</title>
<p>The most common chipsets that low-cost GPS receivers and embedded mobile computing devices integrate are the
<italic>Sirf</italic>
[
<xref rid="b12-sensors-13-15307" ref-type="bibr">12</xref>
], the
<italic>U-blox</italic>
[
<xref rid="b13-sensors-13-15307" ref-type="bibr">13</xref>
], and the
<italic>MTK</italic>
[
<xref rid="b14-sensors-13-15307" ref-type="bibr">14</xref>
]. Receivers with either of these chipsets transmit positioning information by means of the National Marine American Association (NMEA) 0183 protocol, and provide latitude and longitude geodetic coordinates with usually only eight digits for latitude and nine for longitude (
<xref rid="f2-sensors-13-15307" ref-type="fig">Figure 2</xref>
).</p>
<p>Geodetic coordinates are not appropriate for agricultural data processing and are usually converted to Cartesian coordinates. When positions in geodetic coordinates with a quantization of only 8 digits for latitude and 9 for longitude are converted to Cartesian coordinates such as Universal Transverse Mercator (UTM) [
<xref rid="b15-sensors-13-15307" ref-type="bibr">15</xref>
<xref rid="b17-sensors-13-15307" ref-type="bibr">17</xref>
] or East, North, Up (ENU) [
<xref rid="b18-sensors-13-15307" ref-type="bibr">18</xref>
], they appear on a rectangular grid of some decimeters in size. Specifically, at the place where the real tests were conducted, with a latitude of 41.32° N and a longitude of 4.84° W, the quantization grid is 14 cm and 18 cm on the X and Y axes, respectively, in UTM coordinates. Position, speed, and heading errors appear in the trajectories on this grid, which provoke oscillations in the trajectory of the tractor. These oscillations are especially noticeable when they are acquired at low speeds and with headings close to the direction of a coordinate axis (
<xref rid="f3-sensors-13-15307" ref-type="fig">Figure 3</xref>
).</p>
<p>On the basis of their professional experience with
<italic>Agroguia</italic>
<sup>®</sup>
[
<xref rid="b7-sensors-13-15307" ref-type="bibr">7</xref>
] and
<italic>Tractordrive</italic>
<sup>®</sup>
[
<xref rid="b8-sensors-13-15307" ref-type="bibr">8</xref>
], the authors state that these oscillations negatively affect the use of low-cost GPS receivers in GPS assisted-guidance systems for tractors.</p>
</sec>
<sec>
<label>1.3.</label>
<title>Kinematic Model of a Tractor</title>
<p>A classic tractor has two front wheels that steer as well as two rear wheels that are straight-driven. The behavior of this kind of tractor vehicle is typically modeled following the tricycle vehicle model [
<xref rid="b19-sensors-13-15307" ref-type="bibr">19</xref>
]. In this model, the system inputs are the vehicle speed modulus,
<italic>u</italic>
, and the front-wheel steering angle,
<italic>δ</italic>
. The tractor behavior can be described with a vector state,
<bold>
<italic>q</italic>
</bold>
, defined by the expression:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>δ</mml:mi>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
and, with the equations of its kinematic model, assuming non-slip conditions on the wheels, given by:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>˙</mml:mo>
</mml:mover>
<mml:mo>=</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo></mml:mo>
<mml:mo mathvariant="italic">cos</mml:mo>
<mml:mi>θ</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>˙</mml:mo>
</mml:mover>
<mml:mo>=</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo></mml:mo>
<mml:mo mathvariant="italic">sin</mml:mo>
<mml:mi>θ</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>θ</mml:mi>
<mml:mo>˙</mml:mo>
</mml:mover>
<mml:mo>=</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo></mml:mo>
<mml:mo mathvariant="italic">tan</mml:mo>
<mml:mi>δ</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
</disp-formula>
where O ≡ (x,y) is the midpoint of the rear wheel axle,
<italic>x</italic>
and
<italic>y</italic>
represent the position in Cartesian coordinates of O,
<italic>θ</italic>
is the orientation of the vehicle with respect to the positive X-semiaxis,
<italic>δ</italic>
is the steering angle of the front wheels with reference to the vehicle's forward direction, and L is the length from O to the center of the front axle,
<italic>i.e.</italic>
, the distance between both axles.
<xref rid="f4-sensors-13-15307" ref-type="fig">Figure 4</xref>
shows a schematic of the system and the variables.</p>
</sec>
<sec>
<label>1.4.</label>
<title>The Kalman Filter</title>
<p>The Kalman filter is an efficient, recursive, mathematical algorithm that processes, at each step, inaccurate observation input data and generates a statistically optimal estimate of the subjacent real system state, by employing a prediction model and an observation model [
<xref rid="b20-sensors-13-15307" ref-type="bibr">20</xref>
].</p>
<p>The basic functioning of the filter is conceptualized into two stages. The first stage is called the prediction stage, as it produces an
<italic>a priori</italic>
system state estimate from the previous state, by using a system evolution prediction model. The second stage, known as the update stage, takes into account measurements in the system to produce an
<italic>a posteriori</italic>
state estimate, by correcting the previous
<italic>a priori</italic>
estimate. This two-stage process starts with an initial estimated state,
<inline-formula>
<mml:math id="mm3">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mn>0</mml:mn>
<mml:mo></mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
, and is repeated in a loop recursively until filtering ends (
<xref rid="f5-sensors-13-15307" ref-type="fig">Figure 5</xref>
).</p>
<p>
<xref rid="f5-sensors-13-15307" ref-type="fig">Figure 5</xref>
summarizes the steps in each stage of the Kalman filtering process and it presents the matrices that are involved and the steps followed to implement the Kalman filter [
<xref rid="b20-sensors-13-15307" ref-type="bibr">20</xref>
,
<xref rid="b21-sensors-13-15307" ref-type="bibr">21</xref>
].
<bold>
<italic>F</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
is the state transition model matrix, which performs the prediction model.
<bold>
<italic>H</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
is the observation model matrix, which maps the state vector space into the measurements vector space.
<inline-formula>
<mml:math id="mm4">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
is the
<italic>a priori</italic>
state estimate vector, resulting from the prediction stage.
<inline-formula>
<mml:math id="mm5">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
is the
<italic>a posteriori</italic>
state estimate vector, derived from the measurements update stage.
<bold>
<italic>z</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
is the measurements vector obtained from the system sensors.
<bold>
<italic>K</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
is the optimal Kalman gain matrix, which weights the importance of the innovation that introduces the measurements vector
<italic>z
<sub>k</sub>
</italic>
in the update stage.
<inline-formula>
<mml:math id="mm6">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
is the
<italic>a priori</italic>
state covariance matrix, which provides the
<italic>a priori</italic>
estimation error covariance after the prediction stage.
<inline-formula>
<mml:math id="mm7">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
is the
<italic>a posteriori</italic>
state covariance matrix, containing the
<italic>a posteriori</italic>
estimation error covariance, given after the update stage.
<bold>
<italic>Q</italic>
</bold>
is the process noise covariance matrix of the prediction stage noise, which somehow ponders the weight of the process estimates.
<bold>
<italic>R</italic>
</bold>
is the observation noise covariance matrix of the update stage noise, which in a way ponders the degree of confidence in each one of the measurements. The relative weights become greater as the covariance matrix elements become smaller, meaning that the quantities involved are increasingly reliable.</p>
</sec>
<sec>
<label>1.5.</label>
<title>The Tuning of the Kalman Filter</title>
<p>Kalman filter tuning consists of setting the relevant parameter values for the related noise covariance matrices
<bold>
<italic>Q</italic>
</bold>
,
<bold>
<italic>R</italic>
</bold>
, and
<inline-formula>
<mml:math id="mm8">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mn>0</mml:mn>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
[
<xref rid="b22-sensors-13-15307" ref-type="bibr">22</xref>
]. Matrices
<bold>
<italic>Q</italic>
</bold>
,
<bold>
<italic>R</italic>
</bold>
,
<inline-formula>
<mml:math id="mm9">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
, and
<inline-formula>
<mml:math id="mm10">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
reflect, respectively, the certainty or accuracy of the prediction model, the measurement model, the
<italic>a priori</italic>
prediction, and the
<italic>a posteriori</italic>
correction. The Kalman filter uses these matrices to weight the relevance and degree of confidence in predictions and measurements. The Kalman filter assumes that the involved noise characteristics have a zero-mean multivariate Gaussian distribution with covariance matrices
<bold>
<italic>Q</italic>
</bold>
and
<bold>
<italic>R</italic>
</bold>
for the process and measurements noises, respectively. Process noise is the random vector affecting the state
<bold>
<italic>x</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
, meanwhile measurement noise is the random vector affecting the measurements vector
<bold>
<italic>x</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
. Typically
<bold>
<italic>Q</italic>
</bold>
and
<bold>
<italic>R</italic>
</bold>
values must be estimated, in order to achieve statistically optimal filtering results. A covariance matrix contains the variance and cross-covariance information between each pair of elements of a random vector. In a general case, given a random vector,
<italic>Y</italic>
=[
<italic>Y</italic>
<sub>1</sub>
<italic>Y</italic>
<sub>2</sub>
<italic>Y
<sub>n</sub>
</italic>
]
<italic>
<sup>T</sup>
</italic>
, its covariance matrix is expressed as:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm11">
<mml:mrow>
<mml:mi mathvariant="normal">Σ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>[</mml:mo>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Σ</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mo></mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Σ</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>n</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo></mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mo></mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mo></mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Σ</mml:mi>
<mml:mrow>
<mml:mtext>n</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mo></mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Σ</mml:mi>
<mml:mrow>
<mml:mtext>n</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mtext>n</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>]</mml:mo>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
where Σ
<sub>i,j</sub>
=cov(
<italic>Y
<sub>i</sub>
</italic>
,
<italic>Y
<sub>j</sub>
</italic>
)=
<italic>E</italic>
[(
<italic>Y
<sub>i</sub>
</italic>
<italic>η
<sub>i</sub>
</italic>
), (
<italic>Y
<sub>j</sub>
</italic>
<italic>η
<sub>i</sub>
</italic>
),
<italic>η
<sub>i</sub>
</italic>
=
<italic>E</italic>
[
<italic>Y
<sub>i</sub>
</italic>
], and
<italic>E</italic>
[·] denotes the expectation operator [
<xref rid="b23-sensors-13-15307" ref-type="bibr">23</xref>
].</p>
<p>There are two main approaches to address the filter tuning: static and dynamic. Static tuning approaches only tune the filter just before its use. Static procedures are based on techniques such as the Autocovariance Least Squares (ALS) method [
<xref rid="b24-sensors-13-15307" ref-type="bibr">24</xref>
], performance-convergence cost functions [
<xref rid="b25-sensors-13-15307" ref-type="bibr">25</xref>
], and general numerical optimization methods [
<xref rid="b26-sensors-13-15307" ref-type="bibr">26</xref>
]. On the other hand, dynamic or adaptive tuning approaches tune the filter while it is operating, thus providing a self-tuning capability. Dynamic tuning methods are based on techniques such as Fuzzy Logic (FL) [
<xref rid="b27-sensors-13-15307" ref-type="bibr">27</xref>
], Artificial Neural Networks (ANN) [
<xref rid="b28-sensors-13-15307" ref-type="bibr">28</xref>
], Reinforcement Learning (RL) [
<xref rid="b29-sensors-13-15307" ref-type="bibr">29</xref>
], the Dynamic Error System Analysis (DESA) method [
<xref rid="b30-sensors-13-15307" ref-type="bibr">30</xref>
], and Genetic Algorithms (GA) [
<xref rid="b31-sensors-13-15307" ref-type="bibr">31</xref>
,
<xref rid="b32-sensors-13-15307" ref-type="bibr">32</xref>
]. Adaptive methods tend to yield a more robust behavior in cases such as those where noise characteristics change in time.</p>
</sec>
</sec>
<sec sec-type="methods">
<label>2.</label>
<title>Method</title>
<p>This section comprises the work carried out in this survey. Section 2.1 outlines the particularization of the Kalman filter along with the prediction model that is employed. Section 2.2 deals with the method employed to tune the filter, in order to achieve a suitable performance with artificial data. Section 2.3 explains the experimental system employed in real field tests, to check the behavior of the proposed system.</p>
<sec>
<label>2.1.</label>
<title>Kalman Filter Particularization in Tractor Guidance</title>
<p>The system presented in this study uses a particularization of the Kalman filter applied to GPS receiver data, in order to achieve path smoothing and partial restoration of the lost resolution in positioning data. The prediction model of this system is based on the tricycle kinematic model, seen in
<xref rid="FD2" ref-type="disp-formula">Equation (2)</xref>
, assuming that the vehicle speed and heading angle will change slowly. Additionally, the system also makes use of the measurements provided by a GPS receiver to update the predictions previously made.</p>
<p>The system takes the array of GPS measurements
<bold>z</bold>
<italic>
<sub>k</sub>
</italic>
(
<italic>x
<sub>GPS</sub>
</italic>
,
<italic>Y
<sub>GPS</sub>
</italic>
,
<italic>θ
<sub>GPS</sub>
</italic>
,
<italic>u
<sub>GPS</sub>
</italic>
)
<italic>
<sup>T</sup>
</italic>
, as input variables, where
<italic>x
<sub>GPS</sub>
</italic>
is the position in the X-axis,
<italic>y
<sub>GPS</sub>
</italic>
is the position in the Y-axis,
<italic>θ
<sub>GPS</sub>
</italic>
is the measured heading angle formed by the tractor heading and the positive X-semiaxis, and
<italic>u
<sub>GPS</sub>
</italic>
is the speed modulus of the tractor. Given these inputs,
<bold>
<italic>z</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
, to the system, a related system state-vector is defined as
<bold>
<italic>x</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
= (
<italic>x
<sub>k</sub>
</italic>
,
<italic>y
<sub>k</sub>
</italic>
,
<italic>θ
<sub>k</sub>
</italic>
,
<italic>u
<sub>k</sub>
</italic>
)
<italic>
<sup>T</sup>
</italic>
, which will be estimated by the Kalman filter.
<xref rid="f6-sensors-13-15307" ref-type="fig">Figure 6</xref>
shows a black box diagram of this particular Kalman filter implementation.</p>
<p>Based on the system state,
<bold>
<italic>x</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
, along with
<xref rid="FD2" ref-type="disp-formula">Equation (2)</xref>
, a prediction model is applied, which supposes that vehicle heading angle (
<italic>θ</italic>
) and speed (
<italic>u</italic>
) will change slowly. The
<italic>a priori</italic>
state estimate is obtained from the previous
<italic>a posteriori</italic>
state estimate as:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm12">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo></mml:mo>
<mml:mo>cos</mml:mo>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="mm13">
<mml:mrow>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo></mml:mo>
<mml:mo>sin</mml:mo>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="mm14">
<mml:mrow>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="FD7">
<label>(7)</label>
<mml:math id="mm15">
<mml:mrow>
<mml:msubsup>
<mml:mi>u</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
where the subscript
<italic>k</italic>
denotes the discrete epoch at which the calculations are computed,
<italic>ΔT</italic>
denotes the time lapse between the reception of two successive position data vectors, and the
<italic>a priori</italic>
and
<italic>a posteriori</italic>
state estimates are denoted, respectively, by a minus or a plus sign in superscript. Each of these discrete times matches the sampling time when the GPS receiver emits a new positioning sentence.</p>
<p>Labeling the a priori state estimate vector as
<inline-formula>
<mml:math id="mm16">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>u</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
and the a posteriori state estimate vector as
<inline-formula>
<mml:math id="mm17">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>u</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
,
<xref rid="FD4" ref-type="disp-formula">Equations (4)</xref>
<xref rid="FD7" ref-type="disp-formula">(7)</xref>
are rewritten into the matrix form of the Kalman filter as:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math id="mm18">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
where,
<bold>
<italic>F</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
denotes the prediction matrix:
<disp-formula id="FD9">
<label>(9)</label>
<mml:math id="mm19">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>[</mml:mo>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo></mml:mo>
<mml:mo>cos</mml:mo>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo></mml:mo>
<mml:mo>sin</mml:mo>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>It may be seen from
<xref rid="FD9" ref-type="disp-formula">Equation (9)</xref>
that the prediction matrix has to be updated at every step, since the variable
<inline-formula>
<mml:math id="mm20">
<mml:mrow>
<mml:msubsup>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
can change within each iteration, and the prediction matrix
<bold>
<italic>F</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
depends on it in a non-linear way, which is not accounted for in the
<bold>
<italic>F</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
matrix.</p>
<p>It is necessary to define the observation model matrix,
<bold>
<italic>H</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
, in
<xref rid="FD10" ref-type="disp-formula">Equation (10)</xref>
, for the complete characterization of the proposed Kalman filter instance:
<disp-formula id="FD10">
<label>(10)</label>
<mml:math id="mm21">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo></mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo></mml:mo>
</mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>As the system state vector and measured magnitudes perfectly match, the particular observation model matrix
<bold>
<italic>H</italic>
</bold>
<italic>
<sub>k</sub>
</italic>
is chosen as the identity matrix in
<xref rid="FD11" ref-type="disp-formula">Equation (11)</xref>
:
<disp-formula id="FD11">
<label>(11)</label>
<mml:math id="mm22">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
where
<bold>
<italic>I</italic>
</bold>
<sub>4</sub>
denotes the identity matrix of size 4 × 4.</p>
</sec>
<sec>
<label>2.2.</label>
<title>Procedures</title>
<p>The Kalman filter was particularized for tractor guidance as detailed in Section 2.1, and the
<bold>
<italic>F</italic>
</bold>
and
<bold>
<italic>H</italic>
</bold>
system model matrices were obtained. Assuming statistical independence between all state variables, and assuming that the covariance matrices are time-invariant, the
<bold>
<italic>Q</italic>
</bold>
and
<bold>
<italic>R</italic>
</bold>
covariance matrices can be represented as
<xref rid="FD12" ref-type="disp-formula">Equation (12)</xref>
:
<disp-formula id="FD12">
<label>(12)</label>
<mml:math id="mm23">
<mml:mrow>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mspace width="0.2em"></mml:mspace>
<mml:mi mathvariant="bold-italic">R</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>The Kalman filter was tuned using Monte Carlo Sampling techniques [
<xref rid="b33-sensors-13-15307" ref-type="bibr">33</xref>
], by repeating the following two steps two million times. Initially, the elements of covariance matrices
<bold>
<italic>Q</italic>
</bold>
and
<bold>
<italic>R</italic>
</bold>
were randomly chosen between 0 and 6. Secondly, the particularized Kalman filter, using these covariance matrices, was applied over the 18 straight lines in
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7a</xref>
, and then the Root Mean Square Error (RMSE) was computed, following
<xref rid="FD13" ref-type="disp-formula">Equation (13)</xref>
, over all straight lines, in which
<bold>
<italic>N</italic>
</bold>
is the number of samples,
<italic>
<bold></bold>
<sub>i</sub>
</italic>
the
<italic>i-th</italic>
estimate of the X axis position,
<italic>
<bold>ŷ</bold>
<sub>i</sub>
</italic>
the
<italic>i-th</italic>
estimate of the Y axis position, and
<bold>
<italic>x</italic>
</bold>
and
<bold>
<italic>y</italic>
</bold>
are the ideal position reference coordinates. The couple of matrices with the lowest Root Mean Square Error were taken as covariance matrices
<bold>
<italic>Q</italic>
</bold>
and
<bold>
<italic>R</italic>
</bold>
.
<xref rid="f8-sensors-13-15307" ref-type="fig">Figure 8</xref>
and
<xref rid="FD13" ref-type="disp-formula">Equation (13)</xref>
detail the Root Mean Square Error (RMSE) computing procedure.</p>
<p>
<disp-formula id="FD13">
<label>(13)</label>
<mml:math id="mm24">
<mml:mrow>
<mml:mtext mathvariant="bold-italic">RMSE</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mi mathvariant="bold-italic">N</mml:mi>
</mml:mfrac>
<mml:munderover>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">N</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo></mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo></mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
</mml:msqrt>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mi mathvariant="bold-italic">N</mml:mi>
</mml:mfrac>
<mml:munderover>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">N</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">distance</mml:mtext>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>The proposed Kalman filter performance was evaluated with artificial data, through the following steps (
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7b</xref>
): (i) a set of 18 ideal straight trajectories (
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7a</xref>
) were sampled at a 5 Hz update rate, following vehicle kinematics constraints, at a constant speed of 5 km/h, which is a typical speed for agricultural tasks; (ii) trajectories were quantized to a 14 × 18 cm grid, because in Valladolid, Spain, when low-cost GPS receivers that provide eight digits for latitude and nine for longitude in NMEA are employed, positions appears over this grid; (iii) the proposed Kalman filter model was applied to the quantized paths; and (iv) the performance improvements were evaluated in terms of distance with respect the ideal path using all the paths shown in
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7a</xref>
, and in terms of course angle distribution by using a 60° heading angle straight path.</p>
<p>Finally, the proposed Kalman filter performance was evaluated with real GPS data by following the next steps (
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7b</xref>
): (i) GPS receiver data were acquired at a 5 Hz update rate from a GPS placed on a tractor that traveled along straight path with a 60° heading angle, and the GPS positions were converted to UTM coordinates; (ii) the proposed Kalman filter was applied to the acquired data; and (iii) the performance achievements in course angle distribution were evaluated. All the required simulations and data processing were carried out in MATLAB
<sup>®</sup>
programming environment.</p>
</sec>
<sec>
<label>2.3.</label>
<title>Experimental System</title>
<p>The materials employed in the experimental tests of this article were: a low-cost GPS receiver, a precise GPS receiver, a laptop computer, and an agricultural tractor. The low-cost GPS receiver was a
<italic>Navilock NL-402U</italic>
with an
<italic>U-blox LEA-5H</italic>
chipset (
<xref rid="f9-sensors-13-15307" ref-type="fig">Figure 9b</xref>
), and it was employed to acquire the GPS trajectories to be processed in this article at a 5 Hz rate. A precise
<italic>Trimble R4</italic>
GPS receiver, configured to use RTK corrections, was employed to position the stakes that were used to mark the paths in the plot (
<xref rid="f9-sensors-13-15307" ref-type="fig">Figure 9a</xref>
). The laptop was a
<italic>Lenovo N3000</italic>
(
<xref rid="f9-sensors-13-15307" ref-type="fig">Figure 9c</xref>
) and it was used to acquire and store the trajectories from the low-cost GPS receiver. The agricultural tractor was a
<italic>Kubota M6950DT</italic>
(
<xref rid="f9-sensors-13-15307" ref-type="fig">Figure 9a</xref>
), and it was employed to perform the trajectories with the low-cost GPS receiver over its cab (
<xref rid="f9-sensors-13-15307" ref-type="fig">Figure 9b</xref>
).</p>
<p>Each one of the straight trajectories of the experimental tests was marked with three stakes and were joined by a cord. The stakes were driven into the center of the trajectory and at each extreme.
<xref rid="f9-sensors-13-15307" ref-type="fig">Figure 9a</xref>
shows one of the trajectories and one stake.</p>
<p>GPS receiver data were read and processed with an application running on the laptop. The application, developed using
<italic>Labwindows</italic>
CVI, read the NMEA sentences from the GPS receiver and transformed the geodetic data of the NMEA sentences to UTM Cartesian coordinates for analysis.</p>
</sec>
</sec>
<sec sec-type="results">
<label>3.</label>
<title>Results</title>
<p>The tuning results, following the method presented in Section 2.2, were obtained using: (i) the artificially generated paths (
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7a</xref>
) with a constant speed of 5 km/h; (ii) a 14 × 18 cm resolution quantization grid; (iii) an update rate of 5 Hz; (iv) the Kalman filtering model proposed in Section 2.1; and (
<italic>v</italic>
) the Root Mean Square Error minimizing criterion, defined in Section 2.2. The process noise covariance matrix, the measurements noise covariance matrix, and the
<italic>a posteriori</italic>
state covariance matrix were as follows:
<disp-formula id="FD14">
<label>(14)</label>
<mml:math id="mm25">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mo mathvariant="bold">=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">0.23</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">0.26</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">0.01</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">1.05</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">R</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">1.51</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">5.58</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">1.95</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">1.68</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>+</mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">3.7</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">6.4</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">3.7</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">6.7</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>These matrices,
<xref rid="FD14" ref-type="disp-formula">Equation (14)</xref>
, resulting from Kalman filter tuning, were used for both the simulations with artificial data and the real experimental data obtained from the onboard GPS receiver.</p>
<p>Simulations and real tests were executed to evaluate the Kalman filter performance. As
<xref rid="f10-sensors-13-15307" ref-type="fig">Figure 10</xref>
visually illustrates, significant trajectory smoothing and resolution restoration achievements were accomplished in both situations, and no delays are noticed in either simulations or real tests. The achievements are shown along a selected path with a 60° heading angle, for both an artificially generated straight line path and onboard GPS receiver real data.</p>
<p>The properties and improvements of this proposed method are shown with the distance errors histogram (
<xref rid="f11-sensors-13-15307" ref-type="fig">Figure 11</xref>
), the RMSE and the 95
<italic>th</italic>
-percentile of the distance errors (
<xref rid="t1-sensors-13-15307" ref-type="table">Table 1</xref>
), and the heading angle histogram (
<xref rid="f12-sensors-13-15307" ref-type="fig">Figure 12</xref>
).</p>
<p>
<xref rid="f11-sensors-13-15307" ref-type="fig">Figure 11</xref>
presents the distance error histogram with regard to real reference positions, before and after filtering. These histograms were generated with the data from all the paths in
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7a</xref>
. It is observed that, before applying the proposed Kalman filter, there are distance errors of up to 10 cm whereas, after applying the Kalman filter, the distance errors go no higher than 6 cm (
<xref rid="f11-sensors-13-15307" ref-type="fig">Figure 11</xref>
).</p>
<p>The RMSE and the 95
<italic>th</italic>
-percentile were computed, on the basis of the statistical distribution of the distance errors, as shown in
<xref rid="f11-sensors-13-15307" ref-type="fig">Figure 11</xref>
. These measurements can be employed to quantify the error improvement achieved by the proposed filtering.
<xref rid="t1-sensors-13-15307" ref-type="table">Table 1</xref>
refers to the RMSE of the quantization error, which was reduced by 42.98%.</p>
<p>Another illustrative graph, showing the behavior of the filtering along straight lines, is the heading angle histogram. As
<xref rid="f12-sensors-13-15307" ref-type="fig">Figure 12</xref>
shows, the proposed Kalman filter meaningfully reduced the spread from the real heading angle.</p>
<p>The standard deviation and the 95
<italic>th</italic>
-percentile range, computed from the heading angle histogram in
<xref rid="f12-sensors-13-15307" ref-type="fig">Figure 12</xref>
, are shown in
<xref rid="t2-sensors-13-15307" ref-type="table">Table 2</xref>
, in which the standard deviation was reduced by 73.62% in the simulations with artificial data.</p>
<p>Another heading angle histogram was also computed, this time with experimental data acquired from a low-cost
<italic>Navilock NL-402U</italic>
GPS receiver (
<xref rid="f13-sensors-13-15307" ref-type="fig">Figure 13</xref>
). As with simulations, the filtering also avoided great changes of heading angle, thus achieving a smoother path.</p>
<p>The standard deviation and the 95
<italic>th</italic>
-percentile range, computed from the heading angle histogram in
<xref rid="f13-sensors-13-15307" ref-type="fig">Figure 13</xref>
, are shown in
<xref rid="t3-sensors-13-15307" ref-type="table">Table 3</xref>
. As this table shows, the standard deviation was also reduced by around 75.04% in the real field tests.</p>
</sec>
<sec sec-type="discussion">
<label>4.</label>
<title>Discussion</title>
<p>The main finding of the present study is that implementation of the Kalman filter can reduce the quantization errors in the positioning of tractors equipped with some low-cost GPS receivers by 43%. Moreover, it reduces by 75% the standard deviation of the heading angle.</p>
<p>Several studies have shown that GPS accuracy can range from 1–2 cm to 100 m [
<xref rid="b34-sensors-13-15307" ref-type="bibr">34</xref>
<xref rid="b36-sensors-13-15307" ref-type="bibr">36</xref>
] depending on the kind of GPS receiver and of the type of corrections employed. For low-cost GPS receivers using Wide Area Augmentation System (WAAS) or European Geostationary Navigation Overlay Service (EGNOS) corrections, position accuracy of 95% time can be less than 3 m [
<xref rid="b37-sensors-13-15307" ref-type="bibr">37</xref>
<xref rid="b39-sensors-13-15307" ref-type="bibr">39</xref>
]. In contrast, relative accuracy or pass-to-pass accuracy [
<xref rid="b10-sensors-13-15307" ref-type="bibr">10</xref>
] is the really important variable for multiple agricultural applications. In experimental tests, Alonso-Garcia
<italic>et al.</italic>
[
<xref rid="b40-sensors-13-15307" ref-type="bibr">40</xref>
] found that this relative accuracy can be reduced to approximately 1 m over short time periods of about 15 min, when using low-cost GPS receivers. This relative accuracy could be enough for agricultural applications with wide working widths, such as fertilizing applications. In fact, some companies, such as
<italic>Agroguia</italic>
<sup>®</sup>
[
<xref rid="b7-sensors-13-15307" ref-type="bibr">7</xref>
] and
<italic>Tractordrive</italic>
<sup>®</sup>
[
<xref rid="b12-sensors-13-15307" ref-type="bibr">12</xref>
] in Spain, sell tractor GPS guidance assistance systems equipped with low-cost GPS receivers.</p>
<p>In a previous study, this research team has proposed a way of improving the precision of GPS tractor positioning [
<xref rid="b41-sensors-13-15307" ref-type="bibr">41</xref>
]. Moreover, the authors have acquired expertise in their work on tractor GPS guidance systems with two Spanish companies:
<italic>Agroguia</italic>
<sup>®</sup>
[
<xref rid="b7-sensors-13-15307" ref-type="bibr">7</xref>
] and
<italic>Tractordrive</italic>
<sup>®</sup>
[
<xref rid="b12-sensors-13-15307" ref-type="bibr">12</xref>
]. In their experience, the GPS receivers with the best price-precision ratios for agricultural tasks, on the market from 2008–2013, were low-cost GPS receivers equipped with
<italic>Sirf IV</italic>
and
<italic>U-blox 4</italic>
chipsets. Nevertheless, GPS receivers equipped with these chipsets offer geodetic latitude and longitude with only 8 and 9 digits, respectively. When these coordinates are converted to Cartesian coordinates by the GPS guidance system, the positions fit in a quantization grid, the dimensions of which vary in accordance with the point on the terrestrial surface. In Valladolid, Spain, the grid is about 14 and 18 cm, on the X and the Y axes, respectively. Tractor guidance systems that employ positions within this grid suffer from oscillations in the representation of the tractor trajectory. Besides, the GPS data with heading oscillation complicate the steering of the tractor. The proposed Kalman filter is especially useful for tractor guidance assistance systems equipped with GPS receivers that have
<italic>Sirf IV</italic>
and
<italic>U-blox 4</italic>
chipsets. It smooths the quantized sharp trajectory and provides more accurate heading information, closer to the real data, thereby facilitating the steering of the tractor.</p>
<p>Tractors usually move over rough surfaces, and then, although a tractor goes along a straight trajectory, the GPS receiver will acquire a sharp trajectory. This is due to the lateral vibrations experienced by the GPS receiver, which is placed over the tractor cab, two or three meters above-ground. At this position, the vertical displacement of the tractor wheels is converted into lateral vibrations. As a numerical example, a typical 10 cm vertical displacement of one rear wheel of the tractor can lead to a lateral displacement of the GPS receiver of up to 30 cm. Our implementation of the Kalman filter will be useful in these situations, because it will smooth the sharp trajectory due to vibrations and will provide more accurate heading information, close to the real data. Similar studies to remove noise from GPS data have been presented in the literature [
<xref rid="b42-sensors-13-15307" ref-type="bibr">42</xref>
]. The main difference of our article and the one proposed by Han
<italic>et al.</italic>
[
<xref rid="b42-sensors-13-15307" ref-type="bibr">42</xref>
] is the Kalman filter tuning mode; Han
<italic>et al.</italic>
tuned it by trial and error whereas we applied
<italic>Monte Carlo</italic>
techniques to eighteen trajectories to obtain the covariance matrices that produce the lowest Root Mean Square Error.</p>
<p>Overall, our data suggest that the proposed filter is adequate for data preprocessing of some low-cost GPS receivers, when used in GPS assisted-guidance systems for tractors. It also could be useful to smooth the GPS trajectories that are sharpened due to the tractor moving over rough terrain.</p>
<p>One limitation of this study is that the proposed Kalman filter reduces the quantization error in GPS receivers that provide geodetic latitude and longitude with eight and nine digits, but, in GPS receivers that provide more digits, the reduction in the quantization error does not exist or is negligible. Microelectronics technology progresses quickly. Hopefully, in a few years all GPS receivers in the market, high end and low cost, will be equipped with chipsets that provide positioning data with enough digits, so that the quantization effects are negligible. Nevertheless, today, our proposed Kalman filter is at present useful for processing the data of some low-cost GPS receivers. Moreover, in the future the filter will be useful for the preprocessing of GPS trajectories on tractors moving over rough surfaces. A second drawback of our proposed Kalman filter is that, besides smoothing errors, as a side effect real deviations are also smoothed. This effect could be negative in some systems, as for example the used in GPS assisted guidance of tractors.</p>
<p>Further studies could be conducted. A more detailed quantitative analysis about inherent delays of the proposed system, both along both straight and curve paths, could be addressed. Besides, because most low-cost GPS receivers provide positioning information at 1 Hz rate, simple modifications to the Kalman filter proposed in this paper could be employed to increase the positioning rate. Modifications could also be used to fuse the data from low-cost GPS receivers with local positioning systems as gyroscopes and compasses employing, for example,
<italic>Arduino</italic>
<sup>®</sup>
or
<italic>Raspberry Pi</italic>
<sup>®</sup>
boards. Since nowadays most modern smartphones also include gyroscopes and compasses, it will be possible to deploy this system using a smartphone that fuses the data from its own sensors.</p>
</sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>In summary, certain low-cost GPS receivers, such as those equipped with
<italic>Sirf IV</italic>
and
<italic>U-blox 4</italic>
chipsets, offer positioning information by using NMEA with eight digits for geodetic latitude and nine for longitude. When these geodetic coordinates are converted into Cartesian coordinates, the positions fit in a quantization grid. The dimensions of the quantization grid vary for each point on the terrestrial surface and usually range some decimeters in size. The Kalman filter implementation in this study, applied to data from these low-cost GPS receivers, has reduced the quantization errors by 43% and the standard deviation of the heading by 75%, without introducing positioning delays. On the basis of our data, we consider that use of the filter improves the precision of low-cost GPS receivers in some agricultural tasks, such as GPS assisted-guidance of tractors. It also could be useful to smooth tractor GPS trajectories that are sharpened when the tractor moves over rough terrain.</p>
</sec>
</body>
<back>
<notes>
<title>Conflicts of Interest</title>
<p>The authors declare no conflict of interest.</p>
</notes>
<ref-list>
<title>References</title>
<ref id="b1-sensors-13-15307">
<label>1.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Slaughter</surname>
<given-names>D.C.</given-names>
</name>
<name>
<surname>Giles</surname>
<given-names>D.K.</given-names>
</name>
<name>
<surname>Downey</surname>
<given-names>D.</given-names>
</name>
</person-group>
<article-title>Autonomous robotic weed control systems: A review</article-title>
<source>Comput. Electron. Agric.</source>
<year>2008</year>
<volume>61</volume>
<fpage>63</fpage>
<lpage>78</lpage>
</element-citation>
</ref>
<ref id="b2-sensors-13-15307">
<label>2.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>N.</given-names>
</name>
</person-group>
<article-title>Precision agriculture—a worldwide overview</article-title>
<source>Comput. Electron. Agric.</source>
<year>2002</year>
<volume>36</volume>
<fpage>113</fpage>
<lpage>132</lpage>
</element-citation>
</ref>
<ref id="b3-sensors-13-15307">
<label>3.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Auernhammer</surname>
<given-names>H.</given-names>
</name>
</person-group>
<article-title>Precision farming—the environmental challenge</article-title>
<source>Comput. Electron. Agric.</source>
<year>2001</year>
<volume>30</volume>
<fpage>31</fpage>
<lpage>43</lpage>
</element-citation>
</ref>
<ref id="b4-sensors-13-15307">
<label>4.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Keicher</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Seufert</surname>
<given-names>H.</given-names>
</name>
</person-group>
<article-title>Automatic guidance for agricultural vehicles in Europe</article-title>
<source>Comput. Electron. Agric.</source>
<year>2000</year>
<volume>25</volume>
<fpage>169</fpage>
<lpage>194</lpage>
</element-citation>
</ref>
<ref id="b5-sensors-13-15307">
<label>5.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Imou</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Wakabayashi</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Yokoyama</surname>
<given-names>S.</given-names>
</name>
</person-group>
<article-title>Review of research on agricultural vehicle autonomous guidance</article-title>
<source>Int. J. Agric. Biol. Eng.</source>
<year>2009</year>
<volume>2</volume>
<fpage>1</fpage>
<lpage>16</lpage>
</element-citation>
</ref>
<ref id="b6-sensors-13-15307">
<label>6.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Holden</surname>
<given-names>N.M.</given-names>
</name>
<name>
<surname>Comparetti</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ward</surname>
<given-names>S.M.</given-names>
</name>
<name>
<surname>McGovern</surname>
<given-names>E.A.</given-names>
</name>
</person-group>
<article-title>Accuracy assessment and position correction for low-cost non-differential GPS as applied on an industrial peat bog</article-title>
<source>Comput. Electron. Agric.</source>
<year>1999</year>
<volume>24</volume>
<fpage>119</fpage>
<lpage>130</lpage>
</element-citation>
</ref>
<ref id="b7-sensors-13-15307">
<label>7.</label>
<element-citation publication-type="webpage">
<article-title>Agroguia</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.agroguia.es">http://www.agroguia.es</ext-link>
</comment>
<date-in-citation>(accessed on 16 August 2012)</date-in-citation>
</element-citation>
</ref>
<ref id="b8-sensors-13-15307">
<label>8.</label>
<element-citation publication-type="webpage">
<article-title>Tractordrive</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.tractordrive.es">http://www.tractordrive.es</ext-link>
</comment>
<date-in-citation>(accessed on 16 August 2012)</date-in-citation>
</element-citation>
</ref>
<ref id="b9-sensors-13-15307">
<label>9.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>August</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Michaud</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Lavash</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Smith</surname>
<given-names>C.</given-names>
</name>
</person-group>
<article-title>GPS for environmental applications: Accuracy and precision of locational data</article-title>
<source>Photogramm. Eng. Remote Sens.</source>
<year>1994</year>
<volume>60</volume>
<fpage>41</fpage>
<lpage>45</lpage>
</element-citation>
</ref>
<ref id="b10-sensors-13-15307">
<label>10.</label>
<element-citation publication-type="webpage">
<article-title>Tractors and Machinery for Agriculture and Forestry—Test Procedures for Positioning and Guidance Systems in Agriculture—Part 1: Dynamic Testing of Satellite-Based Positioning Devices</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="https://www.iso.org/obp/ui/#iso:std:iso:12188:-1:ed-1:v1:en">https://www.iso.org/obp/ui/#iso:std:iso:12188:-1:ed-1:v1:en</ext-link>
</comment>
<date-in-citation>(accessed on 7 November 2013)</date-in-citation>
</element-citation>
</ref>
<ref id="b11-sensors-13-15307">
<label>11.</label>
<element-citation publication-type="webpage">
<article-title>Tractors and Machinery for Agriculture and Forestry—Test Procedures for Positioning and Guidance Systems in Agriculture—Part 2: Testing of Satellite-Based Auto-Guidance Systems during Straight and Level Travel</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="https://www.iso.org/obp/ui/#iso:std:iso:12188:-2:ed-1:v1:en">https://www.iso.org/obp/ui/#iso:std:iso:12188:-2:ed-1:v1:en</ext-link>
</comment>
<date-in-citation>(accessed on 7 November 2013)</date-in-citation>
</element-citation>
</ref>
<ref id="b12-sensors-13-15307">
<label>12.</label>
<element-citation publication-type="webpage">
<article-title>Cambridge Silicon Radio Plc</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.csr.com">http://www.csr.com</ext-link>
</comment>
<date-in-citation>(accessed on 16 August 2012)</date-in-citation>
</element-citation>
</ref>
<ref id="b13-sensors-13-15307">
<label>13.</label>
<element-citation publication-type="webpage">
<article-title>U-Blox</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.u-blox.com">http://www.u-blox.com</ext-link>
</comment>
<date-in-citation>(accessed on 16 August 2012)</date-in-citation>
</element-citation>
</ref>
<ref id="b14-sensors-13-15307">
<label>14.</label>
<element-citation publication-type="webpage">
<article-title>MediaTek Inc.</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.mediatek.com/en">http://www.mediatek.com/en</ext-link>
</comment>
<date-in-citation>(accessed on 16 August 2012)</date-in-citation>
</element-citation>
</ref>
<ref id="b15-sensors-13-15307">
<label>15.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Smith</surname>
<given-names>S.O.</given-names>
</name>
</person-group>
<source>The Universal Grids: Universal Transverse Mercator (UTM) and Universal Polar Sterographic (UPS)</source>
<comment>DMA TM 8358.2</comment>
<publisher-name>Defense Mapping Agency</publisher-name>
<publisher-loc>Washington, DC, USA</publisher-loc>
<year>1989</year>
</element-citation>
</ref>
<ref id="b16-sensors-13-15307">
<label>16.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Snyder</surname>
<given-names>J.P.</given-names>
</name>
</person-group>
<source>Map Projections—A Working Manual</source>
<edition>1st ed.</edition>
<publisher-name>United States Government Printing</publisher-name>
<publisher-loc>Washington, DC, USA</publisher-loc>
<year>1987</year>
<fpage>p. 383</fpage>
</element-citation>
</ref>
<ref id="b17-sensors-13-15307">
<label>17.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Pearson</surname>
<given-names>F.</given-names>
</name>
</person-group>
<source>Map Projections: Theory and Applications</source>
<edition>2nd ed.</edition>
<publisher-name>CRC Press</publisher-name>
<publisher-loc>Boca Raton, FL, USA</publisher-loc>
<year>1990</year>
<fpage>p. 384</fpage>
</element-citation>
</ref>
<ref id="b18-sensors-13-15307">
<label>18.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Grewal</surname>
<given-names>M.S.</given-names>
</name>
<name>
<surname>Weill</surname>
<given-names>L.R.</given-names>
</name>
<name>
<surname>Andrews</surname>
<given-names>A.P.</given-names>
</name>
</person-group>
<article-title>Appendix C: Coordinate Transformations</article-title>
<source>Global Positioning Systems, Inertial Navigation, and Integration</source>
<edition>2nd ed.</edition>
<publisher-name>John Wiley & Sons</publisher-name>
<publisher-loc>Hoboken, NJ, USA</publisher-loc>
<year>2007</year>
<fpage>p. 552</fpage>
</element-citation>
</ref>
<ref id="b19-sensors-13-15307">
<label>19.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Latombe</surname>
<given-names>J.-C.</given-names>
</name>
</person-group>
<source>Robot Motion Planning</source>
<edition>1st ed.</edition>
<publisher-name>Kluwer Academic Publishers</publisher-name>
<publisher-loc>Norwell, MA, USA</publisher-loc>
<year>1991</year>
<fpage>p. 672</fpage>
</element-citation>
</ref>
<ref id="b20-sensors-13-15307">
<label>20.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kalman</surname>
<given-names>R.E.</given-names>
</name>
</person-group>
<article-title>A new approach to linear filtering and prediction problems</article-title>
<source>Trans. ASME</source>
<year>1960</year>
<volume>82</volume>
<fpage>35</fpage>
<lpage>45</lpage>
</element-citation>
</ref>
<ref id="b21-sensors-13-15307">
<label>21.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Brown</surname>
<given-names>R.G.</given-names>
</name>
<name>
<surname>Hwang</surname>
<given-names>P.Y.C.</given-names>
</name>
</person-group>
<article-title>The Discrete Kalman Filter, State-Space Modeling and Simulation</article-title>
<source>Introduction to Random Signals and Applied Kalman Filtering</source>
<edition>3th ed.</edition>
<publisher-name>John Wiley and Sons</publisher-name>
<publisher-loc>Toronto, ON, Canada</publisher-loc>
<year>1997</year>
<fpage>190</fpage>
<lpage>241</lpage>
</element-citation>
</ref>
<ref id="b22-sensors-13-15307">
<label>22.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Zarchan</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Musoff</surname>
<given-names>H.</given-names>
</name>
</person-group>
<source>Fundamentals of Kalman Filtering: A Practical Approach</source>
<edition>2nd ed.</edition>
<publisher-name>AIAA</publisher-name>
<publisher-loc>Alexandria, VA, USA</publisher-loc>
<year>2005</year>
<fpage>p. 664</fpage>
</element-citation>
</ref>
<ref id="b23-sensors-13-15307">
<label>23.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Papoulis</surname>
<given-names>A.</given-names>
</name>
</person-group>
<source>Probability, Random Variables, and Stochastic Processes</source>
<edition>3rd ed.</edition>
<publisher-name>McGraw-Hill</publisher-name>
<publisher-loc>New York, NY, USA</publisher-loc>
<year>1991</year>
<fpage>p. 666</fpage>
</element-citation>
</ref>
<ref id="b24-sensors-13-15307">
<label>24.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Åkesson</surname>
<given-names>B.M.</given-names>
</name>
<name>
<surname>Jørgensen</surname>
<given-names>J.B.</given-names>
</name>
<name>
<surname>Poulsen</surname>
<given-names>N.K.</given-names>
</name>
<name>
<surname>Jørgensen</surname>
<given-names>S.B.</given-names>
</name>
</person-group>
<article-title>A generalized autocovariance least-squares method for Kalman filter tuning</article-title>
<source>J. Process Control</source>
<year>2008</year>
<volume>18</volume>
<fpage>769</fpage>
<lpage>779</lpage>
</element-citation>
</ref>
<ref id="b25-sensors-13-15307">
<label>25.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Saha</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Goswami</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Ghosh</surname>
<given-names>R.</given-names>
</name>
</person-group>
<article-title>Two Novel Costs for Determining the Tuning Parameters of the Kalman Filter</article-title>
<conf-name>Proceedings of Advances in Control and Optimization of Dynamic Systems (ACODS-2012)</conf-name>
<conf-loc>Bangalore, India</conf-loc>
<year>2012</year>
<fpage>1</fpage>
<lpage>8</lpage>
</element-citation>
</ref>
<ref id="b26-sensors-13-15307">
<label>26.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Bodizs</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Srinivasan</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Bonvin</surname>
<given-names>D.</given-names>
</name>
</person-group>
<article-title>Preferential Estimation
<italic>via</italic>
Tuning of the Kalman Filter</article-title>
<conf-name>Proceedings of 7th International Symposium on Dynamics and Control of Process Systems (DYCOPS7)</conf-name>
<conf-loc>Cambridge, MA, USA</conf-loc>
<year>2004</year>
</element-citation>
</ref>
<ref id="b27-sensors-13-15307">
<label>27.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Loebis</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Sutton</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Chudley</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Naeem</surname>
<given-names>W.</given-names>
</name>
</person-group>
<article-title>Adaptive tuning of a Kalman filter
<italic>via</italic>
fuzzy logic for an intelligent AUV navigation system</article-title>
<source>Control Eng. Prac.</source>
<year>2004</year>
<volume>12</volume>
<fpage>1531</fpage>
<lpage>1539</lpage>
</element-citation>
</ref>
<ref id="b28-sensors-13-15307">
<label>28.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Korniyenko</surname>
<given-names>O.V.</given-names>
</name>
<name>
<surname>Sharawi</surname>
<given-names>M.S.</given-names>
</name>
<name>
<surname>Aloi</surname>
<given-names>D.N.</given-names>
</name>
</person-group>
<article-title>Neural Network Based Approach for Tuning Kalman Filter</article-title>
<conf-name>Proceedings of IEEE International Conference on Electro Information Technology</conf-name>
<conf-loc>Lincoln, NE, USA</conf-loc>
<year>2005</year>
<fpage>1</fpage>
<lpage>5</lpage>
</element-citation>
</ref>
<ref id="b29-sensors-13-15307">
<label>29.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Goodall</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>El-Sheimy</surname>
<given-names>N.</given-names>
</name>
</person-group>
<article-title>Intelligent Tuning of a Kalman Filter Using Low-Cost MEMS Inertial Sensors</article-title>
<conf-name>Proceedings of 5th International Symposium on Mobile Mapping Technology (MMT'07)</conf-name>
<conf-loc>Padua, Italy</conf-loc>
<year>2007</year>
<fpage>1</fpage>
<lpage>8</lpage>
</element-citation>
</ref>
<ref id="b30-sensors-13-15307">
<label>30.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ran</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Deng</surname>
<given-names>Z.</given-names>
</name>
</person-group>
<article-title>Self-tuning weighted measurement fusion Kalman filter and its convergence</article-title>
<source>J. Control Theory Appl.</source>
<year>2010</year>
<volume>8</volume>
<fpage>435</fpage>
<lpage>440</lpage>
</element-citation>
</ref>
<ref id="b31-sensors-13-15307">
<label>31.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mosavi</surname>
<given-names>M.R.</given-names>
</name>
<name>
<surname>Sadeghian</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Saeidi</surname>
<given-names>S.</given-names>
</name>
</person-group>
<article-title>Increasing DGPS navigation accuracy using Kalman filter tuned by genetic algorithm</article-title>
<source>Int. J. Comput. Sci. Issues</source>
<year>2011</year>
<volume>8</volume>
<fpage>246</fpage>
<lpage>252</lpage>
</element-citation>
</ref>
<ref id="b32-sensors-13-15307">
<label>32.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Stroud</surname>
<given-names>P.D.</given-names>
</name>
</person-group>
<article-title>Kalman-extended genetic algorithm for search in nonstationary environments with noisy fitness evaluations</article-title>
<source>IEEE Trans. Evol. Comput.</source>
<year>2001</year>
<volume>5</volume>
<fpage>66</fpage>
<lpage>77</lpage>
</element-citation>
</ref>
<ref id="b33-sensors-13-15307">
<label>33.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>J.S.</given-names>
</name>
</person-group>
<source>Monte Carlo Strategies in Scientific Computing</source>
<edition>1st ed.</edition>
<publisher-name>Springer</publisher-name>
<publisher-loc>Cambridge, MA, USA</publisher-loc>
<year>2009</year>
<fpage>p. 344</fpage>
</element-citation>
</ref>
<ref id="b34-sensors-13-15307">
<label>34.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Czajewski</surname>
<given-names>J.</given-names>
</name>
</person-group>
<article-title>The accuracy of the global positioning systems</article-title>
<source>IEEE Instrum. Meas. Mag.</source>
<year>2004</year>
<volume>40</volume>
<fpage>56</fpage>
<lpage>60</lpage>
</element-citation>
</ref>
<ref id="b35-sensors-13-15307">
<label>35.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gan-Mor</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Clark</surname>
<given-names>R.L.</given-names>
</name>
<name>
<surname>Upchurch</surname>
<given-names>B.L.</given-names>
</name>
</person-group>
<article-title>Implement lateral position accuracy under RTK-GPS tractor guidance</article-title>
<source>Comput. Electron. Agric.</source>
<year>2007</year>
<volume>59</volume>
<fpage>31</fpage>
<lpage>38</lpage>
</element-citation>
</ref>
<ref id="b36-sensors-13-15307">
<label>36.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Valbuena</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Mauro</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Rodríguez-Solano</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Manzanera</surname>
<given-names>J.A.</given-names>
</name>
</person-group>
<article-title>Accuracy and precision of GPS receivers under forest canopies in a mountain environment</article-title>
<source>Span. J. Agric. Res.</source>
<year>2010</year>
<volume>8</volume>
<fpage>1047</fpage>
<lpage>1057</lpage>
</element-citation>
</ref>
<ref id="b37-sensors-13-15307">
<label>37.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Peters</surname>
<given-names>R.T.</given-names>
</name>
<name>
<surname>Evett</surname>
<given-names>S.R.</given-names>
</name>
</person-group>
<article-title>Using low cost GPS receivers for determining field position of mechanized irrigation systems</article-title>
<source>Appl. Eng. Agric.</source>
<year>2005</year>
<volume>21</volume>
<fpage>841</fpage>
<lpage>845</lpage>
</element-citation>
</ref>
<ref id="b38-sensors-13-15307">
<label>38.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Witte</surname>
<given-names>T.H.</given-names>
</name>
<name>
<surname>Wilson</surname>
<given-names>A.M.</given-names>
</name>
</person-group>
<article-title>Accuracy of WAAS-enabled GPS for the determination of position and speed over ground</article-title>
<source>J. Biomech.</source>
<year>2005</year>
<volume>38</volume>
<fpage>1717</fpage>
<lpage>1722</lpage>
<pub-id pub-id-type="pmid">15958230</pub-id>
</element-citation>
</ref>
<ref id="b39-sensors-13-15307">
<label>39.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Arnold</surname>
<given-names>L.L.</given-names>
</name>
<name>
<surname>Zandbergen</surname>
<given-names>P.A.</given-names>
</name>
</person-group>
<article-title>Positional accuracy of the wide area augmentation system in consumer-grade GPS units</article-title>
<source>Comput. Geosci.</source>
<year>2011</year>
<volume>37</volume>
<fpage>883</fpage>
<lpage>892</lpage>
</element-citation>
</ref>
<ref id="b40-sensors-13-15307">
<label>40.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Alonso-Garcia</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Gomez-Gil</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Arribas</surname>
<given-names>J.I.</given-names>
</name>
</person-group>
<article-title>Evaluation of the use of low-cost GPS receivers in the autonomous guidance of agricultural tractors</article-title>
<source>Span. J. Agric. Res.</source>
<year>2011</year>
<volume>9</volume>
<fpage>377</fpage>
<lpage>388</lpage>
</element-citation>
</ref>
<ref id="b41-sensors-13-15307">
<label>41.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gomez-Gil</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Alonso-Garcia</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Gomez-Gil</surname>
<given-names>F.J.</given-names>
</name>
<name>
<surname>Stombaugh</surname>
<given-names>T.</given-names>
</name>
</person-group>
<article-title>A simple method to improve autonomous gps positioning for tractors</article-title>
<source>Sensors</source>
<year>2011</year>
<volume>11</volume>
<fpage>5630</fpage>
<lpage>5644</lpage>
<pub-id pub-id-type="pmid">22163917</pub-id>
</element-citation>
</ref>
<ref id="b42-sensors-13-15307">
<label>42.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Noh</surname>
<given-names>H.</given-names>
</name>
</person-group>
<article-title>Kalman filtering of DGPS positions for a parallel tracking application</article-title>
<source>Trans. ASAE</source>
<year>2002</year>
<volume>45</volume>
<fpage>553</fpage>
<lpage>559</lpage>
</element-citation>
</ref>
</ref-list>
</back>
<floats-group>
<fig id="f1-sensors-13-15307" position="float">
<label>Figure 1.</label>
<caption>
<p>Graphic illustration of precision and accuracy concepts.</p>
</caption>
<graphic xlink:href="sensors-13-15307f1"></graphic>
</fig>
<fig id="f2-sensors-13-15307" position="float">
<label>Figure 2.</label>
<caption>
<p>RMC Sentences acquired from two different GPS receivers. The yellow-highlighted numbers represent the latitude and longitude geodetic coordinates. It can be observed that the high end
<italic>Trimble R4</italic>
provides 12 digits for latitude and 13 for longitude while the low-cost
<italic>Navilock NL-402U</italic>
provides only eight digits for latitude and nine for longitude.</p>
</caption>
<graphic xlink:href="sensors-13-15307f2"></graphic>
</fig>
<fig id="f3-sensors-13-15307" position="float">
<label>Figure 3.</label>
<caption>
<p>Illustration of the quantization effect on the positions supplied by a GPS receiver, showing that quantified trajectories register (i) position errors; and (ii) speed errors, as shown by the variable distances between the blue rectangles; and (iii) heading error, which are higher in trajectories nearby, but different from, the direction of any coordinate axis.</p>
</caption>
<graphic xlink:href="sensors-13-15307f3"></graphic>
</fig>
<fig id="f4-sensors-13-15307" position="float">
<label>Figure 4.</label>
<caption>
<p>Tractor schematic and description of variables.</p>
</caption>
<graphic xlink:href="sensors-13-15307f4"></graphic>
</fig>
<fig id="f5-sensors-13-15307" position="float">
<label>Figure 5.</label>
<caption>
<p>Stage diagram of the Kalman filtering loop.</p>
</caption>
<graphic xlink:href="sensors-13-15307f5"></graphic>
</fig>
<fig id="f6-sensors-13-15307" position="float">
<label>Figure 6.</label>
<caption>
<p>Black box diagram of the system implementation.</p>
</caption>
<graphic xlink:href="sensors-13-15307f6"></graphic>
</fig>
<fig id="f7-sensors-13-15307" position="float">
<label>Figure 7.</label>
<caption>
<p>(
<bold>a</bold>
) Paths used in the tuning process and distance performance evaluation; (
<bold>b</bold>
) Flow charts of Kalman filter evaluation with artificial data and with onboard GPS real data.</p>
</caption>
<graphic xlink:href="sensors-13-15307f7"></graphic>
</fig>
<fig id="f8-sensors-13-15307" position="float">
<label>Figure 8.</label>
<caption>
<p>Illustration of the quantization and Kalman filter process conducted over an ideal sample trajectory. The RMSE is defined, according
<xref rid="FD13" ref-type="disp-formula">Equation (13)</xref>
, as the square root of the average of all the distances squared with respect to the real reference path position.</p>
</caption>
<graphic xlink:href="sensors-13-15307f8"></graphic>
</fig>
<fig id="f9-sensors-13-15307" position="float">
<label>Figure 9.</label>
<caption>
<p>(
<bold>a</bold>
) One of the trajectories of the tests with one stake and the cord; (
<bold>b</bold>
) Low-cost GPS receiver placed over the tractor cab; (
<bold>c</bold>
) Laptop inside the tractor cab.</p>
</caption>
<graphic xlink:href="sensors-13-15307f9"></graphic>
</fig>
<fig id="f10-sensors-13-15307" position="float">
<label>Figure 10.</label>
<caption>
<p>Results of positioning improvement at a 5 Hz update rate, constant speed of 5 km/h (3.1 mph) and 60° heading angle along a straight path (
<bold>a</bold>
) in a simulation with artificial data; and (
<bold>b</bold>
) in tests, processing data from a real onboard
<italic>Navilock NL-402U</italic>
GPS receiver. The purple line joins two corresponding points, before and after the filtering, to qualitatively show the negligible magnitude of the delay.</p>
</caption>
<graphic xlink:href="sensors-13-15307f10"></graphic>
</fig>
<fig id="f11-sensors-13-15307" position="float">
<label>Figure 11.</label>
<caption>
<p>Histogram of distance errors, with 5 Hz update rate, using the simulations along the 18 straight lines shown in
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7a</xref>
. (
<bold>a</bold>
) before applying the Kalman filter; (
<bold>b</bold>
) after applying the Kalman filter. The histogram has been normalized so that it has a unitary area, representing an approximation to the probability density function (
<italic>pdf</italic>
) of the distance errors statistical random variable.</p>
</caption>
<graphic xlink:href="sensors-13-15307f11"></graphic>
</fig>
<fig id="f12-sensors-13-15307" position="float">
<label>Figure 12.</label>
<caption>
<p>Heading angle (
<italic>θ</italic>
) histogram, (
<bold>a</bold>
) of the real ideal path; (
<bold>b</bold>
) of the grid-quantized path; and (
<bold>c</bold>
) of the recovered path after applying the proposed Kalman filter. Simulated data were obtained for a straight path with a 60° heading angle and at varying speeds of between 5 and 10 km/h. The histogram has been normalized to have a unitary area, representing an approximation to the probability density function (
<italic>pdf</italic>
) of the heading angle statistical random variable.</p>
</caption>
<graphic xlink:href="sensors-13-15307f12"></graphic>
</fig>
<fig id="f13-sensors-13-15307" position="float">
<label>Figure 13.</label>
<caption>
<p>Heading angle (
<italic>θ</italic>
) histogram (
<bold>a</bold>
) of the estimated reference path; (
<bold>b</bold>
) of the raw GPS data; and (
<bold>c</bold>
) of the filtered data using the proposed Kalman filter. Data were obtained from a real onboard
<italic>Navilock NL-402U</italic>
GPS receiver, along a straight path with a 60° heading angle and at a constant speed of 5 km/h. The histogram has been normalized to have a unitary area, representing an approximation to the probability density function (
<italic>pdf</italic>
) of the heading angle statistical random variable.</p>
</caption>
<graphic xlink:href="sensors-13-15307f13"></graphic>
</fig>
<table-wrap id="t1-sensors-13-15307" position="float">
<label>Table 1.</label>
<caption>
<p>Statistical parameters of the distribution of errors, before and after applying the proposed Kalman filter, along the 18 simulated straight paths (
<xref rid="f7-sensors-13-15307" ref-type="fig">Figure 7a</xref>
).</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle" rowspan="1" colspan="1"></th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Before Filtering</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>After Filtering</bold>
</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center" valign="top" rowspan="1" colspan="1">Distances Root-Mean Square Error (RMSE) (cm)</td>
<td align="center" valign="top" rowspan="1" colspan="1">6.56</td>
<td align="center" valign="top" rowspan="1" colspan="1">3.74</td>
</tr>
<tr>
<td align="center" valign="top" rowspan="1" colspan="1">Distances 95
<italic>th</italic>
-percentile (cm)</td>
<td align="center" valign="top" rowspan="1" colspan="1">8.48</td>
<td align="center" valign="top" rowspan="1" colspan="1">4.31</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="t2-sensors-13-15307" position="float">
<label>Table 2.</label>
<caption>
<p>Statistical parameters of the heading angle distributions, before and after applying the proposed Kalman filter, along a straight path with a 60° heading angle, in simulations with artificial data.</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle" rowspan="1" colspan="1"></th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Before Filtering</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>After Filtering</bold>
</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center" valign="top" rowspan="1" colspan="1">Standard deviation (°)</td>
<td align="center" valign="top" rowspan="1" colspan="1">6.9362</td>
<td align="center" valign="top" rowspan="1" colspan="1">1.8301</td>
</tr>
<tr>
<td align="center" valign="top" rowspan="1" colspan="1">95
<italic>th</italic>
-percentile range (centered on real heading angle) (°)</td>
<td align="center" valign="top" rowspan="1" colspan="1">29.0661</td>
<td align="center" valign="top" rowspan="1" colspan="1">7.2651</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="t3-sensors-13-15307" position="float">
<label>Table 3.</label>
<caption>
<p>Statistical parameters of the heading angle distribution, before and after applying the proposed Kalman filter, along a straight path with a 60° heading angle, in real field tests.</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle" rowspan="1" colspan="1"></th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Before Filtering</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>After Filtering</bold>
</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center" valign="top" rowspan="1" colspan="1">Standard deviation (°)</td>
<td align="center" valign="top" rowspan="1" colspan="1">16.5594</td>
<td align="center" valign="top" rowspan="1" colspan="1">4.1326</td>
</tr>
<tr>
<td align="center" valign="top" rowspan="1" colspan="1">95
<italic>th</italic>
-percentile range (centered on reference heading angle) (°)</td>
<td align="center" valign="top" rowspan="1" colspan="1">55.1185</td>
<td align="center" valign="top" rowspan="1" colspan="1">14.7193</td>
</tr>
</tbody>
</table>
</table-wrap>
</floats-group>
</pmc>
</record>

Pour manipuler ce document sous Unix (Dilib)

EXPLOR_STEP=$WICRI_ROOT/Ticri/CIDE/explor/TelematiV1/Data/Pmc/Corpus
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 000574 | SxmlIndent | more

Ou

HfdSelect -h $EXPLOR_AREA/Data/Pmc/Corpus/biblio.hfd -nk 000574 | SxmlIndent | more

Pour mettre un lien sur cette page dans le réseau Wicri

{{Explor lien
   |wiki=    Ticri/CIDE
   |area=    TelematiV1
   |flux=    Pmc
   |étape=   Corpus
   |type=    RBID
   |clé=     PMC:3871121
   |texte=   A Kalman Filter Implementation for Precision Improvement in Low-Cost GPS Positioning of Tractors
}}

Pour générer des pages wiki

HfdIndexSelect -h $EXPLOR_AREA/Data/Pmc/Corpus/RBID.i   -Sk "pubmed:24217355" \
       | HfdSelect -Kh $EXPLOR_AREA/Data/Pmc/Corpus/biblio.hfd   \
       | NlmPubMed2Wicri -a TelematiV1 

Wicri

This area was generated with Dilib version V0.6.31.
Data generation: Thu Nov 2 16:09:04 2017. Site generation: Sun Mar 10 16:42:28 2024