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); } }
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()); } } } }