Exemple #1
0
        public RobotDynamics(string name = DEFNAME) : base(name)
        {
            l = 0.2;  //z
            h = 0.05; //y
            w = 0.1;  //x
            Body.Mass.Value = 0.5;
            Body.Name       = "Body";
            AddChild(Body);
            Body.SynchMeAfter += SynchWheelsToBodyPos;

            FloorForce = new ForceCenter(1, new Position3D(0, 1, 0), null);
            Body.AddForce(FloorForce);
            SynchMassGeometry();

            for (int i = 0; i < 4; i++)
            {
                wheels.Add(RbWheel.GetStandart());
            }
            wheels[0].localPos = new Vector3D(w / 2, 0, l / 2);
            wheels[1].localPos = new Vector3D(w / 2, 0, -l / 2);
            wheels[2].localPos = new Vector3D(-w / 2, 0, l / 2);
            wheels[3].localPos = new Vector3D(-w / 2, 0, -l / 2);
            //double moment = 0.1;
            //foreach(var w in wheels) {
            //    Body.AddChild(w);
            //    w.Mx = moment;
            //    moment += moment;
            //}
        }
Exemple #2
0
        public void RespectFixedPositions()
        {
            var center = new ForceCenter <Node>();
            var nodes  = new List <Node>
            {
                new Node {
                    Fx = 0, Fy = 0
                },
                new Node(),
                new Node(),
            };
            var s = new Simulation <Node>(null)
                    .AddForce("center", center).Stop();

            s.Nodes = nodes;
            s.Tick();
            Assert.AreEqual(0, nodes[0].X);
            Assert.AreEqual(0, nodes[0].Y);
            Assert.AreEqual(0, nodes[0].Fx);
            Assert.AreEqual(0, nodes[0].Fy);
            Assert.AreEqual(0, nodes[0].Vx);
            Assert.AreEqual(0, nodes[0].Vy);
        }
Exemple #3
0
        public void RepositionNodes()
        {
            var center = new ForceCenter <Node>(0, 0);
            var nodes  = new List <Node>
            {
                new Node {
                    X = 100, Y = 0
                },
                new Node {
                    X = 200, Y = 0
                },
                new Node {
                    X = 300, Y = 0
                },
            };
            var s = new Simulation <Node>(null)
                    .AddForce("center", center).Stop();

            s.Nodes = nodes;
            s.Tick();
            Assert.AreEqual(-100, nodes[0].X);
            Assert.AreEqual(0, nodes[1].X);
            Assert.AreEqual(100, nodes[2].X);
        }