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); }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
inline static void parseZUnits(Parsers::Config& parser, std::string section, Type& man, std::string label = "Z Units") { parseZUnits(parser, section, man.z_units, label); }