示例#1
0
 void
 PlanConfigParser::parse(Parsers::Config& cfg, std::string section, IMC::Elevator& man)
 {
   parseSpeed(cfg, section, man);
   parseCoordinate(cfg, section, man);
   cfg.get(section, "Flags", "0x00", man.flags);
   parseZUnits(cfg, section, man.start_z_units, "Start Z Units");
   parseZUnits(cfg, section, man.end_z_units, "End Z Units");
   cfg.get(section, "Start Z (meters)", "0.0", man.start_z);
   cfg.get(section, "End Z (meters)", "0.0", man.end_z);
   cfg.get(section, "Radius (meters)", "15.0", man.radius);
 }
示例#2
0
    void
    PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::FollowPath& man)
    {
      // Get configurable parameters
      parseCoordinate(cfg, id, man);
      parseSpeed(cfg, id, man);
      parseTimeout(cfg, id, man);
      parseZ(cfg, id, man);
      parseZUnits(cfg, id, man);

      int n_points;

      cfg.get(id, "Number of Points", "0", n_points);

      Math::Matrix W(n_points, 3);

      W.readFromConfig(cfg, id, "Points");

      IMC::MessageList<IMC::PathPoint>* list = &man.points;

      for (int i = 0; i < W.rows(); ++i)
      {
        IMC::PathPoint* p = new IMC::PathPoint;
        p->x = W(i, 0);
        p->y = W(i, 1);
        p->z = W(i, 2);

        list->push_back(*p);
      }
    }
示例#3
0
 void
 PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::Goto& man)
 {
   // Get configurable parameters
   parseCoordinate(cfg, id, man);
   parseSpeed(cfg, id, man);
   parseTimeout(cfg, id, man);
   parseZ(cfg, id, man);
   parseZUnits(cfg, id, man);
 }
示例#4
0
 void
 PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::Dubin& man)
 {
   // Get configurable parameters
   parseSpeed(cfg, id, man);
   parseDuration(cfg, id, man);
   parseTimeout(cfg, id, man);
   parseZ(cfg, id, man);
   parseZUnits(cfg, id, man);
 }
示例#5
0
 void
 PlanConfigParser::parse(Parsers::Config& cfg, std::string section, IMC::YoYo& man)
 {
   parseCoordinate(cfg, section, man);
   parseZ(cfg, section, man);
   parseZUnits(cfg, section, man);
   cfg.get(section, "Amplitude (meters)", "0.0", man.amplitude);
   parseAngle(cfg, section, "Pitch (degrees)", man.pitch, (fp32_t)15.0);
   parseSpeed(cfg, section, man);
 }
示例#6
0
 void
 PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::StationKeeping& man)
 {
   // Get configurable parameters
   parseCoordinate(cfg, id, man);
   parseSpeed(cfg, id, man);
   parseZ(cfg, id, man);
   parseZUnits(cfg, id, man);
   parseDuration(cfg, id, man);
   cfg.get(id, "Radius (meters)", "15.0", man.radius);
 }
示例#7
0
 void
 PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::PopUp& man)
 {
   parseCoordinate(cfg, id, man);
   parseSpeed(cfg, id, man);
   parseTimeout(cfg, id, man);
   parseDuration(cfg, id, man);
   parseZ(cfg, id, man);
   parseZUnits(cfg, id, man);
   cfg.get(id, "Radius (meters)", "15.0", man.radius);
   cfg.get(id, "Flags", "0x00", man.flags);
 }
示例#8
0
 void
 PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::Rows& man)
 {
   // Get configurable parameters
   parseCoordinate(cfg, id, man);
   parseSpeed(cfg, id, man);
   parseZ(cfg, id, man);
   parseZUnits(cfg, id, man);
   parseAngle(cfg, id, "Bearing (degrees)", man.bearing, 0.0);
   parseAngle(cfg, id, "Cross Angle (degrees)", man.cross_angle, 0.0);
   cfg.get(id, "Width (meters)", "150", man.width);
   cfg.get(id, "Length (meters)", "100", man.length);
   cfg.get(id, "Curve Offset (meters)", "15", man.coff);
   cfg.get(id, "Alternation (%)", "100", man.alternation);
   cfg.get(id, "Horizontal Step (meters)", "30", man.hstep);
   cfg.get(id, "Flags", "3", man.flags);
 }
示例#9
0
    void
    PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::Loiter& man)
    {
      // Get configurable parameters
      parseCoordinate(cfg, id, man);
      parseSpeed(cfg, id, man);
      parseTimeout(cfg, id, man);
      parseDuration(cfg, id, man);
      parseZ(cfg, id, man);
      parseZUnits(cfg, id, man);

      int8_t type;
      cfg.get(id, "Loiter Type", "0", type);

      switch (type)
      {
        case 1:
          man.type = IMC::Loiter::LT_RACETRACK; break;
        case 2:
          man.type = IMC::Loiter::LT_HOVER; break;
        case 3:
          man.type = IMC::Loiter::LT_EIGHT; break;
        case 0:
        default:
          man.type = IMC::Loiter::LT_CIRCULAR; break;
      }

      std::string ldir;
      cfg.get(id, "Loiter Direction", "Clock", ldir);

      if (ldir == "Clockwise")
        man.direction = IMC::Loiter::LD_CLOCKW;
      else
        man.direction = IMC::Loiter::LD_CCLOCKW;

      cfg.get(id, "Radius (meters)", "50", man.radius);
      parseAngle(cfg, id, "Bearing (degrees)", man.bearing, 0.0);
      cfg.get(id, "Length (meters)", "100", man.length);
    }
示例#10
0
    void
    PlanConfigParser::parse(Parsers::Config& cfg, std::string id, IMC::CompassCalibration& man)
    {
      // Get configurable parameters
      parseCoordinate(cfg, id, man);
      parseSpeed(cfg, id, man);
      parseTimeout(cfg, id, man);
      parseDuration(cfg, id, man);
      parseZ(cfg, id, man);
      parseZUnits(cfg, id, man);

      std::string ldir;
      cfg.get(id, "Loiter Direction", "Clock", ldir);

      if (ldir == "Clockwise")
        man.direction = IMC::Loiter::LD_CLOCKW;
      else
        man.direction = IMC::Loiter::LD_CCLOCKW;

      cfg.get(id, "Radius (meters)", "50", man.radius);
      cfg.get(id, "Amplitude (meters)", "1", man.amplitude);
      parseAngle(cfg, id, "Pitch (degrees)", man.pitch, (fp32_t)0.0);
    }
示例#11
0
 inline static void
 parseZUnits(Parsers::Config& parser, std::string section, Type& man, std::string label = "Z Units")
 {
   parseZUnits(parser, section, man.z_units, label);
 }