void mtsMicronTrackerControllerQtComponent::MTCTrackQSlot(bool toggled)
{
    MTC.Capture(mtsBool(toggled));
    MTC.Track(mtsBool(toggled));
    if (toggled) {
        Timer->start(20);
    } else {
        Timer->stop();
    }
}
示例#2
0
void mtsPIDQtWidget::Init()
{
    PID.PositionJointGetParam.Position().SetSize(NumberOfAxis);
    PID.PositionJointGetDesired.SetSize(NumberOfAxis);
    PID.VelocityJointGetParam.Velocity().SetSize(NumberOfAxis);
    PID.EffortJoint.SetSize(NumberOfAxis);

    DesiredPosition.SetSize(NumberOfAxis);
    DesiredPosition.SetAll(0.0);
    DesiredEffort.SetSize(NumberOfAxis);
    DesiredEffort.SetAll(0.0);
    UnitFactor.SetSize(NumberOfAxis);
    UnitFactor.SetAll(1.0);

    DirectControl = false;
    PlotIndex = 0;

    logsEnabled = false;
    logEntryIndex = 0;

    // Setup cisst interface
    mtsInterfaceRequired * interfaceRequired = AddInterfaceRequired("Controller");
    if (interfaceRequired) {
        interfaceRequired->AddFunction("ResetController",           PID.ResetController);
        interfaceRequired->AddFunction("Enable",                    PID.Enable);
        interfaceRequired->AddFunction("EnableIO",                  PID.EnableIO);
        interfaceRequired->AddFunction("EnableLogs",                PID.EnableLogs);
        interfaceRequired->AddFunction("EnableTorqueMode",          PID.EnableTorqueMode);
        interfaceRequired->AddFunction("SetPositionJoint",          PID.SetPositionJoint);
        interfaceRequired->AddFunction("SetTorqueJoint",            PID.SetEffortJoint);
        interfaceRequired->AddFunction("GetPositionJoint",          PID.GetPositionJoint);
        interfaceRequired->AddFunction("GetVelocityJoint",          PID.GetVelocityJoint);
        interfaceRequired->AddFunction("GetPositionJointDesired",   PID.GetPositionJointDesired);
        interfaceRequired->AddFunction("GetEffortJointDesired",     PID.GetEffortJointDesired);
        interfaceRequired->AddFunction("GetPeriodStatistics",       PID.GetPeriodStatistics);
        interfaceRequired->AddFunction("GetJointType",              PID.GetJointType);
        interfaceRequired->AddFunction("GetPGain",                  PID.GetPGain);
        interfaceRequired->AddFunction("GetDGain",                  PID.GetDGain);
        interfaceRequired->AddFunction("GetIGain",                  PID.GetIGain);
        interfaceRequired->AddFunction("SetPGain",                  PID.SetPGain);
        interfaceRequired->AddFunction("SetDGain",                  PID.SetDGain);
        interfaceRequired->AddFunction("SetIGain",                  PID.SetIGain);
        // Events
        interfaceRequired->AddEventHandlerWrite(&mtsPIDQtWidget::JointLimitEventHandler, this, "JointLimit");
        interfaceRequired->AddEventHandlerWrite(&mtsPIDQtWidget::ErrorEventHandler, this, "Error");
        interfaceRequired->AddEventHandlerWrite(&mtsPIDQtWidget::EnableEventHandler, this, "Enabled");
    }

    if(usingSimulink) {
        mtsInterfaceRequired * simulinkQtInterfaceRequired = AddInterfaceRequired("SimulinkQtInterfacePIDCommand");
        if (simulinkQtInterfaceRequired) {
            simulinkQtInterfaceRequired->AddFunction("EnableSimulinkWidgetFromPID", SimulinkQtWidget.EnableWidget);
            simulinkQtInterfaceRequired->AddFunction("EnableSimulinkFromPID",       SimulinkQtWidget.Enable);
            simulinkQtInterfaceRequired->AddFunction("EnableSimulinkLogsFromPID",   SimulinkQtWidget.EnableLogs);
            //the below means COMMENCED, as in, is Simulink in control?
            simulinkQtInterfaceRequired->AddFunction("IsSimulinkEnabled",           SimulinkQtWidget.IsEnabled);
        }

        mtsInterfaceProvided * simulinkQtInterfaceProvided = AddInterfaceProvided("SimulinkQtInterfaceSimulinkCommand");
        if (simulinkQtInterfaceProvided) {
            simulinkQtInterfaceProvided->AddCommandWrite(&mtsPIDQtWidget::EnablePIDFromSimulinkQt , this,  "EnablePIDFromSimulink",     mtsBool());
            simulinkQtInterfaceProvided->AddCommandWrite(&mtsPIDQtWidget::EnableLogsFromSimulinkQt , this,  "EnablePIDLogsFromSimulink", mtsBool());
            }
    }

    setupUi();
    startTimer(TimerPeriodInMilliseconds); // ms
}