コード例 #1
0
ファイル: Task.cpp プロジェクト: retlaw84/dune
        void
        consume(const IMC::Rpm* msg)
        {
          if (!isActive())
            return;

          // Compute time delta.
          double timestep = m_last_rpm.getDelta();

          // Check if we have a valid time delta.
          if (timestep < 0.0)
            return;

          switch (m_speed_units)
          {
            case IMC::SUNITS_PERCENTAGE:
              dispatchThrust(m_desired_speed / 100.0, timestep);
              // disable the meters per second controller
              m_u_active = false;
              break;
            case IMC::SUNITS_RPM:
              rpmToThrust(msg->value, m_desired_speed, timestep);
              m_previous_rpm = m_desired_speed;
              // disable the meters per second controller
              m_u_active = false;
              break;
            default:
              break;
          }

          if (m_u_active)
            rpmToThrust(msg->value, m_desired_rpm, timestep);
        }
コード例 #2
0
ファイル: Task.cpp プロジェクト: retlaw84/dune
        void
        consume(const IMC::EstimatedState* msg)
        {
          if (!isActive())
            return;

          // Compute time delta.
          double timestep = m_last_mps.getDelta();

          // Check if we have a valid time delta.
          if (timestep < 0.0)
            return;

          // If we're asked for m/s or if u controller is active
          if (m_speed_units == IMC::SUNITS_METERS_PS || m_u_active)
          {
            float abs_gvel = msg->u;

            mpsToRpm(abs_gvel, timestep);

            // Enable u controller
            m_u_active = true;
          }
        }