コード例 #1
0
ファイル: gcdc2016.cpp プロジェクト: chalmers-revere/opendlv
odcore::data::dmcp::ModuleExitCodeMessage::ModuleExitCode Gcdc2016::body()
{
  odcore::data::TimeStamp previousTimestep;

  while (getModuleStateAndWaitForRemainingTimeInTimeslice() ==
      odcore::data::dmcp::ModuleStateMessage::RUNNING) {

    odcore::data::TimeStamp thisTimestep;
    odcore::data::TimeStamp duration = thisTimestep - previousTimestep;
    previousTimestep = thisTimestep;


    //std::cout << "vehicle heading: " << m_vehicle->GetHeading() << std::endl;
    double deltaTime = duration.toMicroseconds() / 1000000.0;
    //std::cout << "deltaTime: " << deltaTime << std::endl; 
    m_vehicle->Update(deltaTime);

m_vehicle->SetThrottlePedalPosition(30.0);

//    double lateralPosition = m_vehicle->GetLateralPosition();
//    double heading = m_vehicle->GetHeading();
    double speed = m_vehicle->GetSpeed();

    std::cout << "velocity: " << speed << std::endl;
//    std::cout << "Heading (degrees): " << (heading * 57.295779513) << std::endl;
//    std::cout << "Lateral position: " << lateralPosition << std::endl;

// TODO: Use Surface instead.
//    opendlv::perception::LanePosition lanePosition(lateralPosition, heading);
//    odcore::data::Container msg(lanePosition);  
//    getConference().send(msg);
  }

  return odcore::data::dmcp::ModuleExitCodeMessage::OKAY;
}
コード例 #2
0
ファイル: identity.cpp プロジェクト: chalmers-revere/opendlv
/**
 * Receives .
 * Sends .
 */
odcore::data::dmcp::ModuleExitCodeMessage::ModuleExitCode Identity::body()
{  
  
  while (getModuleStateAndWaitForRemainingTimeInTimeslice() ==
      odcore::data::dmcp::ModuleStateMessage::RUNNING){
    odcore::data::TimeStamp now;
    opendlv::knowledge::Insight stationIdInsight(now,"stationId="+std::to_string(m_stationId));
    SendContainer(stationIdInsight);

    opendlv::knowledge::Insight stationTypeInsight(now,"stationType="+std::to_string(m_stationType));
    SendContainer(stationTypeInsight);

    opendlv::knowledge::Insight vehicleLengthInsight(now,"vehicleLength="+std::to_string(m_vehicleLength));
    SendContainer(vehicleLengthInsight);
    
    opendlv::knowledge::Insight vehicleWidthInsight(now,"vehicleWidth="+std::to_string(m_vehicleWidth));
    SendContainer(vehicleWidthInsight);
    
    opendlv::knowledge::Insight vehicleRoleInsight(now,"vehicleRole="+std::to_string(m_vehicleRole));
    SendContainer(vehicleRoleInsight);
    
    opendlv::knowledge::Insight rearAxleLocationInsight(now,"rearAxleLocation="+std::to_string(m_rearAxleLocation));
    SendContainer(rearAxleLocationInsight);
  
  }  
  return odcore::data::dmcp::ModuleExitCodeMessage::OKAY;
}
コード例 #3
0
odcore::data::dmcp::ModuleExitCodeMessage::ModuleExitCode ProxyIMU::body() {
    while (getModuleStateAndWaitForRemainingTimeInTimeslice() == odcore::data::dmcp::ModuleStateMessage::RUNNING) {

        opendlv::proxy::AngularVelocityReading gyroscopeReading = m_device->ReadGyroscope();
        odcore::data::Container gyroscopeContainer(gyroscopeReading);
        getConference().send(gyroscopeContainer);

        opendlv::proxy::AccelerationReading accelerometerReading = m_device->ReadAccelerometer();
        odcore::data::Container accelerometerContainer(accelerometerReading);
        getConference().send(accelerometerContainer);

        opendlv::proxy::MagneticFieldReading magnetometerReading = m_device->ReadMagnetometer();
        odcore::data::Container magnetometerContainer(magnetometerReading);
        getConference().send(magnetometerContainer);

        opendlv::proxy::AltitudeReading altimeterReading = m_device->ReadAltimeter();
        odcore::data::Container altimeterContainer(altimeterReading);
        getConference().send(altimeterContainer);

        opendlv::proxy::TemperatureReading temperatureReading = m_device->ReadTemperature();
        odcore::data::Container temperatureContainer(temperatureReading);
        getConference().send(temperatureContainer);


        if (m_debug) {
            std::cout << gyroscopeReading.toString() << ", "
            << accelerometerReading.toString() << ", "
            << magnetometerReading.toString() << ", "
            << altimeterReading.toString() << ", "
            << temperatureReading.toString() << std::endl;
        }
    }

    return odcore::data::dmcp::ModuleExitCodeMessage::OKAY;
}
コード例 #4
0
odcore::data::dmcp::ModuleExitCodeMessage::ModuleExitCode SonarArray::body()
{
  while (getModuleStateAndWaitForRemainingTimeInTimeslice() 
      == odcore::data::dmcp::ModuleStateMessage::RUNNING) {

    auto sonarReadings = m_device->GetEchoReadings();
    odcore::data::Container sonarReadingContainer(sonarReadings);
    getConference().send(sonarReadingContainer);
  }

  return odcore::data::dmcp::ModuleExitCodeMessage::OKAY;
}
コード例 #5
0
        // This method will do the main data processing job.
        odcore::data::dmcp::ModuleExitCodeMessage::ModuleExitCode Proxy::body() {
            double vcAngle = -0.2;
            int speed = 1530;

            while (getModuleStateAndWaitForRemainingTimeInTimeslice() == odcore::data::dmcp::ModuleStateMessage::RUNNING) {

                Container containerVehicleControl = getKeyValueDataStore().get(automotive::VehicleControl::ID());
                VehicleControl vc = containerVehicleControl.getData<VehicleControl>();
                // TODO implement as per example:
                //vc.toString() results in Speed: 0 Acceleration: 0 SteeringWheelAngle: 0 BrakeLights: 0 FlashingLightsLeft: 0 FlashingLightsRight: 0 

                //double vcAngle = vc.getSteeringWheelAngle();

                // use config file to set them
                // Read config file only once in setup?
                m_in_min= -0.2;
                m_in_max = 0.2;
                m_out_min = 60;
                m_out_max = 120;

                int arduinoSteerValue = Proxy::arduino_map(vcAngle);

                int SPEED_FIXED_ARDUINO_VAL = speed;

                std::string DELIM_KEY_VALUE = "=";
                std::string DELIM_PAIR = ";";
                std::string SPEED_KEY = "speed";
                std::string ANGLE_KEY = "angle";
                // -- end of constants

                std::stringstream strStream;
                std::string toBeSentString;

                strStream << SPEED_KEY << DELIM_KEY_VALUE << SPEED_FIXED_ARDUINO_VAL << DELIM_PAIR;
                strStream << ANGLE_KEY << DELIM_KEY_VALUE << arduinoSteerValue << DELIM_PAIR;

                strStream >> toBeSentString;
                
                m_nsp->send(toBeSentString);

                //vcAngle = vcAngle + 0.05;

                const uint32_t ONE_SECOND = 1000 * 1000;
                odcore::base::Thread::usleepFor(10 * ONE_SECOND);

            }

            return odcore::data::dmcp::ModuleExitCodeMessage::OKAY;
        }
