Exemple #1
0
        public void ParseLink()
        {
            string    name      = "name";
            Geometry  geometry1 = new Geometry(new Sphere(1));
            Geometry  geometry2 = new Geometry(new Box(new SizeAttribute(1, 2, 3)));
            Visual    visual1   = new Visual.Builder(geometry1).Build();
            Visual    visual2   = new Visual.Builder(geometry2).Build();
            Collision collision = new Collision.Builder().SetGeometry(geometry1).Build();
            Inertial  inertial  = new Inertial(new Mass(1), new Inertia(1, 2, 3, 4, 5, 6));
            string    format    = @"<link name='{0}'>
                    <visual><geometry><sphere radius='{1}'/></geometry></visual>
                    <visual><geometry><box size='{2} {3} {4}'/></geometry></visual>
                    <collision><geometry><sphere radius='{5}'/></geometry></collision>
                    <inertial><mass value='{6}'/><inertia ixx='{7}' ixy='{8}' ixz='{9}' iyy='{10}' iyz='{11}' izz='{12}'/></inertial>
                </link>";
            string    xml       = String.Format(format, name, visual1.Geometry.Sphere.Radius,
                                                visual2.Geometry.Box.Size.Length, visual2.Geometry.Box.Size.Width, visual2.Geometry.Box.Size.Height,
                                                collision.Geometry.Sphere.Radius, inertial.Mass.Value, inertial.Inertia.Ixx, inertial.Inertia.Ixy,
                                                inertial.Inertia.Ixz, inertial.Inertia.Iyy, inertial.Inertia.Iyz, inertial.Inertia.Izz);

            this.xmlDoc.Load(XmlReader.Create(new StringReader(xml)));
            Link link = this.parser.Parse(this.xmlDoc.DocumentElement);

            Assert.AreEqual(name, link.Name);
            Assert.AreEqual(2, link.Visual.Count);
            Assert.AreEqual(visual1, link.Visual[0]);
            Assert.AreEqual(visual2, link.Visual[1]);
            Assert.AreEqual(1, link.Collision.Count);
            Assert.AreEqual(collision, link.Collision[0]);
            Assert.AreEqual(inertial, link.Inertial);
        }
Exemple #2
0
        public void ConstructCollisionNullName()
        {
            Geometry  geometry  = new Geometry(new Sphere(1));
            Collision collision = new Collision.Builder(null).SetGeometry(geometry).Build();

            Assert.IsNull(collision.Name);
            Assert.AreEqual(geometry, collision.Geometry);
            Assert.AreEqual(new Origin(), collision.Origin);
        }
Exemple #3
0
        public void ConstructCollision()
        {
            String    name      = "name";
            Origin    origin    = new Origin();
            Geometry  geometry  = new Geometry(new Sphere(1));
            Collision collision = new Collision.Builder(name).SetOrigin(origin).SetGeometry(geometry).Build();

            Assert.AreEqual(name, collision.Name);
            Assert.AreEqual(origin, collision.Origin);
            Assert.AreEqual(geometry, collision.Geometry);
        }
Exemple #4
0
        public void EqualsAndHash()
        {
            Collision collision = new Collision.Builder().SetGeometry(new Geometry(new Sphere(1))).Build();
            Collision same      = new Collision.Builder().SetGeometry(new Geometry(new Sphere(1))).Build();
            Collision diff      = new Collision.Builder().SetOrigin(new Origin.Builder().SetXyz(new XyzAttribute(1, 2, 3)).Build())
                                  .SetGeometry(new Geometry(new Sphere(1))).Build();

            Assert.IsTrue(collision.Equals(collision));
            Assert.IsFalse(collision.Equals(null));
            Assert.IsTrue(collision.Equals(same));
            Assert.IsTrue(same.Equals(collision));
            Assert.IsFalse(collision.Equals(diff));
            Assert.AreEqual(collision.GetHashCode(), same.GetHashCode());
            Assert.AreNotEqual(collision.GetHashCode(), diff.GetHashCode());
        }
Exemple #5
0
        /// <summary>
        /// Parses a URDF &lt;collision&gt; element from XML.
        /// </summary>
        /// <param name="node">The XML node of a &lt;collision&gt; element</param>
        /// <returns>A Collision object parsed from the XML</returns>
        public override Collision Parse(XmlNode node)
        {
            ValidateXmlNode(node);

            XmlAttribute nameAttribute   = GetAttributeFromNode(node, UrdfSchema.NAME_ATTRIBUTE_NAME);
            XmlElement   originElement   = GetElementFromNode(node, UrdfSchema.ORIGIN_ELEMENT_NAME);
            XmlElement   geometryElement = GetElementFromNode(node, UrdfSchema.GEOMETRY_ELEMENT_NAME);

            Collision.Builder builder;

            if (nameAttribute != null)
            {
                builder = new Collision.Builder(nameAttribute.Value);
            }
            else
            {
                builder = new Collision.Builder();
            }

            if (originElement != null)
            {
                builder.SetOrigin(this.originParser.Parse(originElement));
            }

            if (geometryElement != null)
            {
                builder.SetGeometry(this.geometryParser.Parse(geometryElement));
            }
            else
            {
                LogMalformedAttribute(UrdfSchema.GEOMETRY_ELEMENT_NAME);
                builder.SetGeometry(DEFAULT_GEOMETRY);
            }

            return(builder.Build());
        }
Exemple #6
0
 public void ConstructCollisionNullOrigin()
 {
     Collision collision = new Collision.Builder().SetOrigin(null).Build();
 }
Exemple #7
0
 public void ConstructCollisionNullGeometry()
 {
     Collision collision = new Collision.Builder().SetGeometry(null).Build();
 }
Exemple #8
0
 public void ConstructCollisionNoGeometry()
 {
     Collision collision = new Collision.Builder().Build();
 }