Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for multiple drones in Unity #3128

Merged
merged 15 commits into from
Sep 9, 2021
Prev Previous commit
Next Next commit
fixes for default vehicle
  • Loading branch information
ykeuter committed Nov 4, 2020
commit 98cbc43c92d040b1d71051560e15d53a77ce7ed8
53 changes: 30 additions & 23 deletions AirLib/include/common/AirSimSettings.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ struct AirSimSettings {
{
initializeSubwindowSettings(subwindow_settings);
initializePawnPaths(pawn_paths);
initializeVehicleSettings(vehicles);
//initializeVehicleSettings(vehicles);
}

//returns number of warnings
Expand Down Expand Up @@ -768,39 +768,46 @@ struct AirSimSettings {
return vehicle_setting;
}

static void initializeVehicleSettings(std::map<std::string, std::unique_ptr<VehicleSetting>>& vehicles)
static void initializeVehicleSettings(const std::string& simmode_name, std::map<std::string, std::unique_ptr<VehicleSetting>>& vehicles)
{
vehicles.clear();

//NOTE: Do not set defaults for vehicle type here. If you do then make sure
//to sync code in createVehicleSetting() as well.

//create simple flight as default multirotor
auto simple_flight_setting = std::unique_ptr<VehicleSetting>(new VehicleSetting());
simple_flight_setting->vehicle_name = "SimpleFlight";
simple_flight_setting->vehicle_type = kVehicleTypeSimpleFlight;
//TODO: we should be selecting remote if available else keyboard
//currently keyboard is not supported so use rc as default
simple_flight_setting->rc.remote_control_id = 0;
vehicles[simple_flight_setting->vehicle_name] = std::move(simple_flight_setting);

//create default car vehicle
auto physx_car_setting = std::unique_ptr<VehicleSetting>(new VehicleSetting());
physx_car_setting->vehicle_name = "PhysXCar";
physx_car_setting->vehicle_type = kVehicleTypePhysXCar;
vehicles[physx_car_setting->vehicle_name] = std::move(physx_car_setting);

//create default computer vision vehicle
auto cv_setting = std::unique_ptr<VehicleSetting>(new VehicleSetting());
cv_setting->vehicle_name = "ComputerVision";
cv_setting->vehicle_type = kVehicleTypeComputerVision;
vehicles[cv_setting->vehicle_name] = std::move(cv_setting);
if (simmode_name == "Multirotor")
{
//create simple flight as default multirotor
auto simple_flight_setting = std::unique_ptr<VehicleSetting>(new VehicleSetting());
simple_flight_setting->vehicle_name = "SimpleFlight";
simple_flight_setting->vehicle_type = kVehicleTypeSimpleFlight;
//TODO: we should be selecting remote if available else keyboard
//currently keyboard is not supported so use rc as default
simple_flight_setting->rc.remote_control_id = 0;
vehicles[simple_flight_setting->vehicle_name] = std::move(simple_flight_setting);
}
else if (simmode_name == "Car")
{
//create default car vehicle
auto physx_car_setting = std::unique_ptr<VehicleSetting>(new VehicleSetting());
physx_car_setting->vehicle_name = "PhysXCar";
physx_car_setting->vehicle_type = kVehicleTypePhysXCar;
vehicles[physx_car_setting->vehicle_name] = std::move(physx_car_setting);
}
else
{
//create default computer vision vehicle
auto cv_setting = std::unique_ptr<VehicleSetting>(new VehicleSetting());
cv_setting->vehicle_name = "ComputerVision";
cv_setting->vehicle_type = kVehicleTypeComputerVision;
vehicles[cv_setting->vehicle_name] = std::move(cv_setting);
}
}

static void loadVehicleSettings(const std::string& simmode_name, const Settings& settings_json,
std::map<std::string, std::unique_ptr<VehicleSetting>>& vehicles)
{
initializeVehicleSettings(vehicles);
initializeVehicleSettings(simmode_name, vehicles);

msr::airlib::Settings vehicles_child;
if (settings_json.getChild("Vehicles", vehicles_child)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,7 @@ msr::airlib::VehicleApiBase* SimModeBase::getVehicleApi(const PawnSimApi::Params

UnityTransform SimModeBase::GetVehicleStartTransform()
{
//take first vehicle as default
const std::string& vehicle_name = getSettings().vehicles.begin()->first;
UnityTransform unityTransform = GetTransformFromUnity(vehicle_name.c_str());
//can we just take origin in Unity here?
UnityTransform unityTransform;
return unityTransform;
}