Example Source Code
Example
using RoboticsConnection.Serializer;
using RoboticsConnection.Serializer.Ids;
using RoboticsConnection.Serializer.Sensors;
using RoboticsConnection.Serializer.Components;
using RoboticsConnection.Serializer.Controllers;
using System;
using System.Threading;
namespace test
{
class Program
{
static Serializer serializer;
static PIDMotorController pmc;
static bool started = false;
static void Main(string[] args)
{
try
{
serializer = new Serializer();
serializer.PortName = "COM11";
pmc = new PIDMotorController(serializer);
serializer.CommunicationStarted +=
new SerializerEventHandler(serializer_CommunicationStarted);
serializer.StartCommunication();
while (!started)
{
Console.WriteLine("Waiting...");
}
while (true)
{
serializer.PumpEvents();
DriveDistance(50.0);
Thread.Sleep(500);
Rotate();
Thread.Sleep(500);
}
}
finally
{
serializer.ShutDown();
}
}
static void DriveDistance(double distance)
{
int vel1 = 0;
int vel2 = 0;
pmc.Speed = 12;
pmc.Distance = 10;
pmc.TravelDistance();
Console.WriteLine("Driving");
// Spin until the PID Distance algorithm has finsihed...
// Only useful when using TravelDistance() and Rotate()
while (pmc.QueryStatus())
{
pmc.QueryVelocities(ref vel1, ref vel2);
Console.WriteLine("Velocity: {0} : {1}", vel1, vel2);
}
Console.WriteLine("Arrived");
}
static void Rotate()
{
int vel1 = 0;
int vel2 = 0;
// Command robot to rotate 180 degrees, then stop:
pmc.RotationAngle = 180;
pmc.Rotate();
Console.WriteLine("Rotating");
while (pmc.QueryStatus())
{
pmc.QueryVelocities(ref vel1, ref vel2);
Console.WriteLine("Velocity: {0} : {1}", vel1, vel2);
}
Console.WriteLine("Rotation Complete");
}
static void serializer_CommunicationStarted(Serializer sender)
{
Console.WriteLine("Communication started");
serializer.Units = Units.English;
serializer.BlinkLED(LedId.Led1, 20);
// NOTE: This examples uses parameters configured for the
// Traxster Robot Kit.
// Set velocity and distance PID parameters:
pmc.VelProportional = 10;
pmc.VelIntegral = 0;
pmc.VelDerivative = 5;
pmc.VelLoop = 45;
pmc.DistProportional = 1;
pmc.DistIntegral = 0;
pmc.DistDerivative = 0;
pmc.DistAcceleration = 1;
pmc.DistDeadband = 5;
pmc.DeadbandEnabled = true;
// Set Physical drivetrain configuration parameters.
pmc.EncoderResolution = 4;
pmc.GearReduction = 0.0185;
pmc.WheelDiameter = 2.525;
pmc.WheelTrack = 10.00;
pmc.VelocityDivider = 3.57;
started = true;
}
}
}