protected override void Initialize(SensoryMotorSystem machine) { Task.Run(() => { base.Initialize(machine); GpioController controller = GpioController.GetDefault(); PinCommand leftForwardPinCommand = new PinCommand(Engine.Settings.GpioLeftForwardPin, GpioPinDriveMode.Output, controller); PinCommand leftReversePinCommand = new PinCommand(Engine.Settings.GpioLeftReversePin, GpioPinDriveMode.Output, controller); PinCommand rightForwardPinCommand = new PinCommand(Engine.Settings.GpioRightForwardPin, GpioPinDriveMode.Output, controller); PinCommand rightReversePinCommand = new PinCommand(Engine.Settings.GpioRightReversePin, GpioPinDriveMode.Output, controller); if (leftForwardPinCommand.GpioPin != null) { PinCommands.Add(leftForwardPinCommand); } if (leftReversePinCommand.GpioPin != null) { PinCommands.Add(leftReversePinCommand); } if (rightForwardPinCommand.GpioPin != null) { PinCommands.Add(rightForwardPinCommand); } if (rightReversePinCommand.GpioPin != null) { PinCommands.Add(rightReversePinCommand); } //MotorCommands.MoveForward = new MultiPinMotorCommand //{ //} }); }
private void Initialize(string connectionString) { IDataAccessManager database = null; SensoryMotorSystem machine = null; VisualProcessingSystem vision = null; Gala.Data.Runtime.ContextCache newContextCache = null; IRobot robot = null; IChatbotManager chatbots = null; Galatea.Speech.ISpeechModule speech = null; Galatea.Speech.ITextToSpeech tts = null; Galatea.Speech.ISpeechRecognition sr = null; try { // Load Memory Library database = new Gala.Data.Databases.SerializedDataAccessManager(connectionString); database.Initialize(this); // Load Robotics Interfaces InitializationStatusUpdated?.Invoke(this, new EngineInitializationEventArgs(2, EngineInitializationResources.Engine_Initializing_Machine)); machine = new Galahad.Robotics.MachineSystem(); machine.Initialize(this); InitializationStatusUpdated?.Invoke(this, new EngineInitializationEventArgs(20, EngineInitializationResources.Engine_Initializing_Visuals)); vision = new VisualProcessor(_settings.ImagingSettings); vision.Initialize(this); // Become Self-Aware InitializationStatusUpdated?.Invoke(this, new EngineInitializationEventArgs(33, EngineInitializationResources.Engine_Initializing_AI)); robot = SelfAwareness.BecomeSelfAware(this, "Galahad"); newContextCache = new Gala.Data.Runtime.ContextCache(); newContextCache.Initialize(this.ExecutiveFunctions); // Initialize Language Module InitializationStatusUpdated?.Invoke(this, new EngineInitializationEventArgs(50, EngineInitializationResources.Engine_Initializing_Language)); this.User = new Galatea.Runtime.Services.User(_settings.DefaultUserName); chatbots = new ChatbotManager(this.User, _settings); robot.LanguageModel.LoadChatbots(chatbots); // Add Text to Speech (even if silent) speech = new Galahad.Robotics.Speech.SpeechModule(); speech.Initialize(robot.LanguageModel); speech.StaySilent = _settings.SpeechIsSilent; InitializationStatusUpdated?.Invoke(this, new EngineInitializationEventArgs(65, EngineInitializationResources.Engine_Initializing_Language_Speech)); tts = new Galahad.Robotics.Speech.TextToSpeech(speech); tts.CurrentVoice = tts.GetVoice(0); InitializationStatusUpdated?.Invoke(this, new EngineInitializationEventArgs(80, EngineInitializationResources.Engine_Initializing_Language_Recognition)); sr = new Galahad.Robotics.Speech.SpeechRecognition(speech); // Add Memory InitializationStatusUpdated?.Invoke(this, new EngineInitializationEventArgs(90, EngineInitializationResources.Engine_Initializing_Memory)); robot.InitializeMemory(database); // Finalize database = null; machine = null; vision = null; robot = null; newContextCache = null; chatbots = null; speech = null; tts = null; sr = null; } finally { if (database != null) { database.Dispose(); } if (machine != null) { machine.Dispose(); } if (vision != null) { vision.Dispose(); } if (robot != null) { robot.Dispose(); } if (newContextCache != null) { newContextCache.Dispose(); } if (chatbots != null) { chatbots.Dispose(); } if (speech != null) { speech.Dispose(); } if (sr != null) { sr.Dispose(); } } }