Пример #1
0
        public static Transform GetTransform([NotNull] this IDirectional directional)
        {
            Ensure.Any.IsNotNull(directional, nameof(directional));

            var basis = BasisExtensions.CreateFromAxes(directional.Right, directional.Up, directional.Forward * -1);

            return(new Transform(basis, directional.Origin));
        }
Пример #2
0
        public static Transform GetTransform(this IDirectional directional)
        {
            Ensure.That(directional, nameof(directional)).IsNotNull();

            var basis = new Basis(directional.Right, directional.Up, directional.Forward * -1);

            return(new Transform(basis, directional.Origin));
        }
Пример #3
0
 public static T GetFacing <T>(this IDirectional <T> directional, Direction direction)
 {
     return(direction switch
     {
         Direction.North => directional.North,
         Direction.South => directional.South,
         Direction.West => directional.West,
         Direction.East => directional.East,
         Direction.Up => directional.Up,
         Direction.Down => directional.Down,
         _ => throw new System.NotImplementedException()
     });
 public MotorControllerSimulator(IDirectional <IMotorActor> motorActors, IMotorSpeedConverter motorSpeedConverter)
 {
     this.motorActors         = motorActors;
     this.motorSpeedConverter = motorSpeedConverter;
 }
Пример #5
0
        static void Main(string[] args)
        {
            // sudo docker run -it --rm --name motor --privileged derungsapp/icarus.actuators.motor.manualtests

            // test if this test is run on ARM64 and Linux (Nvidia Jetson Nano)
            Console.WriteLine($"This test runs on {RuntimeInformation.OSDescription} {RuntimeInformation.ProcessArchitecture}");
            if (!RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.ProcessArchitecture != Architecture.Arm64)
            {
                ConsoleHelper.WriteLine("This manual test is not supported on this machine. \nPlease make sure to run the test on the actual device with the sensors wired. \nPress 'c' to continue in debug mode", ConsoleColor.Red);
                var key = Console.ReadKey();

                if (key.Key != ConsoleKey.C)
                {
                    return;
                }
            }

#if !DEBUG
            var serviceCollection = new ServiceCollection();
            MotorModule.Initialize(serviceCollection);
            var serviceProvider = serviceCollection.BuildServiceProvider();
            var motorActors     = serviceProvider.GetService <IDirectional <IMotorActor> >();
#else
            IDirectional <IMotorActor> motorActors = null;
#endif
            Console.WriteLine("Press any key to start");
            Console.ReadKey();

            motorActors?.Right?.SetSpeed(0.5);
            Console.WriteLine("Right motor spinning forward? Press 'Enter' for yes");
            if (Console.ReadKey().Key == ConsoleKey.Enter)
            {
                ConsoleHelper.WriteLine("Test right motor forward passed", ConsoleColor.Green);
            }
            else
            {
                ConsoleHelper.WriteLine("Test right motor forward failed", ConsoleColor.Red);
            }

            motorActors?.Right?.SetSpeed(-0.5);
            Console.WriteLine("Right motor spinning backwards? Press 'Enter' for yes");
            if (Console.ReadKey().Key == ConsoleKey.Enter)
            {
                ConsoleHelper.WriteLine("Test right motor backwards passed", ConsoleColor.Green);
            }
            else
            {
                ConsoleHelper.WriteLine("Test right motor backwards failed", ConsoleColor.Red);
            }

            motorActors?.Left?.SetSpeed(0.5);
            Console.WriteLine("Left motor spinning forward? Press 'Enter' for yes");
            if (Console.ReadKey().Key == ConsoleKey.Enter)
            {
                ConsoleHelper.WriteLine("Test left motor forward passed", ConsoleColor.Green);
            }
            else
            {
                ConsoleHelper.WriteLine("Test left motor forward failed", ConsoleColor.Red);
            }

            motorActors?.Left?.SetSpeed(-0.5);
            Console.WriteLine("Left motor spinning backwards? Press 'Enter' for yes");
            if (Console.ReadKey().Key == ConsoleKey.Enter)
            {
                ConsoleHelper.WriteLine("Test left motor backwards passed", ConsoleColor.Green);
            }
            else
            {
                ConsoleHelper.WriteLine("Test left motor backwards failed", ConsoleColor.Red);
            }
        }
 public HallEffectController(IDirectional <IHallEffectSensor> halleffectSensors)
 {
     this.halleffectSensors = halleffectSensors;
 }
Пример #7
0
 /// <summary>
 /// Returns whether or not the giving <see cref="IDirectional" /> is parallel to this plane
 /// </summary>
 public bool IsParallelTo(IDirectional passedDirectional) => IsParallelTo(passedDirectional.Direction);
Пример #8
0
 /// <summary>
 /// Determines if this <see cref="IDirectional" /> and the passed <see cref="IDirectional" /> are parallel.
 /// </summary>
 public static bool IsParallelTo(this IDirectional thisDirectional, IDirectional otherDirectional)
 {
     return(thisDirectional.Direction.IsParallelTo(otherDirectional.Direction));
 }