diff --git a/ADIS_Csharp/RobotConsoleClient/Program.cs b/ADIS_Csharp/RobotConsoleClient/Program.cs index a11f41e..6ee2b57 100644 --- a/ADIS_Csharp/RobotConsoleClient/Program.cs +++ b/ADIS_Csharp/RobotConsoleClient/Program.cs @@ -10,12 +10,21 @@ namespace RobotConsoleClient var com = MqttPublisherSubscriber.Instance; com.Connect("192.168.20.22", "ADIS", "TEST"); var robotStationary = new Robot(com); + var robotMobile = new Robot(com); robotStationary.SplitFlap.SplitFlapDisplayChanged += SplitFlap_SplitFlapDisplayChanged; //Console.ReadLine(); Thread.Sleep(1000); - robotStationary.SplitFlap.ConfigureSplitflap(1, 21); + robotStationary.SplitFlap.ConfigureSplitflap(setupId: 1, hardwareId: 21); Thread.Sleep(1000); robotStationary.SplitFlap.InitializeAllSplitflaps(); + + Thread.Sleep(1000); + robotMobile.RobotControl.SetSpeed(1000); + robotMobile.RobotControl.Turn(-10); + robotMobile.RobotControl.SetSpeed(-500); + robotMobile.RobotControl.StopMovement(); + robotMobile.RobotControl.SetMobilityMode(automatic: true); + } private static void SplitFlap_SplitFlapDisplayChanged(object? sender, RobotLib.SplitFlap.SplitFlapDisplayEventArgs e) diff --git a/ADIS_Csharp/RobotLib/Robot.cs b/ADIS_Csharp/RobotLib/Robot.cs index 84c106a..61b5d36 100644 --- a/ADIS_Csharp/RobotLib/Robot.cs +++ b/ADIS_Csharp/RobotLib/Robot.cs @@ -1,4 +1,5 @@ using RobotLib.Communication; +using RobotLib.RobotControl; using RobotLib.SplitFlap; using System.Threading; @@ -12,6 +13,7 @@ namespace RobotLib //Buzzer = new DevBuzzer(Com); //Battery = new DevBattery(Com); SplitFlap = new DevSplitFlap(com); + RobotControl = new DevRobot(com); Timer timer = new Timer(TimerCallback); timer.Change(2000, 10000); @@ -22,6 +24,7 @@ namespace RobotLib //public DevBuzzer Buzzer { get; } //public DevBattery Battery { get; } public DevSplitFlap SplitFlap { get; } + public DevRobot RobotControl { get; } public void Connect(string host, int port) { diff --git a/ADIS_Csharp/RobotLib/RobotControl/DevRobot.cs b/ADIS_Csharp/RobotLib/RobotControl/DevRobot.cs new file mode 100644 index 0000000..dfa8b8e --- /dev/null +++ b/ADIS_Csharp/RobotLib/RobotControl/DevRobot.cs @@ -0,0 +1,37 @@ +using RobotLib.Communication; +using System.Collections.Generic; +using System.Text.Json; + +namespace RobotLib.RobotControl +{ + public class DevRobot : DevBase + { + private const string TOPIC_MOBILE_MODE = "/mobile/cmd/mode/"; + private const string TOPIC_MOBILE_NAV_TURN = "/mobile/cmd/nav/turn/"; + private const string TOPIC_MOBILE_NAV_MOVE = "/mobile/cmd/nav/move/"; + private const string TOPIC_MOBILE_NAV_STOP = "/mobile/cmd/nav/stop/"; + + public DevRobot(IPublisherSubscriber com) : base(com, new List() { }) { } + + public void SetMobilityMode(bool automatic) + { + string payload = JsonSerializer.Serialize(new Dictionary() { { "automatic", automatic } }); + base.SendMessage(TOPIC_MOBILE_MODE, payload); + } + + public void Turn(int angle) + { + base.SendMessage(TOPIC_MOBILE_NAV_TURN, angle.ToString()); + } + + public void SetSpeed(int speed) + { + base.SendMessage(TOPIC_MOBILE_NAV_MOVE, speed.ToString()); + } + + public void StopMovement() + { + base.SendMessage(TOPIC_MOBILE_NAV_STOP, true.ToString()); + } + } +}