コード例 #1
0
ファイル: RobotTest.cs プロジェクト: Giessen/neptune
        public void ConstructRobot()
        {
            string name = "robot";
            Dictionary <string, Link>  links  = new Dictionary <string, Link>();
            Dictionary <string, Joint> joints = new Dictionary <string, Joint>();
            Robot robot = new Robot(name, links, joints);

            Link  link1  = new Link.Builder("link1").Build();
            Link  link2  = new Link.Builder("link2").Build();
            Link  link3  = new Link.Builder("link3").Build();
            Joint joint1 = new Joint.Builder("joint1", Joint.JointType.Continuous, link1, link2).Build();
            Joint joint2 = new Joint.Builder("joint2", Joint.JointType.Continuous, link1, link3).Build();

            links.Add(link1.Name, link1);
            links.Add(link2.Name, link2);
            links.Add(link3.Name, link3);
            joints.Add(joint1.Name, joint1);
            joints.Add(joint2.Name, joint2);

            Assert.AreEqual(name, robot.Name);
            Assert.AreEqual(links, robot.Links);
            Assert.AreEqual(joints, robot.Joints);

            foreach (Joint joint in robot.Joints.Values)
            {
                Assert.IsTrue(robot.Links.ContainsValue(joint.Parent));
                Assert.IsTrue(robot.Links.ContainsValue(joint.Child));
            }
        }
コード例 #2
0
ファイル: RobotTest.cs プロジェクト: Giessen/neptune
        public void EqualsAndHash()
        {
            Dictionary <string, Link>  links            = new Dictionary <string, Link>();
            Dictionary <string, Link>  differentLinks   = new Dictionary <string, Link>();
            Dictionary <string, Link>  mostlySameLinks  = new Dictionary <string, Link>();
            Dictionary <string, Joint> joints           = new Dictionary <string, Joint>();
            Dictionary <string, Joint> mostlySameJoints = new Dictionary <string, Joint>();
            Dictionary <string, Joint> differentJoints  = new Dictionary <string, Joint>();


            Link  link1          = new Link.Builder("link1").Build();
            Link  link2          = new Link.Builder("link2").Build();
            Link  link3          = new Link.Builder("link3").Build();
            Joint joint1         = new Joint.Builder("joint1", Joint.JointType.Continuous, link1, link2).Build();
            Joint joint2         = new Joint.Builder("joint2", Joint.JointType.Continuous, link1, link3).Build();
            Link  differentLink1 = new Link.Builder("different_link1").Build();
            Link  differentLink2 = new Link.Builder("different_link2").Build();
            Joint differentJoint = new Joint.Builder("differnt_joint", Joint.JointType.Continuous, differentLink1, differentLink2).Build();

            links.Add(link1.Name, link1);
            links.Add(link2.Name, link2);
            links.Add(link3.Name, link3);
            joints.Add(joint1.Name, joint1);
            joints.Add(joint2.Name, joint2);
            mostlySameLinks.Add(link1.Name, link1);
            mostlySameLinks.Add(link2.Name, link2);
            mostlySameJoints.Add(joint1.Name, joint1);
            differentLinks.Add(differentLink1.Name, differentLink1);
            differentLinks.Add(differentLink2.Name, differentLink2);
            differentJoints.Add(differentJoint.Name, differentJoint);

            Robot robot = new Robot("robot", links, joints);
            Robot same1 = new Robot("robot", links, joints);
            Robot same2 = new Robot("robot", new Dictionary <string, Link>(links), new Dictionary <string, Joint>(joints));
            Robot diff1 = new Robot("different_robot", links, joints);
            Robot diff2 = new Robot("robot", differentLinks, differentJoints);
            Robot diff3 = new Robot("robot", links, mostlySameJoints);
            Robot diff4 = new Robot("robot", mostlySameLinks, joints);

            Assert.IsTrue(robot.Equals(robot));
            Assert.IsFalse(robot.Equals(null));
            Assert.IsTrue(robot.Equals(same1));
            Assert.IsTrue(robot.Equals(same2));
            Assert.IsTrue(same1.Equals(robot));
            Assert.IsTrue(same2.Equals(robot));
            Assert.IsFalse(robot.Equals(diff1));
            Assert.IsFalse(robot.Equals(diff2));
            Assert.IsFalse(robot.Equals(diff3));
            Assert.IsFalse(robot.Equals(diff4));
            Assert.AreEqual(robot.GetHashCode(), robot.GetHashCode());
            Assert.AreEqual(robot.GetHashCode(), same1.GetHashCode());
            Assert.AreEqual(robot.GetHashCode(), same2.GetHashCode());
            Assert.AreNotEqual(robot.GetHashCode(), diff1.GetHashCode());
            Assert.AreNotEqual(robot.GetHashCode(), diff2.GetHashCode());
            Assert.AreNotEqual(robot.GetHashCode(), diff3.GetHashCode());
            Assert.AreNotEqual(robot.GetHashCode(), diff4.GetHashCode());
        }
