Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 // 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);
 }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 /// <summary>
 /// constructor
 /// </summary>
 public MotorClient(string id, IotHttpClient client, IotNode parent)
     : base(id, client, parent)
 {
     MotorData = new MotorData();
 }
Esempio n. 7
0
        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;
        }
Esempio n. 8
0
        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;
        }