コード例 #6
0
ファイル: ivrule.cpp プロジェクト: chalmers-revere/opendlv
 odcore::data::dmcp::ModuleExitCodeMessage::ModuleExitCode Ivrule::body()
{
  while (getModuleStateAndWaitForRemainingTimeInTimeslice() == odcore::data::dmcp::ModuleStateMessage::RUNNING) {
    odcore::data::TimeStamp now;



    if((m_mioValidUntil-now).toMicroseconds() > 0) {
      // Steer to mio
      opendlv::perception::StimulusDirectionOfMovement sdom(now, m_mio.getDirection(),opendlv::model::Direction(0,0));
      odcore::data::Container containerSdom(sdom);
      getConference().send(containerSdom);

      // std::cout << "Sent sdom." << std::endl;


      opendlv::perception::StimulusAngularSizeAlignment sasa(now, m_mio.getDirection(),m_mio.getAngularSize(),m_desiredAngularSize);
      odcore::data::Container containerSasa(sasa);
      getConference().send(containerSasa);

      // std::cout << "Sent sasa."  << std::endl;


      // std::cout 
      //     << " Id: " << m_mio.getObjectId() 
      //     << " Azimuth: " << m_mio.getDirection().getAzimuth() 
      //     << " Distance: " << m_mio.getDistance() 
      //     << " Desired angular size: " << m_desiredAngularSize 
      //     << " Currently: " << m_mio.getAngularSize() 
      //     << std::endl;
    } else {
      opendlv::perception::StimulusGroundSpeed sof(now, m_desiredOpticalFlow, m_speed);
      odcore::data::Container containerSof(sof);
      getConference().send(containerSof);
      // std::cout << "Send sof. Desired OF: " << m_desiredOpticalFlow  << " Current OF: " << m_speed << std::endl;
    }
  }
  return odcore::data::dmcp::ModuleExitCodeMessage::OKAY;
}