コード例 #3
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
        public void ConstructLinkNameOnly()
        {
            string name = "linkName";
            Link link = new Link.Builder(name).Build();

            Assert.AreEqual(name, link.Name);
            Assert.IsNull(link.Inertial);
            Assert.AreEqual(0, link.Visual.Count);
            Assert.AreEqual(0, link.Collision.Count);
        }
コード例 #4
0
        public static void Initialize(TestContext context)
        {
            Link  parent = new Link.Builder(PARENT_JOINT_NAME).Build();
            Link  child  = new Link.Builder(CHILD_JOINT_NAME).Build();
            Joint mimic  = new Joint.Builder(MIMIC_JOINT_NAME, Joint.JointType.Continuous, parent, child).Build();

            linkDictionary.Add(parent.Name, parent);
            linkDictionary.Add(child.Name, child);
            jointDictionary.Add(mimic.Name, mimic);
        }
コード例 #5
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
        public void ConstructLinkTwoOfThreeBuilderSetters()
        {
            string name = "linkName";
            Inertial inertial = new Inertial(new Mass(1), new Inertia(1, 1, 1, 1, 1, 1));
            List<Collision> collisions = new List<Collision>();
            Link link = new Link.Builder(name).SetInertial(inertial).SetCollision(collisions).Build();

            Assert.AreEqual(name, link.Name);
            Assert.AreEqual(inertial, link.Inertial);
            Assert.AreEqual(0, link.Visual.Count);
            Assert.AreEqual(collisions, link.Collision);
        }
コード例 #6
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
        public void ConstructLinkChainBuilderSetters()
        {
            string name = "linkName";
            Inertial inertial = new Inertial(new Mass(1), new Inertia(1, 1, 1, 1, 1, 1));
            Visual visual = new Visual.Builder(new Geometry(new Sphere(1))).Build();
            List<Collision> collisions = new List<Collision>();
            Link link = new Link.Builder(name).SetInertial(inertial).SetVisual(visual).SetCollision(collisions).Build();

            Assert.AreEqual(name, link.Name);
            Assert.AreEqual(inertial, link.Inertial);
            Assert.AreEqual(visual, link.Visual[0]);
            Assert.AreEqual(collisions, link.Collision);
        }
コード例 #7
0
 protected Configuration Deploy()
 {
     for (int i = 0; i < players.Length; ++i)
     {
         Player player = players[i];
         player.SetID(i);
         links[i] = new Link.Builder()
                    .IP(peerIPs[i])
                    .Port(peerPorts[i])
                    .Bind(player.ShouldBind())
                    .ReceiveTimeout(receiveTimeout)
                    .SendTimeout(sendTimeout)
                    .Build();
         threading.Submit(i, new ThreadStart(player.Replicate));
     }
     return(this);
 }
コード例 #8
0
ファイル: RobotTest.cs プロジェクト: Giessen/neptune
        public void ToStringRobot()
        {
            Dictionary <string, Link>  links  = new Dictionary <string, Link>();
            Dictionary <string, Joint> joints = new Dictionary <string, Joint>();
            Robot robot = new Robot("robo", links, joints);

            Link  link1  = new Link.Builder("link1").Build();
            Link  link2  = new Link.Builder("link2").Build();
            Joint joint1 = new Joint.Builder("joint1", Joint.JointType.Fixed, link1, link2).Build();

            links.Add(link1.Name, link1);
            links.Add(link2.Name, link2);
            joints.Add(joint1.Name, joint1);

            Assert.AreEqual("<robot name=\"robo\">\r\n<link name=\"link1\"/>\r\n<link name=\"link2\"/>\r\n<joint name=\"joint1\" type=\"fixed\">\r\n<parent link=\"link1\"/>\r\n<child link=\"link2\"/>\r\n</joint>\r\n</robot>",
                            robot.ToString().Replace("  ", ""));
        }
