Skip to content

Commit

Permalink
address review comments:
Browse files Browse the repository at this point in the history
- restore car*api.*cpp/h files
- fix build error, remove unnecessary include, restore airsim.uplugin
- simgetobjectscaleinternal, fix indentation in worldsimapi.h/cpp
- address review comments for simmodebase
- rm noisy simgetobjectpose
- fix up airsim.build.cs
  • Loading branch information
madratman committed May 3, 2020
1 parent 3649c67 commit 7505949
Show file tree
Hide file tree
Showing 15 changed files with 372 additions and 469 deletions.
2 changes: 0 additions & 2 deletions AirLib/include/api/RpcLibClientBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,7 @@ class RpcLibClientBase {
vector<string> simListSceneObjects(const string& name_regex = string(".*")) const;
Pose simGetObjectPose(const std::string& object_name) const;
bool simLoadLevel(const string& level_name);
Pose simGetObjectPose(const std::string& object_name, bool add_noise) const;
Vector3r simGetObjectScale(const std::string& object_name) const;
Vector3r simGetObjectScaleInternal(const std::string& object_name) const;
bool simSetObjectPose(const std::string& object_name, const Pose& pose, bool teleport = true);
bool simSetObjectScale(const std::string& object_name, const Vector3r& scale);

Expand Down
1 change: 0 additions & 1 deletion AirLib/include/api/WorldSimApiBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ class WorldSimApiBase {
virtual std::vector<std::string> listSceneObjects(const std::string& name_regex) const = 0;
virtual Pose getObjectPose(const std::string& object_name) const = 0;
virtual Vector3r getObjectScale(const std::string& object_name) const = 0;
virtual Vector3r getObjectScaleInternal(const std::string& object_name) const = 0;
virtual bool setObjectPose(const std::string& object_name, const Pose& pose, bool teleport) = 0;
virtual bool setObjectScale(const std::string& object_name, const Vector3r& scale) = 0;

Expand Down
241 changes: 122 additions & 119 deletions AirLib/include/vehicles/car/api/CarApiBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,140 +12,143 @@
#include "sensors/SensorCollection.hpp"
#include "sensors/SensorFactory.hpp"

namespace msr {
namespace airlib {

class CarApiBase : public VehicleApiBase {
public:
struct CarControls {
float throttle = 0; /* 1 to -1 */
float steering = 0; /* 1 to -1 */
float brake = 0; /* 1 to -1 */
bool handbrake = false;
bool is_manual_gear = false;
int manual_gear = 0;
bool gear_immediate = true;

CarControls()
{
}
CarControls(float throttle_val, float steering_val, float brake_val, bool handbrake_val,
bool is_manual_gear_val, int manual_gear_val, bool gear_immediate_val)
: throttle(throttle_val), steering(steering_val), brake(brake_val), handbrake(handbrake_val),
is_manual_gear(is_manual_gear_val), manual_gear(manual_gear_val), gear_immediate(gear_immediate_val)
{
}
void set_throttle(float throttle_val, bool forward)
{
if (forward) {
is_manual_gear = false;
manual_gear = 0;
throttle = std::abs(throttle_val);
}
else {
is_manual_gear = false;
manual_gear = -1;
throttle = -std::abs(throttle_val);
}
}
};

struct CarState {
float speed;
int gear;
float rpm;
float maxrpm;
bool handbrake;
Kinematics::State kinematics_estimated;
uint64_t timestamp;

CarState(float speed_val, int gear_val, float rpm_val, float maxrpm_val, bool handbrake_val,
const Kinematics::State& kinematics_estimated_val, uint64_t timestamp_val)
: speed(speed_val), gear(gear_val), rpm(rpm_val), maxrpm(maxrpm_val), handbrake(handbrake_val),
kinematics_estimated(kinematics_estimated_val), timestamp(timestamp_val)
{
}
};

public:

// TODO: Temporary constructor for the Unity implementation which does not use the new Sensor Configuration Settings implementation.
//CarApiBase() {}

CarApiBase(const AirSimSettings::VehicleSetting* vehicle_setting,
std::shared_ptr<SensorFactory> sensor_factory,
const Kinematics::State& state, const Environment& environment)
{
initialize(vehicle_setting, sensor_factory, state, environment);
namespace msr { namespace airlib {

class CarApiBase : public VehicleApiBase {
public:
struct CarControls {
float throttle = 0; /* 1 to -1 */
float steering = 0; /* 1 to -1 */
float brake = 0; /* 1 to -1 */
bool handbrake = false;
bool is_manual_gear = false;
int manual_gear = 0;
bool gear_immediate = true;

CarControls()
{
}
CarControls(float throttle_val, float steering_val, float brake_val, bool handbrake_val,
bool is_manual_gear_val, int manual_gear_val, bool gear_immediate_val)
: throttle(throttle_val), steering(steering_val), brake(brake_val), handbrake(handbrake_val),
is_manual_gear(is_manual_gear_val), manual_gear(manual_gear_val), gear_immediate(gear_immediate_val)
{
}
void set_throttle(float throttle_val, bool forward)
{
if (forward) {
is_manual_gear = false;
manual_gear = 0;
throttle = std::abs(throttle_val);
}

virtual void update() override
{
VehicleApiBase::update();

getSensors().update();
else {
is_manual_gear = false;
manual_gear = -1;
throttle = - std::abs(throttle_val);
}
}
};

struct CarState {
float speed;
int gear;
float rpm;
float maxrpm;
bool handbrake;
Kinematics::State kinematics_estimated;
uint64_t timestamp;

CarState()
{
}

CarState(float speed_val, int gear_val, float rpm_val, float maxrpm_val, bool handbrake_val,
const Kinematics::State& kinematics_estimated_val, uint64_t timestamp_val)
: speed(speed_val), gear(gear_val), rpm(rpm_val), maxrpm(maxrpm_val), handbrake(handbrake_val),
kinematics_estimated(kinematics_estimated_val), timestamp(timestamp_val)
{
}
};

public:

// TODO: Temporary constructor for the Unity implementation which does not use the new Sensor Configuration Settings implementation.
//CarApiBase() {}

CarApiBase(const AirSimSettings::VehicleSetting* vehicle_setting,
std::shared_ptr<SensorFactory> sensor_factory,
const Kinematics::State& state, const Environment& environment)
{
initialize(vehicle_setting, sensor_factory, state, environment);
}

void reportState(StateReporter& reporter) override
{
getSensors().reportState(reporter);
}
virtual void update() override
{
VehicleApiBase::update();

// sensor helpers
virtual const SensorCollection& getSensors() const override
{
return sensors_;
}

SensorCollection& getSensors()
{
return sensors_;
}
getSensors().update();
}

void initialize(const AirSimSettings::VehicleSetting* vehicle_setting,
std::shared_ptr<SensorFactory> sensor_factory,
const Kinematics::State& state, const Environment& environment)
{
sensor_factory_ = sensor_factory;
void reportState(StateReporter& reporter) override
{
getSensors().reportState(reporter);
}

sensor_storage_.clear();
sensors_.clear();
// sensor helpers
virtual const SensorCollection& getSensors() const override
{
return sensors_;
}

addSensorsFromSettings(vehicle_setting);
SensorCollection& getSensors()
{
return sensors_;
}

getSensors().initialize(&state, &environment);
}
void initialize(const AirSimSettings::VehicleSetting* vehicle_setting,
std::shared_ptr<SensorFactory> sensor_factory,
const Kinematics::State& state, const Environment& environment)
{
sensor_factory_ = sensor_factory;

void addSensorsFromSettings(const AirSimSettings::VehicleSetting* vehicle_setting)
{
// use sensors from vehicle settings; if empty list, use default sensors.
// note that the vehicle settings completely override the default sensor "list";
// there is no piecemeal add/remove/update per sensor.
const std::map<std::string, std::unique_ptr<AirSimSettings::SensorSetting>>& sensor_settings
= vehicle_setting->sensors.size() > 0 ? vehicle_setting->sensors : AirSimSettings::AirSimSettings::singleton().sensor_defaults;
sensor_storage_.clear();
sensors_.clear();

addSensorsFromSettings(vehicle_setting);

sensor_factory_->createSensorsFromSettings(sensor_settings, sensors_, sensor_storage_);
}
getSensors().initialize(&state, &environment);
}

virtual void setCarControls(const CarControls& controls) = 0;
virtual CarState getCarState() const = 0;
virtual const CarApiBase::CarControls& getCarControls() const = 0;
void addSensorsFromSettings(const AirSimSettings::VehicleSetting* vehicle_setting)
{
// use sensors from vehicle settings; if empty list, use default sensors.
// note that the vehicle settings completely override the default sensor "list";
// there is no piecemeal add/remove/update per sensor.
const std::map<std::string, std::unique_ptr<AirSimSettings::SensorSetting>>& sensor_settings
= vehicle_setting->sensors.size() > 0 ? vehicle_setting->sensors : AirSimSettings::AirSimSettings::singleton().sensor_defaults;

virtual ~CarApiBase() = default;
sensor_factory_->createSensorsFromSettings(sensor_settings, sensors_, sensor_storage_);
}

std::shared_ptr<const SensorFactory> sensor_factory_;
SensorCollection sensors_; //maintains sensor type indexed collection of sensors
vector<unique_ptr<SensorBase>> sensor_storage_; //RAII for created sensors
virtual void setCarControls(const CarControls& controls) = 0;
virtual void updateCarState(const CarState& state) = 0;
virtual const CarState& getCarState() const = 0;
virtual const CarControls& getCarControls() const = 0;

protected:
virtual void resetImplementation() override
{
//reset sensors last after their ground truth has been reset
getSensors().reset();
}
};
virtual ~CarApiBase() = default;

std::shared_ptr<const SensorFactory> sensor_factory_;
SensorCollection sensors_; //maintains sensor type indexed collection of sensors
vector<unique_ptr<SensorBase>> sensor_storage_; //RAII for created sensors

protected:
virtual void resetImplementation() override
{
//reset sensors last after their ground truth has been reset
getSensors().reset();
}
} //namespace
};


}} //namespace
#endif
9 changes: 0 additions & 9 deletions AirLib/src/api/RpcLibClientBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -356,20 +356,11 @@ bool RpcLibClientBase::simLoadLevel(const string& level_name)
return pimpl_->client.call("simLoadLevel", level_name).as<bool>();
}

msr::airlib::Pose RpcLibClientBase::simGetObjectPose(const std::string& object_name, bool add_noise) const
{
return pimpl_->client.call("simGetObjectPose", object_name, add_noise).as<RpcLibAdapatorsBase::Pose>().to();
}
msr::airlib::Vector3r RpcLibClientBase::simGetObjectScale(const std::string& object_name) const
{
return pimpl_->client.call("simGetObjectScale", object_name).as<RpcLibAdapatorsBase::Vector3r>().to();
}

msr::airlib::Vector3r RpcLibClientBase::simGetObjectScaleInternal(const std::string& object_name) const
{
return pimpl_->client.call("simGetObjectScaleInternal", object_name).as<RpcLibAdapatorsBase::Vector3r>().to();
}

msr::airlib::Pose RpcLibClientBase::simGetObjectPose(const std::string& object_name) const
{
return pimpl_->client.call("simGetObjectPose", object_name).as<RpcLibAdapatorsBase::Pose>().to();
Expand Down
4 changes: 0 additions & 4 deletions AirLib/src/api/RpcLibServerBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,10 +269,6 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string&
const auto& scale = getWorldSimApi()->getObjectScale(object_name);
return RpcLibAdapatorsBase::Vector3r(scale);
});
pimpl_->server.bind("simGetObjectScaleInternal", [&](const std::string& object_name) -> RpcLibAdapatorsBase::Vector3r {
const auto& scale = getWorldSimApi()->getObjectScaleInternal(object_name);
return RpcLibAdapatorsBase::Vector3r(scale);
});
pimpl_->server.bind("simSetObjectPose", [&](const std::string& object_name, const RpcLibAdapatorsBase::Pose& pose, bool teleport) -> bool {
return getWorldSimApi()->setObjectPose(object_name, pose.to(), teleport);
});
Expand Down
7 changes: 3 additions & 4 deletions Unreal/Plugins/AirSim/AirSim.uplugin
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"FileVersion" : 3,
"Version" : "1.2.0",
"VersionName": "1.2.0",
"Version" : "1.3.1",
"VersionName": "1.3.1",
"FriendlyName": "AirSim",
"Description": "AirSim - Autonomous Aerial Vehicles Simulator Plugin",
"Category" : "Science",
Expand All @@ -18,8 +18,7 @@
{
"Name": "AirSim",
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"AdditionalDependencies": [ "Engine" ]
"LoadingPhase": "PreDefault"
}
],
"Plugins": [
Expand Down
Loading

0 comments on commit 7505949

Please sign in to comment.