示例#1
0
        /// <summary>
        /// parse an xml node
        /// </summary>
        /// <param name="xnod"></param>
        /// <param name="level"></param>
        public void LoadFromXml(
            XmlNode xnod, int level)
        {
            XmlNode xnodWorking;

            if (xnod.Name == "SteersmanGeometry")
            {
                int cameraIndex = -1;
                if (robot_geometry == null)
                {
                    robot_geometry = new robotGeometry();
                }
                robot_geometry.LoadFromXml(xnod, level + 1, ref cameraIndex);
            }

            if (xnod.Name == "SteersmanBuffer")
            {
                if (buffer == null)
                {
                    buffer = new metagridBuffer();
                }
                int   no_of_grid_levels     = 0;
                int   grid_type             = 0;
                int   dimension_mm          = 0;
                int   dimension_vertical_mm = 0;
                int   cellSize_mm           = 0;
                int   localisationRadius_mm = 0;
                int   maxMappingRange_mm    = 0;
                float vacancyWeighting      = 0;
                buffer.LoadFromXml(xnod, level + 1,
                                   ref no_of_grid_levels,
                                   ref grid_type,
                                   ref dimension_mm,
                                   ref dimension_vertical_mm,
                                   ref cellSize_mm,
                                   ref localisationRadius_mm,
                                   ref maxMappingRange_mm,
                                   ref vacancyWeighting
                                   );

                buffer.Initialise(
                    no_of_grid_levels,
                    grid_type,
                    dimension_mm,
                    dimension_vertical_mm,
                    cellSize_mm,
                    localisationRadius_mm,
                    maxMappingRange_mm,
                    vacancyWeighting);
            }

            if (xnod.Name == "SteersmanSensorModels")
            {
                if (robot_geometry == null)
                {
                    robot_geometry = new robotGeometry();
                }
                int no_of_stereo_cameras = 0;
                int no_of_grid_levels    = 0;
                int camera_index         = 0;
                int grid_level           = 0;
                robot_geometry.LoadFromXmlSensorModels(
                    xnod, level + 1,
                    ref no_of_stereo_cameras,
                    ref no_of_grid_levels,
                    ref camera_index,
                    ref grid_level);
            }

            // call recursively on all children of the current node
            if (xnod.HasChildNodes)
            {
                xnodWorking = xnod.FirstChild;
                while (xnodWorking != null)
                {
                    LoadFromXml(xnodWorking, level + 1);
                    xnodWorking = xnodWorking.NextSibling;
                }
            }
        }