コード例 #9
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
        public void EqualsAndHash()
        {
            Inertial inertial = new Inertial(new Mass(1), new Inertia(1, 1, 1, 1, 1, 1));
            Visual visual = new Visual.Builder(new Geometry(new Sphere(1))).Build();
            List<Visual> visualList = new List<Visual>();
            List<Visual> diffVisualList = new List<Visual>();
            List<Collision> collisionList = new List<Collision>();

            visualList.Add(visual);
            diffVisualList.Add(visual);
            diffVisualList.Add(new Visual.Builder(new Geometry(new Box(new SizeAttribute(1, 2, 3)))).Build());

            Link link = new Link.Builder("link").SetInertial(inertial).SetVisual(visual).SetCollision(collisionList).Build();
            Link same1 = new Link.Builder("link").SetInertial(inertial).SetVisual(visual).SetCollision(collisionList).Build();
            Link same2 = new Link.Builder("link").SetInertial(inertial).SetVisual(visualList).SetCollision(collisionList).Build();
            Link same3 = new Link.Builder("link").SetInertial(inertial).SetVisual(visualList).Build();
            Link diff1 = new Link.Builder("different_link").SetInertial(inertial).SetVisual(visual).SetCollision(collisionList).Build();
            Link diff2 = new Link.Builder("link").SetVisual(visual).SetCollision(collisionList).Build();
            Link diff3 = new Link.Builder("link").SetInertial(inertial).SetCollision(collisionList).Build();
            Link diff4 = new Link.Builder("link").SetInertial(inertial).SetVisual(diffVisualList).SetCollision(collisionList).Build();
            Link diff5 = new Link.Builder("link").Build();

            Assert.IsTrue(link.Equals(link));
            Assert.IsFalse(link.Equals(null));
            Assert.IsTrue(link.Equals(same1));
            Assert.IsTrue(link.Equals(same2));
            Assert.IsTrue(link.Equals(same3));
            Assert.IsTrue(same1.Equals(link));
            Assert.IsTrue(same2.Equals(link));
            Assert.IsTrue(same3.Equals(link));
            Assert.IsFalse(link.Equals(diff1));
            Assert.IsFalse(link.Equals(diff2));
            Assert.IsFalse(link.Equals(diff3));
            Assert.IsFalse(link.Equals(diff4));
            Assert.IsFalse(link.Equals(diff5));
            Assert.AreEqual(link.GetHashCode(), link.GetHashCode());
            Assert.AreEqual(link.GetHashCode(), same1.GetHashCode());
            Assert.AreEqual(link.GetHashCode(), same2.GetHashCode());
            Assert.AreEqual(link.GetHashCode(), same3.GetHashCode());
            Assert.AreNotEqual(link.GetHashCode(), diff1.GetHashCode());
            Assert.AreNotEqual(link.GetHashCode(), diff2.GetHashCode());
            Assert.AreNotEqual(link.GetHashCode(), diff3.GetHashCode());
            Assert.AreNotEqual(link.GetHashCode(), diff4.GetHashCode());
            Assert.AreNotEqual(link.GetHashCode(), diff5.GetHashCode());
        }
コード例 #10
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
        public void ConstructLink()
        {
            string name = "linkName";
            Inertial inertial = new Inertial(new Mass(1), new Inertia(1, 1, 1, 1, 1, 1));
            List<Visual> visuals = new List<Visual>();
            visuals.Add(new Visual.Builder(new Geometry(new Sphere(1))).Build());
            List<Collision> collisions = new List<Collision>();

            Link.Builder builder = new Link.Builder(name);
            builder.SetInertial(inertial);
            builder.SetVisual(visuals);
            builder.SetCollision(collisions);
            Link link = builder.Build();

            Assert.AreEqual(name, link.Name);
            Assert.AreEqual(inertial, link.Inertial);
            Assert.AreEqual(visuals, link.Visual);
            Assert.AreEqual(visuals[0], link.Visual[0]);
            Assert.AreEqual(collisions, link.Collision);
        }
