<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<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="doi">10.3390/s120709273</article-id>
<article-id pub-id-type="publisher-id">sensors-12-09273</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Laser Scanning Measurements on Trees for Logging Harvesting Operations</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Zheng</surname><given-names>Yili</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Liu</surname><given-names>Jinhao</given-names></name><xref ref-type="corresp" rid="c1-sensors-12-09273"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Wang</surname><given-names>Dian</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Yang</surname><given-names>Ruixi</given-names></name></contrib>
<aff id="af1-sensors-12-09273">School of Technology, Beijing Forestry University, Beijing 100083, China; E-Mails: <email>zhengyili@bjfu.edu.cn</email> (Y.Z.); <email>wangdian@bjfu.edu.cn</email> (D.W.); <email>yrx1006_c2@163.com</email> (R.Y.)</aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-12-09273">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>liujinhao@vip.163.com</email>; Tel./Fax: +86-10-6233-6024.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2012</year></pub-date>
<pub-date pub-type="epub">
<day>05</day>
<month>07</month>
<year>2012</year></pub-date>
<volume>12</volume>
<issue>7</issue>
<fpage>9273</fpage>
<lpage>9285</lpage>
<history>
<date date-type="received">
<day>18</day>
<month>05</month>
<year>2012</year></date>
<date date-type="rev-recd">
<day>26</day>
<month>06</month>
<year>2012</year></date>
<date date-type="accepted">
<day>03</day>
<month>07</month>
<year>2012</year></date></history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>Logging harvesters represent a set of high-performance modern forestry machinery, which can finish a series of continuous operations such as felling, delimbing, peeling, bucking and so forth with human intervention. It is found by experiment that during the process of the alignment of the harvesting head to capture the trunk, the operator needs a lot of observation, judgment and repeated operations, which lead to the time and fuel losses. In order to improve the operation efficiency and reduce the operating costs, the point clouds for standing trees are collected with a low-cost 2D laser scanner. A cluster extracting algorithm and filtering algorithm are used to classify each trunk from the point cloud. On the assumption that every cross section of the target trunk is approximate a standard circle and combining the information of an Attitude and Heading Reference System, the radii and center locations of the trunks in the scanning range are calculated by the Fletcher-Reeves conjugate gradient algorithm. The method is validated through experiments in an aspen forest, and the optimized calculation time consumption is compared with the previous work of other researchers. Moreover, the implementation of the calculation result for automotive capturing trunks by the harvesting head during the logging operation is discussed in particular.</p></abstract>
<kwd-group>
<kwd>laser measurement</kwd>
<kwd>logging harvester</kwd>
<kwd>Fletcher-Reeves conjugate gradient</kwd>
<kwd>kinematics control</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Because the circumstances of forest areas are very complex and hazardous, it is very dangerous and laborious to harvest standing trees by hand-operated machines and tools. In the last decade, with the development of the hydraulic controls and sensor techniques, more and more logging harvesters are being used in forestry [<xref ref-type="bibr" rid="b1-sensors-12-09273">1</xref>–<xref ref-type="bibr" rid="b3-sensors-12-09273">3</xref>]. The logging harvester can complete successive tasks of felling, delimbing, measuring and bucking, and is very suitable for large scale clear cutting operations in fast growing plantations, as well as on hillsides. A comfortable work environment, easy maintenance, efficiency, less manpower, and many productive days of work can be expected when using the logging harvesters. This leads to lower costs and better price performance ratio of the logging operations.</p>
<p>The Forest and Environment Equipment Research Institute of Beijing Forestry University has been dedicated to the research on logging harvesters for years [<xref ref-type="bibr" rid="b4-sensors-12-09273">4</xref>,<xref ref-type="bibr" rid="b5-sensors-12-09273">5</xref>]. It was found by experiments on logging harvester prototypes that the processes of delimbing, peeling, and bucking can be completed fast, but for the process of the alignment of harvesting head to capture the trunk, dues to the blind areas of the operator and vibration of the cane and vehicles chassis, the operator has to perform repeated observations, judgments and operations, which lead to the time and fuel losses. It is therefore of significance to find an efficient method to measure the location of surrounding trees for the harvesting head to achieve automatic capture.</p>
<p>Laser scanner is a non-contact measurement system that can scan surroundings two or three dimensionally with a radial field of vision using infra-red laser beams. The distance between the laser scanner and the object is determined by the time of flight of laser light pulses: a pulsed laser beam is emitted and reflected if it meets an object. From those distance data, a point cloud is created describing the shapes of the objects surrounding the scanner. Laser scanning offers new possibilities in tree measurement applications in forestry.</p>
<p>Jutila, Kannas <italic>et al.</italic> [<xref ref-type="bibr" rid="b6-sensors-12-09273">6</xref>] discuss a method for diameter and location measurement of tree parameters using a 2D laser scanner mounted on a mobile ATV platform. The error of the tree diameter calculations is 4%. Thies, Pfeifer <italic>et al.</italic> [<xref ref-type="bibr" rid="b7-sensors-12-09273">7</xref>] used a 3D terrestrial laser scanner to capture the geometric aspects of a tree: the radius, length and diameter of the trunk and individual branches. Liang, Litkey <italic>et al.</italic> [<xref ref-type="bibr" rid="b8-sensors-12-09273">8</xref>] presented a fully automatic stem-mapping algorithm using 3D single-scan terrestrial laser scanning data for collecting individual tree information from forest plots. Öhman, Miettinen <italic>et al.</italic> [<xref ref-type="bibr" rid="b9-sensors-12-09273">9</xref>,<xref ref-type="bibr" rid="b10-sensors-12-09273">10</xref>] used 2D scanning laser range finders, machine vision systems and GPS to get information about the surrounding forest, such as tree diameters, positions and stem density. This information can be used on-line for the simultaneous localization and mapping for the forest harvesters or off-line in a forest asset management system. Rossmann <italic>et al.</italic> [<xref ref-type="bibr" rid="b11-sensors-12-09273">11</xref>] mounted two laser scanners on the right and left side of the logging harvester cabin, generating a local tree map from the point cloud data of the mounted laser scanners, and using a particle filtering matching algorithm to form the global tree map for wood harvesting.</p>
<p>In this paper, a low-cost 2D laser scanner and an inertial measurement system are mounted on the outer boom of the crane, and are used to obtain the point cloud of the surrounding trees. In Section 2, the whole laser measurement equipment is described, and a laser scanning experiment is carried out in an aspen forest; In Section 3, the hierarchical cluster algorithm and filtering algorithm are used to extract each trunk from the point cloud. The trunk radii and location of the trunks are calculated by the Fletcher-Reeves conjugate gradient algorithm; In Section 4, the measurement results are given and compared with previous work of other researchers; In Section 5, the implementation of the result for automated trunk capture is discussed. Our conclusions are presented in Section 6.</p></sec>
<sec>
<label>2.</label>
<title>The Description of the Equipment</title>
<sec>
<label>2.1.</label>
<title>The Equipment Hardware</title>
<p>3D laser scanners are expensive and unsuitable for continuous measurements [<xref ref-type="bibr" rid="b6-sensors-12-09273">6</xref>]. Accordingly, a LMS291 2D laser scanner from SICK Inc. is used as the primary sensor. The measurement data corresponding to the surrounding contour is scanned by the LMS291, and is output in binary format via the RS485 data interface at the rate of 10 Hz to form the raw point cloud. As a result of the beam geometry, the maximum space between two laser beams is related to the scanning angular resolution and maximum scanning range. To get a local tree map of adequate resolution for logging harvesting, the scanning angular resolution of the LMS2291 is set to 0.25°, the maximum scanning angle is 100°, and maximum scanning distance is 8 m.</p>
<p>The 2D laser scanner can be installed on the outer boom of the crane, but the tilt and orientation angle of the scanner plane should be known. A MTi Attitude and Heading Reference System (AHRS) of Xsens Inc. is used. AHRS is a miniature inertial measurement unit with integrated 3D magnetometers, and is fixed on the top of LMS291 as shown in <xref ref-type="fig" rid="f1-sensors-12-09273">Figure 1</xref>. AHRS is capable of outputting roll <italic>α</italic>, pitch <italic>β</italic> and yaw <italic>γ</italic> of the scanner plane in real time via the RS232 data interface. The electronics of LMS291 and AHRS are powered directly from a 24 V lead-acid battery. The data analysis software is implemented on the computer. The whole measurement equipment is shown in <xref ref-type="fig" rid="f1-sensors-12-09273">Figure 1</xref>.</p></sec>
<sec sec-type="methods">
<label>2.2.</label>
<title>The Data Analysis Flow of the Equipment</title>
<p>The overall data analysis flow of the equipment for the measurement and calculation of the tree parameters is shown in <xref ref-type="fig" rid="f2-sensors-12-09273">Figure 2</xref>, and is mainly divided into four consecutive phases. The first phase is projecting the raw point cloud onto a horizontal plane according to the tilt angle <italic>α</italic> and <italic>β</italic> of the scanning plane. The second phase is filtering the invalid scanning data against some criteria, and extracting each trunk from the calibrated point cloud. The third phrase is determining the trunk radii and location of the trunks for the harvesting head. The fourth phrase is storing the results and displaying the useful information on the human-computer interface.</p></sec></sec>
<sec>
<label>3.</label>
<title>Extracting Trunks Feature for Logging Harvesting</title>
<sec sec-type="methods">
<label>3.1.</label>
<title>Projecting the Raw Scanning Data</title>
<p>In our experiments, the laser scanner was fixed on a tripod with telescopic legs as seen in <xref ref-type="fig" rid="f3-sensors-12-09273">Figure 3</xref>. Laser beams reflect if they meet the trunk or other object, and a fan-shaped scan is made of the surrounding area. Depending on the angular resolution of the LMS291, the distance value is provided every 0.25° from 40° to 140°, and the number of distance values is 401. As the individual distance values are given out in sequence via the RS485 data interface particular, the angular position of every individual distance value can be allocated on the basis of the values' position in the data string.</p>
<p>In the experiment, the height of the scanning plane is equal to about 1.3 meters from the ground, this leads to better results because the understory and other uninteresting objects below the scanning plane and the variation in the height of the scanning plane is assumed to be negligible in our experiment. The measurement range is limited to 8 m, which is not beyond the reachable workspace of the crane of the logging harvester and can echo sufficient laser echo data from a single trunk.</p>
<p>In polar form, supposing vector <italic>D<sub>i</sub></italic> = [<italic>l<sub>i</sub>, θ <sub>i</sub></italic>], where <italic>i</italic> = 1 to 401; <italic>θ<sub>i</sub></italic> is the angular positions; <italic>l<sub>i</sub></italic> is the horizontal distance value between the laser reflecting point and the measuring base point, then, <italic>l<sub>i</sub></italic> can be calculated as following <xref rid="FD1" ref-type="disp-formula">Equation (1)</xref>:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:semantics id="sm1">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mtext>raw</mml:mtext></mml:mrow></mml:msubsup>
<mml:mo>×</mml:mo>
<mml:mo>cos</mml:mo>
<mml:mi>α</mml:mi>
<mml:mo>×</mml:mo>
<mml:mo>cos</mml:mo>
<mml:mi>β</mml:mi></mml:mrow></mml:semantics></mml:math></disp-formula>where 
<inline-formula>
<mml:math id="mm2" display="inline">
<mml:semantics id="sm2">
<mml:mrow>
<mml:msubsup>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mtext>raw</mml:mtext></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> is the raw distance value of every scanning angular in polar form acquired directly from the laser scanner; <italic>α</italic> and <italic>β</italic> are the roll and pitch angle acquired by the AHRS. After one scan in the aspen forest, the laser scanning measurement data forms a point cloud in polar form as shown in <xref ref-type="fig" rid="f4-sensors-12-09273">Figure 4</xref>.</p>
<p>In <xref ref-type="fig" rid="f4-sensors-12-09273">Figure 4</xref>, the blue point is the measuring base point and the red dashed line is the maximum range (8 m) of the laser scanning plane. Some of the cloud points are clustered as shown in <xref ref-type="fig" rid="f4-sensors-12-09273">Figure 4</xref>, and each set of points inside a circle represents one cluster. In the scanning plane, the areas behind the nearest trunk are blind. During the logging operation, the harvester commonly works on the nearest trunk firstly, so the scanning blind areas can be neglected. A clustering and filtering algorithm can be used to filter out any uninteresting objects or incorrect data and extract the trunks from the point cloud.</p></sec>
<sec>
<label>3.2.</label>
<title>Clustering, Filtering and Extracting the Trunk</title>
<p>The measurement data is processed in increasing order of the bearing angle from 40° to 140°. The cluster can be defined by two edge points, which are the measurement points that satisfy [<xref ref-type="bibr" rid="b6-sensors-12-09273">6</xref>]:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm3" display="block">
<mml:semantics id="sm3">
<mml:mrow>
<mml:mrow>
<mml:mo>‖</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow>
<mml:mo>‖</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>l</mml:mi>
<mml:mo>&gt;</mml:mo>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mo>max</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>l<sub>i</sub></italic> is the distance value of the <italic>i</italic><sup>th</sup> measurement; Δ<italic>l</italic><sub>max</sub> is the threshold for the allowed distance in distance inside a cluster. If the distance Δ<italic>l</italic> between two adjacent points is larger than Δ<italic>l</italic><sub>max</sub>, one of points <italic>i</italic><sup>th</sup> and <italic>I</italic> − 1<sup>th</sup> belongs to the cluster and the other one belongs to the background or other cluster. In our experiment, the distance between two trunks is large, so we choose Δ<italic>l</italic><sub>max</sub> = 0.2 m, then, eight clusters can be extracted from the point cloud in <xref ref-type="fig" rid="f3-sensors-12-09273">Figure 3</xref>.</p>
<p>Using <xref rid="FD2" ref-type="disp-formula">Equation (2)</xref> for extracting trunks from the point cloud is certainly effective and sufficient in a forest with just a few bare tree trunks, but in a more complex environment, the laser beam may hit uninteresting things, branches or the ground, and because of divergence of the laser, incorrect measurement data may exist in the point cloud, therefore, filtering algorithms should be used to filter out the incorrect points or clusters from the point cloud, and accept only the trunk clusters. The filtering is performed for each cluster by testing it against following four criteria [<xref ref-type="bibr" rid="b6-sensors-12-09273">6</xref>]:</p>
<list list-type="order">
<list-item>
<p>The minimum and maximum curvatures of the whole cluster.</p></list-item>
<list-item>
<p>The minimum value for the curvature of a single point <italic>cur<sub>i</sub></italic>.</p></list-item>
<list-item>
<p>The greatest acceptable width of the cluster.</p></list-item>
<list-item>
<p>The smallest acceptable depth of the cluster.</p></list-item></list>
<p>A point or cluster should be rejected if it fails any of the above tests. The minimum and maximum curvatures of the whole cluster in (1) prescribe the acceptable value of the trunk radius. The curvature of a single point <italic>cur<sub>i</sub></italic> in (2) can be calculated as <xref rid="FD3" ref-type="disp-formula">Equation (3)</xref> [<xref ref-type="bibr" rid="b12-sensors-12-09273">12</xref>]:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm4" display="block">
<mml:semantics id="sm4">
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">cur</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula>The greatest acceptable width and the smallest acceptable depth of the cluster in (3) and (4) can filter out the ground or other uninteresting things. The vector <bold><italic>D</italic></bold><italic><sub>i</sub></italic> = [<italic>l<sub>i</sub>, θ<sub>i</sub></italic>] of the validated points can be transform to the vector 
<inline-formula>
<mml:math id="mm5" display="inline">
<mml:semantics id="sm5">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> defined in rectangular form. <xref ref-type="fig" rid="f5-sensors-12-09273">Figure 5</xref> gives point cloud of every cluster defined in rectangular form after filtering.</p></sec>
<sec>
<label>3.3.</label>
<title>Calculating the Parameters of the Trunk</title>
<p>After filtering and extracting the trunk clusters from the point cloud, the trunk clusters offer a variety of features that can be used for the logging operation such as radius, center location and distances between adjacent trunks.</p>
<p>Supposing that the matrix the <bold><italic>P</italic></bold> = [<italic>P</italic><sub>1</sub>, <italic>P</italic><sub>2</sub>,…,<italic>P<sub>m</sub></italic>] represents the position of every point in the truck cluster in rectangular form, <italic>m</italic> is the number of points in one cluster. On the assumption that all cross sections of the standing trees are approximately standard circles, there exist a number of different methods to fit a circle from the vector <bold><italic>P</italic></bold><italic><sub>i</sub></italic> in a trunk cluster and to estimate the parameters of every trunk. In this paper, the effective conjugate gradient method is used.</p>
<p>Supposing the center location of the trunk is <italic>O</italic> = (<italic>O<sub>x</sub>, O<sub>y</sub></italic>) and the radius of the trunk is <italic>R</italic>, then, the vector 
<inline-formula>
<mml:math id="mm6" display="inline">
<mml:semantics id="sm6">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> satisfies:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm7" display="block">
<mml:semantics id="sm7">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>x</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>y</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn></mml:msup></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mo>⇒</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>x</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>y</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>x</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>y</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mo>⇒</mml:mo>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>x</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>y</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>x</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>y</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>Supposing the unknown vector <bold><italic>x</italic></bold> = [<italic>x</italic><sub>1</sub>, <italic>x</italic><sub>2</sub>, <italic>x</italic><sub>3</sub>]<sup>T</sup> = [<italic>O<sub>x</sub>, O<sub>y</sub>, R</italic><sup>2</sup> – (<italic>O<sub>x</sub></italic>)<sup>2</sup> – (<italic>O<sub>y</sub></italic>)<sup>2</sup>]<sup>T</sup>, the coefficients vector 
<inline-formula>
<mml:math id="mm8" display="inline">
<mml:semantics id="sm8">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">α</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>α</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>α</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>α</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>3</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">]</mml:mo></mml:mrow>
<mml:mtext>T</mml:mtext></mml:msup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">]</mml:mo></mml:mrow>
<mml:mtext>T</mml:mtext></mml:msup>
<mml:mo>,</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> and 
<inline-formula>
<mml:math id="mm9" display="inline">
<mml:semantics id="sm9">
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>x</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>,</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> then, the <xref rid="FD4" ref-type="disp-formula">Equation (4)</xref> can be transformed as follows:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="mm10" display="block">
<mml:semantics id="sm10">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>3</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>Then the scanning points in one cluster form a set of linear algebraic equations with constant coefficients as in the following <xref rid="FD6" ref-type="disp-formula">Equation (6)</xref>:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="mm11" display="block">
<mml:semantics id="sm11">
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>11</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>12</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>13</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>21</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>22</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>23</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mn>3</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>m</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In order to get the parameters of the trunk, it is desired to solve for the unknown quantities <bold><italic>x</italic></bold> = [<italic>x</italic><sub>1</sub>, <italic>x</italic><sub>2</sub>, <italic>x</italic><sub>3</sub>]<sup>T</sup>, given the coefficients <italic>α<sub>ij</sub></italic> for <italic>i</italic> = 1,2,…<italic>m, j</italic> = 1,2,3 and <italic>b<sub>i</sub></italic> for <italic>i</italic> = 1,2,…,<italic>m</italic>. After solving the unknown quantities <bold><italic>x</italic></bold>, the center location of the trunk <italic>O</italic> = (<italic>O<sub>x</sub></italic>,<italic>O<sub>y</sub></italic>) and the radius of the trunk <italic>R</italic> can be calculated as shown in <xref rid="FD7" ref-type="disp-formula">Equation (7)</xref>:
<disp-formula id="FD7">
<label>(7)</label>
<mml:math id="mm12" display="block">
<mml:semantics id="sm12">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>x</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>;</mml:mo></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>y</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>;</mml:mo></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msqrt></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p><xref rid="FD6" ref-type="disp-formula">Equation (6)</xref> can be written in a vector-matrix form as <xref rid="FD8" ref-type="disp-formula">Equation (8)</xref>:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math id="mm13" display="block">
<mml:semantics id="sm13">
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi></mml:mrow></mml:semantics></mml:math></disp-formula>where it is assumed that <italic>A</italic> ∈ ℛ<sup>m×3</sup>, <italic>x</italic> ∈ ℛ<sup>3×1</sup>, <italic>b</italic> ∈ ℛ<sup>m×1</sup>, and:
<disp-formula id="FD9">
<label>(9)</label>
<mml:math id="mm14" display="block">
<mml:semantics id="sm14">
<mml:mrow>
<mml:mtext mathvariant="bold-italic">A</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>11</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>12</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>13</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>21</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋯</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mtd>
<mml:mtd>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>22</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋯</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mtd>
<mml:mtd>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mn>23</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋯</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>;</mml:mo>
<mml:mtext mathvariant="bold-italic">x</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msub></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:mtd>
<mml:mrow>
<mml:mtext mathvariant="bold-italic">b</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋯</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>m</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>For <italic>m</italic> &gt; 3, <xref rid="FD8" ref-type="disp-formula">Equation (8)</xref> is referred to as being over-determined (more equations than unknowns). In order to get parameters of the trunk for quick harvesting operations, the time constraints and accuracy for solving <xref rid="FD8" ref-type="disp-formula">Equation (8)</xref> are important, so the Fletcher-Reeves conjugate gradient algorithm (F-R algorithm) is used to solve it. The F-R algorithm is a real time and online neuro-computing approach for solving system of linear algebraic equations and can achieve fast speed of convergence in neuro-computing. The F-R algorithm is given as follows [<xref ref-type="bibr" rid="b13-sensors-12-09273">13</xref>,<xref ref-type="bibr" rid="b14-sensors-12-09273">14</xref>]:</p>
<p>Supposing <bold><italic>x</italic></bold><italic><sub>k</sub></italic> is the discrete-time iterative solution of <xref rid="FD8" ref-type="disp-formula">Equation (8)</xref> using the F-R algorithm, <italic>k</italic> is the discrete-time index, then, the solution error for solving <bold><italic>Ax</italic></bold> = <bold><italic>b</italic></bold> is given by:
<disp-formula id="FD10">
<label>(10)</label>
<mml:math id="mm15" display="block">
<mml:semantics id="sm15">
<mml:mrow>
<mml:mtext mathvariant="bold-italic">e</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="bold-italic">Ax</mml:mtext>
<mml:mo>−</mml:mo>
<mml:mtext mathvariant="bold-italic">b</mml:mtext></mml:mrow></mml:semantics></mml:math></disp-formula>The F-R algorithm can be incorporated into the discrete-time learning rule to derive an update expression for the iterate <bold><italic>x</italic></bold><italic><sub>k</sub></italic>, the update of the solution is given by:
<disp-formula id="FD11">
<mml:math id="mm16" display="block">
<mml:semantics id="sm16">
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="bold-italic">x</mml:mtext>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mtext mathvariant="bold-italic">x</mml:mtext>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>α</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:msub>
<mml:mtext mathvariant="bold-italic">d</mml:mtext>
<mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula>where
<disp-formula id="FD12">
<mml:math id="mm17" display="block">
<mml:semantics id="sm17">
<mml:mrow>
<mml:msub>
<mml:mi>α</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mtext mathvariant="bold-italic">g</mml:mtext>
<mml:mi>k</mml:mi>
<mml:mtext>T</mml:mtext></mml:msubsup>
<mml:msub>
<mml:mtext mathvariant="bold-italic">d</mml:mtext>
<mml:mi>k</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mtext mathvariant="bold-italic">d</mml:mtext>
<mml:mi>k</mml:mi>
<mml:mtext>T</mml:mtext></mml:msubsup>
<mml:msup>
<mml:mtext mathvariant="bold-italic">A</mml:mtext>
<mml:mtext>T</mml:mtext></mml:msup>
<mml:mtext mathvariant="bold-italic">A</mml:mtext>
<mml:msub>
<mml:mtext mathvariant="bold-italic">d</mml:mtext>
<mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>The vector <bold><italic>d</italic></bold><italic><sub>k</sub></italic> is the current direction vector, and <italic>ε</italic>(<bold>·</bold>) is the object function to be determined, and is given by:
<disp-formula id="FD13">
<mml:math id="mm18" display="block">
<mml:semantics id="sm18">
<mml:mrow>
<mml:mi mathvariant="bold-italic">ɛ</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="bold-italic">x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mo>‖</mml:mo>
<mml:mtext mathvariant="bold-italic">e</mml:mtext>
<mml:mo>‖</mml:mo></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:msup>
<mml:mtext mathvariant="bold-italic">e</mml:mtext>
<mml:mtext>T</mml:mtext></mml:msup>
<mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>Therefore, the Fletcher-Reeves conjugate gradient algorithm (with restart) for solving <bold><italic>Ax</italic></bold> = <bold><italic>b</italic></bold> is summarized in the following steps [<xref ref-type="bibr" rid="b14-sensors-12-09273">14</xref>]:
<list list-type="bullet">
<list-item>
<p>Step 1: Set initial condition <bold><italic>x</italic></bold><sub>0</sub>.</p></list-item>
<list-item>
<p>Step 2: Compute <bold><italic>g</italic></bold><italic><sub>k</sub></italic>|<italic><sub>k</sub></italic><sub>=0</sub> = <bold><italic>g</italic></bold><sub>0</sub> = <bold><italic>A</italic></bold><sup>T</sup><bold><italic>Ax</italic></bold><sub>0</sub> – <bold><italic>A</italic></bold><sup>T</sup><bold><italic>b</italic></bold>.</p></list-item>
<list-item>
<p>Step 3: Set <bold><italic>d</italic></bold><sub>0</sub> = −<bold><italic>g</italic></bold><sub>0</sub>.</p></list-item>
<list-item>
<p>Step 4: Compute <bold><italic>x</italic></bold><italic><sub>k</sub></italic><sub>+1</sub> = <bold><italic>x</italic></bold><italic><sub>k</sub></italic> + <italic>α<sub>k</sub></italic><bold><italic>d</italic></bold><italic><sub>k</sub></italic>, where 
<inline-formula>
<mml:math id="mm19" display="inline">
<mml:semantics id="sm19">
<mml:mrow>
<mml:msub>
<mml:mi>α</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi>k</mml:mi>
<mml:mtext>T</mml:mtext></mml:msubsup>
<mml:msub>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo>/</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi>k</mml:mi>
<mml:mtext>T</mml:mtext></mml:msubsup>
<mml:msup>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mtext>T</mml:mtext></mml:msup>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula></p></list-item>
<list-item>
<p>Step 5: Compute <bold><italic>g</italic></bold><italic><sub>k</sub></italic><sub>+1</sub> = <bold><italic>A</italic></bold><sup>T</sup><bold><italic>Ax</italic></bold><italic><sub>k</sub></italic><sub>+1</sub> – <bold><italic>A</italic></bold><sup>T</sup><bold><italic>b</italic></bold>.</p></list-item>
<list-item>
<p>Step 6: Compute <bold><italic>d</italic></bold><italic><sub>k</sub></italic><sub>+1</sub> = −<bold><italic>g</italic></bold><italic><sub>k</sub></italic><sub>+1</sub> + <italic>β<sub>k</sub></italic><bold><italic>d</italic></bold><italic><sub>k</sub></italic>, where 
<inline-formula>
<mml:math id="mm20" display="inline">
<mml:semantics id="sm20">
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mrow>
<mml:mtext>k</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mtext>T</mml:mtext></mml:msubsup>
<mml:msub>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mrow>
<mml:mtext>K</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>/</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mtext>k</mml:mtext>
<mml:mtext>T</mml:mtext></mml:msubsup>
<mml:msub>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mtext>K</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula></p></list-item>
<list-item>
<p>Step 7: If <italic>k</italic> &lt; <italic>k</italic><sub>max</sub> go to step 4.</p></list-item>
<list-item>
<p>Step 8: Continue until convergence is achieved; termination criterion could be ‖<italic>d<sub>k</sub></italic>‖ &lt; <italic>ε</italic> (where <italic>ε</italic> is an appropriate predetermined small number) and <italic>k</italic> &gt; <italic>k</italic><sub>max</sub>.</p></list-item></list>where <italic>k</italic><sub>max</sub> is the maximum number of iterations. In our experiment, <italic>k</italic><sub>max</sub> is set to 1,000 and the initial condition <bold><italic>x</italic></bold> = [0,0,0]<sup>T</sup>, consequently, faster convergence can be expected. The distance between two trunks in the horizontal plane can be calculated via the center locations of two trunks.</p></sec></sec>
<sec sec-type="results|discussion">
<label>4.</label>
<title>Results and Discussion</title>
<p>The trunk feature extracting process presented in the previous section is programmed with the Visual C++ 6.0 introduced by Microsoft and Matcom 4.5 introduced by MathWorks as MATLAB to a C++ compiler. All of the calculation results such as radii, location of the trunks and distances between adjacent trunks can be displayed on a human-computer interface for the operator.</p>
<p>The result of the calculations on the trunk parameter is given in <xref ref-type="fig" rid="f6-sensors-12-09273">Figure 6</xref>. There are eight blue circles which are the fitting results of the trunk point cloud, and the centre of the trunks are marked by the triangle. Supposing the measurement base point is the origin of the rectangular form, then the 2nd and 5th column of <xref ref-type="table" rid="t1-sensors-12-09273">Table 1</xref> give the manual measurement values of the central location and radius of the trunk, which are acquired manually by the range finder and vernier, respectively.</p>
<p>Extracting the parameters of the trunk from the point cloud also can be achieved by the Least Square Fitting algorithm (LSF algorithm) [<xref ref-type="bibr" rid="b15-sensors-12-09273">15</xref>]. The 3rd and 6th column of <xref ref-type="table" rid="t1-sensors-12-09273">Table 1</xref> give the calculation results via the LSF algorithm. The 4th and 7th column of <xref ref-type="table" rid="t1-sensors-12-09273">Table 1</xref> give the calculation results via the F-R algorithm used in this paper.</p>
<p><xref ref-type="table" rid="t2-sensors-12-09273">Table 2</xref> gives the maximum error and time consumption on the calculation by LSF and F-R algorithm respectively.</p>
<p>As shown in <xref ref-type="table" rid="t2-sensors-12-09273">Table 2</xref>, the maximum error for the center location and radius are nearly the same by the LSF and F-R algorithm, but time consumption is reduced by the F-R algorithm. The errors are mainly caused by the resolution and systematic errors of the laser device and the approximation error of the F-R algorithm. The error increases as the distance between the base point of the laser scanner and the trunk increases. The max error and time consumption of the calculation meet the requirements for the accuracy (&lt;15 cm) and real time (&lt;10 ms) for logging harvesting operations.</p></sec>
<sec>
<label>5.</label>
<title>Implementation</title>
<p>It is found by the experiments that the process of delimbing, peeling, and bucking can be completed fast by the logging harvester, but for the process of the alignment of the harvesting head to capture the trunk, the operator needs a lot of observation, judgment and repeated operations, which lead to time and fuel losses. In order to improve the operation efficiency and reduce the operating costs during the logging harvesting operations, the laser scanner and inertial measurement system presented in this paper can be mounted on the outer boom of the crane to determine the location of the trunk near the harvesting head as seen in <xref ref-type="fig" rid="f7-sensors-12-09273">Figure 7</xref>.</p>
<p>In <xref ref-type="fig" rid="f7-sensors-12-09273">Figure 7</xref>, the frames {S}, {H} and {T} are located at the base point of the laser scanner, the harvesting head, and the target trunk, respectively. The point cloud is collected for the surrounding trees and using the trunk feature extracting approach presented in Section 3, the pose and position matrix 
<inline-formula>
<mml:math id="mm21" display="inline">
<mml:semantics id="sm21">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>ST</mml:mtext></mml:mmultiscripts></mml:mrow></mml:semantics></mml:math></inline-formula> of the truck respective to the laser scanner base point can be obtained in every control period and transferred to the on-board computer system of the logging harvester.</p>
<p>Using the D-H parameters of the manipulator and combining the information of the harvesting head angle encoders, the pose and position matrix 
<inline-formula>
<mml:math id="mm22" display="inline">
<mml:semantics id="sm22">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>HS</mml:mtext></mml:mmultiscripts></mml:mrow></mml:semantics></mml:math></inline-formula> relating the harvesting head frame to the laser scanner base point can be determined [<xref ref-type="bibr" rid="b16-sensors-12-09273">16</xref>].</p>
<p>Then, the pose and position matrix 
<inline-formula>
<mml:math id="mm23" display="inline">
<mml:semantics id="sm23">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>HT</mml:mtext></mml:mmultiscripts></mml:mrow></mml:semantics></mml:math></inline-formula>for the trunk relative to the harvesting head can be expressed in the multiplication product of successive 4 × 4 homogeneous matrices as given by <xref rid="FD14" ref-type="disp-formula">Equation (11)</xref>:
<disp-formula id="FD14">
<label>(11)</label>
<mml:math id="mm24" display="block">
<mml:semantics id="sm24">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>HT</mml:mtext></mml:mmultiscripts>
<mml:mo>=</mml:mo>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>ST</mml:mtext></mml:mmultiscripts>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>HS</mml:mtext></mml:mmultiscripts></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>The trajectory of the crane for trunk capture is planned in Cartesian space. The harvesting head moves smoothly one step in every control period until reaching the target. The motion planning and control flow for trunk capturing process can be summarized by the following steps:</p>
<list list-type="bullet">
<list-item>
<p>Step 1: The laser scanner makes a fan-shaped scan of the surrounding area, and gets the location of every trunk in the scanning range.</p></list-item>
<list-item>
<p>Step 2: The pose and position matrix 
<inline-formula>
<mml:math id="mm25" display="inline">
<mml:semantics id="sm25">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>ST</mml:mtext></mml:mmultiscripts></mml:mrow></mml:semantics></mml:math></inline-formula> of the truck respective to the measurement base point is formed. Every current joint angle <italic>θ</italic> of the crane and harvesting head is received from the angle encoder.</p></list-item>
<list-item>
<p>Step 3: Using the <xref rid="FD14" ref-type="disp-formula">Equation (11)</xref>, the matrix 
<inline-formula>
<mml:math id="mm26" display="inline">
<mml:semantics id="sm26">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>T</mml:mi>
<mml:mprescripts/>
<mml:mtext>HT</mml:mtext></mml:mmultiscripts></mml:mrow></mml:semantics></mml:math></inline-formula> for the target trunk relative to the harvesting head is formed.</p></list-item>
<list-item>
<p>Step 4: Considering the constraints of joint velocity and acceleration, the central controller of the logging harvester plans the desired set points Δ<italic>p<sub>k</sub></italic> of the Cartesian-coordinate trajectory for the harvesting head to catch the target trunk, and the number of the points <italic>k</italic> (10 &lt; <italic>k</italic> &lt; 100) is decided by the distance between the harvesting head and the target.</p></list-item>
<list-item>
<p>Step5: Using the inverse kinematics solution, the angle increments Δ<italic>θ</italic> of every joint are acquired from the first planned set point Δ<italic>p</italic><sub>1</sub>.</p></list-item>
<list-item>
<p>Step 6: The angle increments Δ<italic>θ</italic> are sent to the hydraulic controllers respectively, and the hydraulic controllers guide the motion of every hydraulic cylinder.</p></list-item>
<list-item>
<p>Step 7: In the next ten control periods, the angle increments are acquired from the planned set points similarly, and hydraulic cylinders move according to the angle increments.</p></list-item>
<list-item>
<p>Step 8: if the capture range of the target trunk is reached, the gripper is closed, and finishes the mission, otherwise, it returns to step 1.</p></list-item></list>
<p>Because of the vibration of crane and control errors, only the first ten planned set points can be used for the task from step 4 to step 7, the rest of the planned set points should be discarded, and a new path planning calculation should be made in the next control period.</p></sec>
<sec sec-type="conclusions">
<label>6.</label>
<title>Conclusions and Outlook</title>
<p>In this paper, in order to realize semi-automated logging harvesting, the point cloud for standing trees is collected with a 2D laser scanner. A cluster extracting algorithm and filtering algorithm is used to classify each trunk from the point cloud. The radii and positions of the trees are calculated by the Fletcher-Reeves conjugate gradient algorithm. Compared with previous work by other researchers, the calculation time consumption is reduced. The implementation of the calculation result on a logging harvester is discussed in particular.</p>
<p>The aim of this research relates to the human aspect of logging harvester operations. Logging harvesters are difficult to control and operator training is time consuming and expensive. If the location of every trunk relative to the harvesting head is known by the laser scanner, the operator could just indicate which tree to cut and the crane would automatically grasp it. The burden of the operator could be lightened by increasing the automation level of the logging harvester in the future.</p></sec></body>
<back>
<ack>
<p>This study is financially supported by National Natural Science Foundation of China (Grant No. 31070634), China Postdoctoral Science Foundation (Grant No. 2011M500009), 948 project supported by State Forestry Administration, China (Grant No. 2011-4-02), and Fundamental Research Funds for the Central Universities (Grant No. TD2010-2).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-09273"><label>1.</label><citation citation-type="web"><article-title>Tracked Harvesters &amp; Wheeled Harvesters from John Deere Forestry</article-title><comment>Available online: <ext-link xlink:href="http://www.deere.com/en_US/cfd/forestry/deere_forestry/harvesters/deere_harvester_selection.html" ext-link-type="uri">http://www.deere.com/en_US/cfd/forestry/deere_forestry/harvesters/deere_harvester_selection.html</ext-link> (accessed on 1 May 2012)</comment></citation></ref>
<ref id="b2-sensors-12-09273"><label>2.</label><citation citation-type="web"><person-group person-group-type="author"><collab>Ponsse Harvesters</collab></person-group><comment>Available online: <ext-link xlink:href="http://www.ponsse.fi/english/products/harvesters/index.php" ext-link-type="uri">http://www.ponsse.fi/english/products/harvesters/index.php</ext-link> (accessed on 1 May 2012)</comment></citation></ref>
<ref id="b3-sensors-12-09273"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Guo</surname><given-names>X.</given-names></name><name><surname>Lu</surname><given-names>H.</given-names></name></person-group><article-title>Recent Development of Forest Industrial Robot in China</article-title><conf-name>Proceedings of the 2010 International Conference on Intelligent Computation Technology and Automation (ICICTA)</conf-name><conf-loc>Wuhan, China</conf-loc><conf-date>11–12 May 2010</conf-date><comment>Volume 3</comment><fpage>984</fpage><lpage>987</lpage></citation></ref>
<ref id="b4-sensors-12-09273"><label>4.</label><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Wei</surname><given-names>Z.</given-names></name></person-group><article-title>Research and Application on Design Theory of the Chassis of Forestry Felling &amp; Cultivation Machine</article-title><source>Ph.D. Thesis</source><publisher-name>Beijing Forestry University</publisher-name><publisher-loc>Beijing, China</publisher-loc><year>2011</year></citation></ref>
<ref id="b5-sensors-12-09273"><label>5.</label><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Shen</surname><given-names>R.</given-names></name></person-group><article-title>Research on Forestry Felling &amp; Cultivation Machine Executive Mechanism and Load-Sensing Hydraulic System</article-title><source>Ph.D. Thesis</source><publisher-name>Beijing Forestry University</publisher-name><publisher-loc>Beijing China</publisher-loc><year>2010</year></citation></ref>
<ref id="b6-sensors-12-09273"><label>6.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Jutila</surname><given-names>J.</given-names></name><name><surname>Kannas</surname><given-names>K.</given-names></name><name><surname>Visala</surname><given-names>A.</given-names></name></person-group><article-title>Tree Measurement in Forest by 2D Laser Scanning</article-title><conf-name>Proceedings of the 2007 IEEE International Symposium on Computational Intelligence in Robotics and Automation (CIRA 2007)</conf-name><conf-loc>Jacksonville, FL, USA</conf-loc><conf-date>20– 23 June 2007</conf-date><fpage>491</fpage><lpage>496</lpage></citation></ref>
<ref id="b7-sensors-12-09273"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Thies</surname><given-names>M.</given-names></name><name><surname>Pfeifer</surname><given-names>N.</given-names></name><name><surname>Winterhalder</surname><given-names>D.</given-names></name><name><surname>Gorte</surname><given-names>B.G.H.</given-names></name></person-group><article-title>Three-dimensional reconstruction of stems for assessment of taper, sweep and lean based on laser scanning of standing trees</article-title><source>Scand. J. For. Res.</source><year>2004</year><volume>19</volume><fpage>571</fpage><lpage>581</lpage><pub-id pub-id-type="doi">10.1080/02827580410019562</pub-id></citation></ref>
<ref id="b8-sensors-12-09273"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Liang</surname><given-names>X.</given-names></name><name><surname>Litkey</surname><given-names>P.</given-names></name><name><surname>Hyyppa</surname><given-names>J.</given-names></name><name><surname>Kaartinen</surname><given-names>H.</given-names></name><name><surname>Vastaranta</surname><given-names>M.</given-names></name><name><surname>Holopainen</surname><given-names>M.</given-names></name></person-group><article-title>Automatic stem mapping using single-scan terrestrial laser scanning</article-title><source>IEEE Trans.Geosci. Remote Sens.</source><year>2012</year><volume>50</volume><fpage>661</fpage><lpage>670</lpage><pub-id pub-id-type="doi">10.1109/TGRS.2011.2161613</pub-id></citation></ref>
<ref id="b9-sensors-12-09273"><label>9.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Miettinen</surname><given-names>M.</given-names></name><name><surname>Ohman</surname><given-names>M.</given-names></name><name><surname>Visala</surname><given-names>A.</given-names></name><name><surname>Forsman</surname><given-names>P.</given-names></name></person-group><article-title>Simultaneous Localization and Mapping for Forest Harvesters</article-title><conf-name>Proceedings of the 2007 IEEE International Conference on Robotics and Automation (ICRA'07)</conf-name><conf-loc>Rome, Italy</conf-loc><conf-date>10– 14 April 2007</conf-date><fpage>517</fpage><lpage>522</lpage></citation></ref>
<ref id="b10-sensors-12-09273"><label>10.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Ohman</surname><given-names>M.</given-names></name><name><surname>Miettinen</surname><given-names>M.</given-names></name><name><surname>Kannas</surname><given-names>K.</given-names></name><name><surname>Jutila</surname><given-names>J.</given-names></name><name><surname>Visala</surname><given-names>A.</given-names></name><name><surname>Forsman</surname><given-names>P.</given-names></name></person-group><article-title>Tree Measurement and Simultaneous Localization and Mapping System for Forest Harvesters</article-title><conf-name>Proceedings of 6th International Conference on Field and Service Robotics (FSR 2007)</conf-name><conf-loc>Chamonix Mont-Blanc, France</conf-loc><conf-date>9–12 July 2007</conf-date></citation></ref>
<ref id="b11-sensors-12-09273"><label>11.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Rossmann</surname><given-names>J.</given-names></name><name><surname>Schluse</surname><given-names>M.</given-names></name><name><surname>Schlette</surname><given-names>C.</given-names></name><name><surname>Buecken</surname><given-names>A.</given-names></name><name><surname>Krahwinkler</surname><given-names>P.</given-names></name><name><surname>Emde</surname><given-names>M.</given-names></name></person-group><article-title>Realization of a Highly Accurate Mobile Robot System for Multi Purpose Precision Forestry Applications</article-title><conf-name>Proceedings of the 2009 International Conference on Advanced Robotics (ICAR 2009)</conf-name><conf-loc>Munich, Germany</conf-loc><conf-date>22–26 June 2009</conf-date><fpage>1</fpage><lpage>6</lpage></citation></ref>
<ref id="b12-sensors-12-09273"><label>12.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Selkäinaho</surname><given-names>J.</given-names></name></person-group><source>Adaptive Autonomous Navigation of Mobile Robots in Unknown Environments</source><publisher-name>Helsinki University of Technology</publisher-name><publisher-loc>Espoo, Finland</publisher-loc><year>2002</year></citation></ref>
<ref id="b13-sensors-12-09273"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fletcher</surname><given-names>R.</given-names></name><name><surname>Reeves</surname><given-names>C.M.</given-names></name></person-group><article-title>Function minimization by conjugate gradients</article-title><source>Comput. J.</source><year>1964</year><volume>7</volume><fpage>149</fpage><lpage>154</lpage><pub-id pub-id-type="doi">10.1093/comjnl/7.2.149</pub-id></citation></ref>
<ref id="b14-sensors-12-09273"><label>14.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Ham</surname><given-names>F.M.</given-names></name><name><surname>Kostanic</surname><given-names>I.</given-names></name></person-group><source>Principles of Neurocomputing for Science and Engineering</source><publisher-name>McGraw Hill</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2000</year></citation></ref>
<ref id="b15-sensors-12-09273"><label>15.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname><given-names>D.</given-names></name><name><surname>Liu</surname><given-names>J.</given-names></name><name><surname>Wang</surname><given-names>J.</given-names></name></person-group><article-title>Identification and classification of scanned target in forest based on hierarchical cluster</article-title><source>Soc. Agric. Eng.</source><year>2011</year><volume>27</volume><fpage>173</fpage><lpage>177</lpage></citation></ref>
<ref id="b16-sensors-12-09273"><label>16.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Craig</surname><given-names>J.J.</given-names></name></person-group><source>Introduction to Robotics: Mechanics and Control</source><publisher-name>Pearson/Prentice Hall</publisher-name><publisher-loc>Upper Saddle River, NJ, USA</publisher-loc><year>2005</year></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-12-09273" position="float">
<label>Figure 1.</label>
<caption>
<p>The whole hardware of measurement equipment.</p></caption>
<graphic xlink:href="sensors-12-09273f1.gif"/></fig>
<fig id="f2-sensors-12-09273" position="float">
<label>Figure 2.</label>
<caption>
<p>The data analysis flow.</p></caption>
<graphic xlink:href="sensors-12-09273f2.gif"/></fig>
<fig id="f3-sensors-12-09273" position="float">
<label>Figure 3.</label>
<caption>
<p>The experiment in the aspen forest.</p></caption>
<graphic xlink:href="sensors-12-09273f3.gif"/></fig>
<fig id="f4-sensors-12-09273" position="float">
<label>Figure 4.</label>
<caption>
<p>The scanning and clustering result of the experiment.</p></caption>
<graphic xlink:href="sensors-12-09273f4.gif"/></fig>
<fig id="f5-sensors-12-09273" position="float">
<label>Figure 5.</label>
<caption>
<p>The point cloud in clusters after filtering.</p></caption>
<graphic xlink:href="sensors-12-09273f5.gif"/></fig>
<fig id="f6-sensors-12-09273" position="float">
<label>Figure 6.</label>
<caption>
<p>The calculation results.</p></caption>
<graphic xlink:href="sensors-12-09273f6.gif"/></fig>
<fig id="f7-sensors-12-09273" position="float">
<label>Figure 7.</label>
<caption>
<p>Implement on the logging harvester.</p></caption>
<graphic xlink:href="sensors-12-09273f7.gif"/></fig>
<table-wrap id="t1-sensors-12-09273" position="float">
<label>Table 1.</label>
<caption>
<p>The parameters of the trunks acquired by different methods.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="bottom"><bold>No.</bold></th>
<th colspan="3" align="center" valign="bottom"><bold>Center location (<italic>O</italic></bold><italic><sub>x</sub></italic>,<bold><italic>O</italic></bold><italic><sub>y</sub></italic><bold>) (cm)</bold></th>
<th colspan="3" align="center" valign="bottom"><bold>Radius (cm)</bold></th></tr>
<tr>
<th colspan="7" align="center" valign="bottom">
<hr/></th></tr>
<tr>
<th align="center" valign="bottom"/>
<th align="center" valign="bottom"><bold>Manual</bold></th>
<th align="center" valign="bottom"><bold>LSF algorithm</bold></th>
<th align="center" valign="bottom"><bold>F-R algorithm</bold></th>
<th align="center" valign="bottom"><bold>Manual</bold></th>
<th align="center" valign="bottom"><bold>LSF algorithm</bold></th>
<th align="center" valign="bottom"><bold>F-R algorithm</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">1</td>
<td align="center" valign="top">(247.0, 248.0)</td>
<td align="center" valign="top">(251.4, 252.1)</td>
<td align="center" valign="top">(251.4, 252.1)</td>
<td align="center" valign="top">8.6</td>
<td align="center" valign="top">9.9</td>
<td align="center" valign="top">9.9</td></tr>
<tr>
<td align="center" valign="top">2</td>
<td align="center" valign="top">(397.9, 455.7)</td>
<td align="center" valign="top">(405.9, 465.8)</td>
<td align="center" valign="top">(405.9, 465.8)</td>
<td align="center" valign="top">13.5</td>
<td align="center" valign="top">14.7</td>
<td align="center" valign="top">14.7</td></tr>
<tr>
<td align="center" valign="top">3</td>
<td align="center" valign="top">(149.1, 520.0)</td>
<td align="center" valign="top">(152.6, 529.0)</td>
<td align="center" valign="top">(152.6, 529.0)</td>
<td align="center" valign="top">13.6</td>
<td align="center" valign="top">15.2</td>
<td align="center" valign="top">15.2</td></tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">(−15.2, 782.9)</td>
<td align="center" valign="top">(−14.7, 785.9)</td>
<td align="center" valign="top">(−14.7, 785.8)</td>
<td align="center" valign="top">13.3</td>
<td align="center" valign="top">15.6</td>
<td align="center" valign="top">15.5</td></tr>
<tr>
<td align="center" valign="top">5</td>
<td align="center" valign="top">(−32.8, 272.0)</td>
<td align="center" valign="top">(−33.0, 276.0)</td>
<td align="center" valign="top">(−33.0, 276.0)</td>
<td align="center" valign="top">9.0</td>
<td align="center" valign="top">9.3</td>
<td align="center" valign="top">9.3</td></tr>
<tr>
<td align="center" valign="top">6</td>
<td align="center" valign="top">(−237.0, 597.7)</td>
<td align="center" valign="top">(−241.3, 608.5)</td>
<td align="center" valign="top">(−241.2, 608.2)</td>
<td align="center" valign="top">14.6</td>
<td align="center" valign="top">17.3</td>
<td align="center" valign="top">17.0</td></tr>
<tr>
<td align="center" valign="top">7</td>
<td align="center" valign="top">(−305.4, 346.7)</td>
<td align="center" valign="top">(−309.3, 349.6)</td>
<td align="center" valign="top">(−309.3, 349.6)</td>
<td align="center" valign="top">10.3</td>
<td align="center" valign="top">10.4</td>
<td align="center" valign="top">10.4</td></tr>
<tr>
<td align="center" valign="top">8</td>
<td align="center" valign="top">(−532.5, 471.1)</td>
<td align="center" valign="top">(−536.5, 476.3)</td>
<td align="center" valign="top">(−536.5, 476.3)</td>
<td align="center" valign="top">13.9</td>
<td align="center" valign="top">15.2</td>
<td align="center" valign="top">15.2</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-12-09273" position="float">
<label>Table 2.</label>
<caption>
<p>The performance comparison of LSF algorithm and F-R algorithm.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="bottom"><bold>Characteristic</bold></th>
<th align="center" valign="bottom"><bold>LSF algorithm</bold></th>
<th align="center" valign="bottom"><bold>F-R algorithm</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">Max error on the center location (cm)</td>
<td align="center" valign="top">(8.0, 10.8)</td>
<td align="center" valign="top">(8.0, 10.5)</td></tr>
<tr>
<td align="left" valign="top">Max error on the radius (cm)</td>
<td align="center" valign="top">2.7</td>
<td align="center" valign="top">2.4</td></tr>
<tr>
<td align="left" valign="top">Time consumption (ms)</td>
<td align="center" valign="top">0.28</td>
<td align="center" valign="top">0.19</td></tr></tbody></table></table-wrap></sec></back></article>
