/// <summary> /// Shows how to move single motor to desired position /// </summary> /// <param name="topas"></param> /// <param name="motor"></param> public void TweakMotorPosition(MotorData motor) { if (motor == null) { throw new ArgumentNullException(nameof(motor), $"{nameof (motor)} is null."); } Console.WriteLine(@"Press Up/Down arrow keys to move motor " + motor.Title + ". Press Escape to finish motor position tweaking."); var motorIndex = motor.Index; do { var key = Console.ReadKey(true); switch (key.Key) { case ConsoleKey.Escape: return; case ConsoleKey.UpArrow: var current = Topas.MotorsService.GetMotor(motorIndex).TargetPosition; Topas.MotorsService.SetTargetPosition(motorIndex, current + 8); //steps, if you want to use units use SetMotorTargetPositionInUnits break; case ConsoleKey.DownArrow: Topas.MotorsService.SetTargetPositionRelative(motorIndex, -8); //functionality code to UpArrow break; default: Console.WriteLine("Invalid key. Use Escape to stop motor position adjustment, Up and Down arrows to move motor."); break; } } while (true); }
/// <summary> /// process the response from server and update the properties /// </summary> protected override bool ProcessResponse(HttpResponse response) { string json = response.Result; // deserialize MotorData = JsonConvert.DeserializeObject <MotorData>(json); return(true); }
// Send byte to the 74HCT595 demux private void latch_tx() { MotorLatch.Write(false); for (int i = 8; i >= 0; i--) { MotorClk.Write(false); MotorData.Write((latch_state & (1 << i)) > 0); MotorClk.Write(true); } MotorLatch.Write(true); }
public void Dispose() { latch_state = 0; latch_tx(); //if (UsedDriver == Drivers.Driver1 || UsedDriver == Drivers.Both) //{ // Motor1A.Dispose(); // Motor1B.Dispose(); //} //if (UsedDriver == Drivers.Driver2 || UsedDriver == Drivers.Both) //{ Motor2A.Dispose(); Motor2B.Dispose(); //} MotorLatch.Dispose(); MotorEnable.Dispose(); MotorClk.Dispose(); MotorData.Dispose(); }
private PartData ParsePartData(Transform trans, PartUnit partUnit, string customValue) { PartData partData; switch (partUnit.type) { case PartType.Bone: { var data = new BoneData(); for (int i = 0; i < trans.childCount; i++) { var t = trans.GetChild(i); if (!t.name.StartsWith(ModelFBXParser.GroupMark)) { continue; } var group = t; for (int j = 0; j < @group.childCount; j++) { var child = @group.GetChild(j); data.num = customValue; var childName = ModelFBXParser.ToLegalName(child.name); data.items.Add(childName); } break; } partData = data; break; } case PartType.MC: { var data = new MCData(); data.type = 1; partData = data; break; } case PartType.Wire: { var data = new WireData(); data.num = customValue; partData = data; break; } case PartType.Servo: { var data = new ServoData(); data.id = int.Parse(customValue); data.type = 1; data.angle = 120; partData = data; break; } case PartType.Motor: { var data = new MotorData(); data.id = int.Parse(customValue); partData = data; break; } case PartType.Sensor: { var data = new SensorData(); data.id = int.Parse(customValue); partData = data; break; } default: { partData = new PartData(); break; } } partData.name = trans.name; partData.source = partUnit.source; partData.transform = new DTransform(); partData.transform.position = trans.localPosition; partData.transform.angle = trans.localEulerAngles; partData.transform.scale = GetScale(trans, partData.partType); partData.parent = GetParentName(trans); return(partData); }
/// <summary> /// constructor /// </summary> public MotorClient(string id, IotHttpClient client, IotNode parent) : base(id, client, parent) { MotorData = new MotorData(); }
private void JaguarCtrl_Load(object sender, EventArgs e) { for (int i = 0; i < 2; i++) { armMotor[i] = new MotorData(); } realJaguar.connectRobot (jaguarSetting.RobotID); //Initialize Robot Variables and Google Earth //gEarth.Initialize(this); if (Simulating()) checkBoxHardware.Checked = false; else checkBoxHardware.Checked = true; //for Axis camera try { // Set properties, deciding what url completion to use by MediaType. myAMC.MediaUsername = jaguarSetting.CameraUser; myAMC.MediaPassword = jaguarSetting.CameraPWD; myAMC.MediaType = "mjpeg"; myAMC.MediaURL = CompleteURL(jaguarSetting.CameraIP + ":" + jaguarSetting .CameraPort , "mjpeg"); myAMC.AudioConfigURL = "http://" + jaguarSetting.CameraIP + ":" + jaguarSetting .CameraPort + "/axis-cgi/view/param.cgi?camera=1&action=list&group=Audio,AudioSource.A0"; myAMC.ToolbarConfiguration = "default, + audiocontrol,+ rec"; myAMC.AudioReceiveStop(); // Start the streaming myAMC.Play(); myAMC.AudioReceiveURL = "http://" + jaguarSetting.CameraIP + ":" + jaguarSetting .CameraPort + "/axis-cgi/audio/receive.cgi"; myAMC.Volume = 0; //myAMC.AudioReceiveStart(); myAMC.AudioTransmitURL = "http://" + jaguarSetting.CameraIP + ":" + jaguarSetting.CameraPort + "/axis-cgi/audio/transmit.cgi"; } catch (Exception ex) { MessageBox.Show(this, "Unable to play stream: " + ex.Message); } //for joystick control if (InitDirectInput()) tmrJoyStickPoll.Enabled = true; //for GPS/IMU communication if ((jaguarSetting.IMUIP !="0.0.0.0") && (jaguarSetting .GPSIP != "0.0.0.0")) startComm (); // for laser scan if ((jaguarSetting.LaserRangeIP != "0.0.0.0") && (jaguarSetting.LaserRangePort != 0)) { startCommLaser(); btnLaserScan.Enabled = true; } else btnLaserScan.Enabled = false; drawLaserBackground(); MOTDIR = jaguarSetting .MotorDir; btnDisArm.Visible = false; pictureBoxStuckDetect.BackColor = Color.Green; btnScan.Enabled = false; }
private void JaguarCtrl_Load(object sender, EventArgs e) { for (int i = 0; i < 2; i++) { armMotor[i] = new MotorData(); } myJaguar.connectRobot (jaguarSetting.RobotID); //for google earth application cenerLatitude = jaguarSetting.GoogleEarthStartLat.ToString (); centerLongitude = jaguarSetting.GoogleEarthStartLong.ToString(); txtStartLat.Text = cenerLatitude; txtStartLong.Text = centerLongitude; if (this.DesignMode == false) { googleEarth = new ApplicationGEClass(); MessageBox.Show("Waiting for GoogleEarth to be loaded…. \n This may take a while.When the GoogleEarth is shown, click OK to continue.", "DrRobot Jaguar Control", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); //ShowWindowAsync(googleEarth.GetMainHwnd(), 0); GEHrender = (IntPtr)googleEarth.GetRenderHwnd(); GEParentHrender = GetParent(GEHrender); MoveWindow(GEHrender, 0, 0, this.panelGE.Width, this.panelGE.Height, true); SetParent(GEHrender, this.panelGE.Handle); // don'tdo it now , we keep google earth window to clear the KML data in temporary node //Hide the main GE window //SetWindowPos(googleEarth.GetMainHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE + SWP_HIDEWINDOW); } //for Axis camera try { // Set properties, deciding what url completion to use by MediaType. myAMC.MediaUsername = jaguarSetting.CameraUser; myAMC.MediaPassword = jaguarSetting.CameraPWD; myAMC.MediaType = "mjpeg"; myAMC.MediaURL = CompleteURL(jaguarSetting.CameraIP + ":" + jaguarSetting .CameraPort , "mjpeg"); myAMC.AudioConfigURL = "http://" + jaguarSetting.CameraIP + ":" + jaguarSetting .CameraPort + "/axis-cgi/view/param.cgi?camera=1&action=list&group=Audio,AudioSource.A0"; /* myAMC.PTZControlURL = "http://" + jaguarSetting.CameraIP + ":" + jaguarSetting.CameraPort + "/axis-cgi/com/ptz.cgi"; myAMC.UIMode = "ptz-absolute"; myAMC.ShowToolbar = true; myAMC.StretchToFit = true; myAMC.EnableContextMenu = true; myAMC.ToolbarConfiguration = "default,+ptz"; */ myAMC.ToolbarConfiguration = "default, + audiocontrol,+ rec"; myAMC.AudioReceiveStop(); // Start the streaming myAMC.Play(); myAMC.AudioReceiveURL = "http://" + jaguarSetting.CameraIP + ":" + jaguarSetting .CameraPort + "/axis-cgi/audio/receive.cgi"; myAMC.Volume = 100; //myAMC.AudioReceiveStart(); myAMC.AudioTransmitURL = "http://" + jaguarSetting.CameraIP + ":" + jaguarSetting.CameraPort + "/axis-cgi/audio/transmit.cgi"; } catch (Exception ex) { MessageBox.Show(this, "Unable to play stream: " + ex.Message); } //for joystick control if (InitDirectInput()) tmrJoyStickPoll.Enabled = true; //for GPS/IMU communication if ((jaguarSetting.IMUIP !="0.0.0.0") && (jaguarSetting .GPSIP != "0.0.0.0")) { startComm (); } // for laser scan if ((jaguarSetting.LaserRangeIP != "0.0.0.0") && (jaguarSetting.LaserRangePort != 0)) { startCommLaser(); btnLaserScan.Enabled = true; } else { btnLaserScan.Enabled = false; } drawLaserBackground(); MOTDIR = jaguarSetting .MotorDir; if (jaguarSetting.RobotType.ToLower() == "jaguar") { armPosIndicator.SetArmPositionIndicatorParameters(0,0); pictureBoxRobot.SendToBack(); armPosIndicator.BringToFront(); lblMot1.Text = "Front Arm Motor:"; lblMot2.Text = "Reserved:"; lblMot3.Text = "Left Track Motor:"; lblMot4.Text = "Right Track Motor:"; btnDisArm.Visible = true; } else if (jaguarSetting.RobotType.ToLower() == "jaguar_4arms") { armPosIndicator.Set2ArmCtrl(true); armPosIndicator.SetArmPositionIndicatorParameters(0, 0); pictureBoxRobot.SendToBack(); armPosIndicator.BringToFront(); lblMot1.Text = "Front Arm Motor:"; lblMot2.Text = "Rear Arm Motor:"; lblMot3.Text = "Left Track Motor:"; lblMot4.Text = "Right Track Motor:"; btnDisArm.Visible = true; } else { armPosIndicator.SendToBack(); pictureBoxRobot.BringToFront(); btnDisArm.Visible = false; if (jaguarSetting.RobotType.ToLower() == "jaguar_lite") { pictureBoxRobot.Image = imageList2.Images[0]; lblMot1.Text = "Left Track Motor:"; lblMot2.Text = "Right Track Motor:"; lblMot3.Visible = false; lblMot4.Visible = false; lblEncoderPos3.Visible = false; lblEncoderPos4.Visible = false; lblVel3.Visible = false; lblVel4.Visible = false; lblTemp3.Visible = false; lblTemp4.Visible = false; } else if (jaguarSetting.RobotType.ToLower() == "jaguar_4x4track") { pictureBoxRobot.Image = imageList2.Images[1]; lblMot1.Text = "Left Front Motor:"; lblMot2.Text = "Right Front Motor:"; lblMot3.Text = "Left Rear Motor:"; lblMot4.Text = "Right Rear Motor:"; } else //if (jaguarSetting.RobotType.ToLower() == "jaguar_4x4wheel") { pictureBoxRobot.Image = imageList2.Images[2]; lblMot1.Text = "Left Front Wheel:"; lblMot2.Text = "Right Front Wheel:"; lblMot3.Text = "Left Rear Wheel:"; lblMot4.Text = "Right Rear Wheel:"; } } pictureBoxStuckDetect.BackColor = Color.Green; btnScan.Enabled = false; }