コード例 #11
0
ファイル: LinkParser.cs プロジェクト: Giessen/neptune
        /// <summary>
        /// Parses a URDF &lt;link&gt; element from XML.
        /// </summary>
        /// <param name="node">The XML node of a &lt;link&gt; element</param>
        /// <returns>A Link object parsed from the XML</returns>
        public override Link Parse(XmlNode node)
        {
            ValidateXmlNode(node);

            XmlAttribute nameAttribute     = GetAttributeFromNode(node, UrdfSchema.NAME_ATTRIBUTE_NAME);
            XmlElement   inertialElement   = GetElementFromNode(node, UrdfSchema.INERTIAL_ELEMENT_NAME);
            XmlNodeList  Visuals           = node.SelectNodes(UrdfSchema.VISUAL_ELEMENT_NAME);
            XmlNodeList  collisionElements = node.SelectNodes(UrdfSchema.COLLISION_ELEMENT_NAME);

            Link.Builder builder;

            if (nameAttribute == null)
            {
                LogMissingRequiredAttribute(UrdfSchema.NAME_ATTRIBUTE_NAME);
                builder = new Link.Builder(Link.DEFAULT_NAME);
            }
            else
            {
                builder = new Link.Builder(nameAttribute.Value);
            }

            if (inertialElement != null)
            {
                builder.SetInertial(this.inertialParser.Parse(inertialElement));
            }

            if (Visuals != null)
            {
                builder.SetVisual(ParseVisuals(Visuals));
            }

            if (collisionElements != null)
            {
                builder.SetCollision(ParseCollisions(collisionElements));
            }

            return(builder.Build());
        }
コード例 #12
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
 public void ConstructLinkNoName()
 {
     Link link = new Link.Builder("").Build();
 }
コード例 #13
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
 public void BuilderNullCollision()
 {
     Collision collision = null;
     Link link = new Link.Builder("link").SetCollision(collision).Build();
 }
コード例 #14
0
        private Joint.Builder ConstructBuilder(XmlAttribute nameAttribute, XmlAttribute typeAttribute,
                                               XmlElement parentElement, XmlElement childElement)
        {
            string name;

            Joint.JointType type;
            Link            parent;
            Link            child;

            if (nameAttribute == null)
            {
                LogMissingRequiredAttribute(UrdfSchema.NAME_ATTRIBUTE_NAME);
                name = Joint.DEFAULT_NAME;
            }
            else
            {
                name = nameAttribute.Value;
            }

            if (typeAttribute == null)
            {
                LogMissingRequiredAttribute(UrdfSchema.JOINT_TYPE_ATTRIBUTE_NAME);
                type = Joint.JointType.Unknown;
            }
            else
            {
                type = GetJointTypeFromName(typeAttribute.Value);
            }

            if (parentElement == null)
            {
                LogMissingRequiredElement(UrdfSchema.PARENT_ELEMENT_NAME);
                parent = new Link.Builder(Link.DEFAULT_NAME).Build();
            }
            else
            {
                string parentLinkName = this.parentParser.Parse(parentElement);

                if (!this.linkDictionary.ContainsKey(parentLinkName))
                {
                    //Logger.Warn("Unknown link name specified as <joint> parent: {0}", parentLinkName);
                    parent = new Link.Builder(parentLinkName).Build();
                }
                else
                {
                    parent = this.linkDictionary[parentLinkName];
                }
            }

            if (childElement == null)
            {
                LogMissingRequiredElement(UrdfSchema.CHILD_ELEMENT_NAME);
                child = new Link.Builder(Link.DEFAULT_NAME).Build();
            }
            else
            {
                string childLinkName = this.childParser.Parse(childElement);

                if (!this.linkDictionary.ContainsKey(childLinkName))
                {
                    //Logger.Warn("Unknown link name specified as <joint> child: {0}", childLinkName);
                    child = new Link.Builder(childLinkName).Build();
                }
                else
                {
                    child = this.linkDictionary[childLinkName];
                }
            }

            return(new Joint.Builder(name, type, parent, child));
        }
コード例 #15
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
 public void BuilderNullCollisionList()
 {
     List<Collision> collision = null;
     Link link = new Link.Builder("link").SetCollision(collision).Build();
 }
コード例 #16
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
 public void BuilderNullInertial()
 {
     Link link = new Link.Builder("link").SetInertial(null).Build();
 }
コード例 #17
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
 public void BuilderNullVisualList()
 {
     List<Visual> visual = null;
     Link link = new Link.Builder("link").SetVisual(visual).Build();
 }
コード例 #18
0
ファイル: LinkTest.cs プロジェクト: Giessen/neptune
 public void BuilderNullVisual()
 {
     Visual visual = null;
     Link link = new Link.Builder("link").SetVisual(visual).Build();
 }