public SLAM(double mapWidth, double mapHeight, double cellSize, string port) { robot = new Robot (); map = new SlamMap (robot, mapWidth, mapHeight, cellSize); mapView = new MapView (map); ekfSlam = new EkfSlam (1); // 1 degree per scan. proxy = SerialProxy.GetInstance; proxy.Port = port; proxy.OdometryUpdated += new EventHandler<OdometryUpdateEventArgs> (SerialProxy_OdometryUpdate); proxy.Scanned += new EventHandler<ScanEventArgs> (SerialProxy_Scan); window = new MapWindow (mapView); window.DeleteEvent += delegate { proxy.Release (); }; //AddSampleLandmarks (); }
private TextView textView; // Textview to hold landmark information. #endregion Fields #region Constructors /// <summary> /// Initializes a new instance of the <see cref="SLAM.MapWindow"/> class. /// </summary> /// <param name="mapView">Map view contained in this window.</param> public MapWindow(MapView mapView) : base("Map") { robot = mapView.RobotView.Robot; this.mapView = mapView; // Subscribe to events. mapView.MapModel.MapUpdated += new EventHandler<MapUpdateEventArgs> (Map_Update); mapView.RobotView.Robot.RobotUpdated += new EventHandler<RobotUpdateEventArgs> (Robot_Update); SetPosition (WindowPosition.Center); Resizable = false; DeleteEvent += delegate { Application.Quit (); }; TextBuffer textBuffer = new TextBuffer (new TextTagTable ()); textView = new TextView (); textView.Indent = 10; textView.Editable = false; textView.Buffer = textBuffer; textView.CursorVisible = false; textView.SetSizeRequest (mapView.ViewWidth, 150); foreach (Landmark landmark in mapView.MapModel.Landmarks) { this.textView.Buffer.Text += landmark.ToString (); } ScrolledWindow scrolledWindow = new ScrolledWindow (); scrolledWindow.Add (textView); commandEntry = new Entry (); commandEntry.Activated += CommandEntry_OnActivated; sendButton = new Button ("Send"); sendButton.Clicked += SendButton_OnClick; HBox hbox = new HBox (false, 0); hbox.Add (commandEntry); hbox.Add (sendButton); VBox vbox = new VBox (false, 0); vbox.Add (this.mapView); vbox.Add (scrolledWindow); vbox.Add (hbox); Add (vbox); Shown += OnShown; }