예제 #1
0
        static void RobotControl()
        {
            var team       = RobocupTeam.Yellow;
            var robotId    = 1;
            var robotCount = 8;

            using var output = (ICommandsOutput) new GrSimCommandsOutput(team, IPEndPoint.Parse("127.0.0.1:20011"));

            using var gamepad = EvDevDeviceInfo.EnumerateDevices()
                                .Single(_ => _.DevicePath == "/dev/input/event25").OpenGamepad();

            var commands = Enumerable.Repeat(RobotCommand.Idle, robotCount).ToArray();

            var rnd = new Random();

            while (true)
            {
                Console.WriteLine("{0:#0.000} {1:#0.000} {2:#0.000} {3:#0.000}", gamepad.LeftX.Value, gamepad.LeftY.Value,
                                  gamepad.RightX.Value, gamepad.RightY.Value);
                commands[robotId].VelocityTangent = gamepad.LeftY.Value;
                commands[robotId].VelocityNormal  = gamepad.LeftX.Value;
                commands[robotId].AngularVelocity = gamepad.RightX.Value * 10;
                commands[robotId].EnableDribbler  = true;
                output.PostCommands(commands.ToArray());
                Thread.Sleep(1000 / 60);
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            var devices = EvDevDeviceInfo.EnumerateDevices()
                          .Select(d =>
            {
                var match = Regex.Match(d.DevicePath, @"\/dev\/input\/event([0-9]+)");
                if (match.Success)
                {
                    return(int.Parse(match.Groups[1].Value), d);
                }
                else
                {
                    return(int.MaxValue, d);
                }
            }).OrderBy(x => x.Item1).ThenBy(x => x.Item2).Select(x => x.Item2).ToList();


            void Tab(int count, string s)
            {
                for (var c = 0; c < count; c++)
                {
                    Console.Write("    ");
                }
                Console.WriteLine(s);
            }

            foreach (var dev in devices)
            {
                Console.WriteLine("Device " + dev.DevicePath);
                Tab(1, $"Id: {dev.Id}");
                Tab(1, $"Name: {dev.Name}");
                Tab(1, $"Guessed type: {dev.GuessedDeviceType}");
                Tab(1, "Properties: " + string.Join(",", dev.Properties));
                if (dev.RelativeAxises != null)
                {
                    Tab(1, "Relative axises: " + string.Join(",", dev.RelativeAxises.OrderBy(x => x)));
                }
                if (dev.AbsoluteAxises != null)
                {
                    Tab(1, "Absolute axises: ");
                    foreach (var axis in dev.AbsoluteAxises.OrderBy(x => x.Key))
                    {
                        Tab(2, "\t" + axis.Key);
                        Tab(3, $"Value: {axis.Value.Value}");
                        Tab(3, $"Min: {axis.Value.Min}");
                        Tab(3, $"Max: {axis.Value.Max}");
                        if (axis.Value.Resolution != 0)
                        {
                            Tab(3, $"Resolution: {axis.Value.Resolution}");
                        }
                        if (axis.Value.Flat != 0)
                        {
                            Tab(3, $"Flat: {axis.Value.Flat}");
                        }
                        if (axis.Value.Fuzz != 0)
                        {
                            Tab(3, $"Fuzz: {axis.Value.Fuzz}");
                        }
                    }
                }

                if (dev.Keys != null)
                {
                    Tab(1, "Keys:");
                    foreach (var k in dev.Keys)
                    {
                        Tab(2, k.ToString());
                    }
                }
            }
        }