Skip to content

Commit

Permalink
Controllers API refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
sytelus committed May 22, 2018
1 parent e42870a commit 413e44d
Show file tree
Hide file tree
Showing 42 changed files with 647 additions and 5,299 deletions.
30 changes: 5 additions & 25 deletions AirLib/AirLib.vcxproj
Expand Up @@ -81,25 +81,6 @@
<ClInclude Include="include\vehicles\multirotor\api\MultirotorRpcLibClient.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MultirotorRpcLibServer.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\RealMultirotorConnector.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\AirSimRosFlightBoard.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\AirSimRosFlightCommLink.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\board.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\commlink.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\commonstate.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\controller.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\dummyboard.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\dummycommlink.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\estimator.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\firmware.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\mixer.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\mode.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\mux.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\param.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\rc.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\sensors.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\turbotrig\turbotrig.h" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\turbotrig\turbovec.h" />
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\RosFlightDroneController.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\AirSimSimpleFlightBoard.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\AirSimSimpleFlightCommLink.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\AirSimSimpleFlightEstimator.hpp" />
Expand Down Expand Up @@ -135,13 +116,13 @@
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\firmware\RungKuttaPidIntegrator.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\firmware\StdPidIntegrator.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\firmware\VelocityController.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\SimpleFlightDroneController.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\SimpleFlightApi.hpp" />
<ClInclude Include="include\physics\DebugPhysicsBody.hpp" />
<ClInclude Include="include\physics\PhysicsBodyWorld.hpp" />
<ClInclude Include="include\physics\PhysicsWorld.hpp" />
<ClInclude Include="include\safety\CubeGeoFence.hpp" />
<ClInclude Include="include\safety\IGeoFence.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MavLinkMultirotorApi.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\mavlink\MavLinkMultirotorApi.hpp" />
<ClInclude Include="include\safety\ObstacleMap.hpp" />
<ClInclude Include="include\common\PidController.hpp" />
<ClInclude Include="include\vehicles\car\api\CarRpcLibAdapators.hpp" />
Expand Down Expand Up @@ -173,9 +154,8 @@
<ClInclude Include="include\sensors\magnetometer\MagnetometerSimpleParams.hpp" />
<ClInclude Include="include\sensors\SensorBase.hpp" />
<ClInclude Include="include\sensors\SensorCollection.hpp" />
<ClInclude Include="include\vehicles\multirotor\configs\Px4MultiRotor.hpp" />
<ClInclude Include="include\vehicles\multirotor\configs\RosFlightQuadX.hpp" />
<ClInclude Include="include\vehicles\multirotor\configs\SimpleFlightQuadX.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\mavlink\Px4MultiRotor.hpp" />
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\SimpleFlightQuadX.hpp" />
<ClInclude Include="include\vehicles\multirotor\MultiRotor.hpp" />
<ClInclude Include="include\vehicles\multirotor\MultiRotorParams.hpp" />
<ClInclude Include="include\vehicles\multirotor\MultiRotorParamsFactory.hpp" />
Expand All @@ -185,7 +165,7 @@
<ItemGroup>
<ClCompile Include="src\api\RpcLibClientBase.cpp" />
<ClCompile Include="src\api\RpcLibServerBase.cpp" />
<ClCompile Include="src\vehicles\multirotor\controllers\MultirotorControllerApiBase.cpp" />
<ClCompile Include="src\vehicles\multirotor\api\MultirotorApiBase.cpp" />
<ClCompile Include="src\safety\ObstacleMap.cpp" />
<ClCompile Include="src\safety\SafetyEval.cpp" />
<ClCompile Include="src\common\common_utils\FileSystem.cpp" />
Expand Down
86 changes: 13 additions & 73 deletions AirLib/AirLib.vcxproj.filters
Expand Up @@ -231,72 +231,6 @@
<ClInclude Include="include\vehicles\multirotor\RotorParams.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\configs\Px4MultiRotor.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\configs\RosFlightQuadX.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\configs\SimpleFlightQuadX.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\turbotrig\turbotrig.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\turbotrig\turbovec.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\board.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\commlink.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\commonstate.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\controller.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\dummyboard.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\dummycommlink.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\estimator.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\firmware.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\mixer.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\mode.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\mux.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\param.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\rc.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\firmware\sensors.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\AirSimRosFlightBoard.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\AirSimRosFlightCommLink.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\ros_flight\RosFlightDroneController.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\firmware\interfaces\CommonStructs.hpp">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -390,9 +324,6 @@
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\AirSimSimpleFlightEstimator.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\SimpleFlightDroneController.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\car\api\CarRpcLibAdapators.hpp">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -480,9 +411,6 @@
<ClInclude Include="include\vehicles\multirotor\api\MultirotorApiBase.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\api\MavLinkMultirotorApi.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\api\RealMultirotorConnector.hpp">
<Filter>Header Files</Filter>
</ClInclude>
Expand All @@ -492,6 +420,18 @@
<ClInclude Include="include\common\PidController.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\mavlink\MavLinkMultirotorApi.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\SimpleFlightApi.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\mavlink\Px4MultiRotor.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\SimpleFlightQuadX.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\safety\ObstacleMap.cpp">
Expand Down Expand Up @@ -521,7 +461,7 @@
<ClCompile Include="src\api\RpcLibServerBase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\vehicles\multirotor\controllers\MultirotorControllerApiBase.cpp">
<ClCompile Include="src\vehicles\multirotor\api\MultirotorApiBase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
Expand Down
10 changes: 2 additions & 8 deletions AirLib/include/api/VehicleSimApiBase.hpp
Expand Up @@ -21,17 +21,11 @@ class VehicleSimApiBase {

virtual void setPose(const Pose& pose, bool ignore_collision) = 0;
virtual Pose getPose() const = 0;

virtual CollisionInfo getCollisionInfo() const = 0;
virtual void setCollisionInfo(const CollisionInfo& collision_info) = 0;
virtual Kinematics::State getTrueKinematics() const = 0;
virtual const Kinematics::State& getTrueKinematics() const = 0;
virtual int getRemoteControlID() const { return -1; }
virtual void setRCData(const RCData& rcData) = 0;

//TODO: need better place for below two APIs?
//return 0 to 1 (corresponds to zero to full thrust)
virtual real_T getVertexControlSignal(unsigned int rotor_index) const = 0;
virtual size_t getVertexCount() const = 0;

};

} } //namespace
Expand Down
1 change: 0 additions & 1 deletion AirLib/include/common/AirSimSettings.hpp
Expand Up @@ -24,7 +24,6 @@ struct AirSimSettings {
static constexpr int kSubwindowCount = 3; //must be >= 3 for now
static constexpr char* kVehicleTypePX4 = "px4multirotor";
static constexpr char* kVehicleTypeSimpleFlight = "simpleflight";
static constexpr char* kVehicleTypeRosFlight = "rosflight";
static constexpr char* kVehicleTypePhysXCar = "physxcar";


Expand Down
4 changes: 2 additions & 2 deletions AirLib/include/vehicles/multirotor/MultiRotor.hpp
Expand Up @@ -49,7 +49,7 @@ class MultiRotor : public PhysicsBody {

initSensors(*params_, getKinematics(), getEnvironment());

getController()->setGroundTruth(this);
getController()->setSimulatedGroundTruth(& getKinematics(), & getEnvironment());
}

MultirotorApiBase* getController()
Expand Down Expand Up @@ -106,7 +106,7 @@ class MultiRotor : public PhysicsBody {
//transfer new input values from controller to rotors
for (uint rotor_index = 0; rotor_index < rotors_.size(); ++rotor_index) {
rotors_.at(rotor_index).setControlSignal(
getController()->getVertexControlSignal(rotor_index));
getController()->getRotorActuation(rotor_index));
}
}

Expand Down
2 changes: 1 addition & 1 deletion AirLib/include/vehicles/multirotor/MultiRotorParams.hpp
Expand Up @@ -7,7 +7,7 @@
#include "common/Common.hpp"
#include "RotorParams.hpp"
#include "sensors/SensorCollection.hpp"
#include "controllers/MultirotorApiBase.h"
#include "api/MultirotorApiBase.h"



Expand Down
12 changes: 5 additions & 7 deletions AirLib/include/vehicles/multirotor/MultiRotorParamsFactory.hpp
Expand Up @@ -4,25 +4,23 @@
#ifndef msr_airlib_vehicles_MultiRotorParamsFactory_hpp
#define msr_airlib_vehicles_MultiRotorParamsFactory_hpp

#include "vehicles/multirotor/configs/Px4MultiRotor.hpp"
#include "vehicles/multirotor/controllers/MavLinkMultirotorApi.hpp"
#include "vehicles/multirotor/configs/RosFlightQuadX.hpp"
#include "vehicles/multirotor/configs/SimpleFlightQuadX.hpp"
#include "vehicles/multirotor/firmwares/mavlink/MavLinkMultirotorApi.hpp"
#include "vehicles/multirotor/firmwares/mavlink/Px4MultiRotor.hpp"
#include "vehicles/multirotor/firmwares/simple_flight/SimpleFlightQuadX.hpp"


namespace msr { namespace airlib {

class MultiRotorParamsFactory {
public:
static std::unique_ptr<MultiRotorParams> createConfig(const AirSimSettings::VehicleSetting* vehicle_setting, std::shared_ptr<const SensorFactory> sensor_factory)
static std::unique_ptr<MultiRotorParams> createConfig(const AirSimSettings::VehicleSetting* vehicle_setting,
std::shared_ptr<const SensorFactory> sensor_factory)
{
std::unique_ptr<MultiRotorParams> config;

if (vehicle_setting->vehicle_type == AirSimSettings::kVehicleTypePX4) {
config.reset(new Px4MultiRotor(* static_cast<const AirSimSettings::PX4VehicleSetting*>(vehicle_setting),
sensor_factory));
} else if (vehicle_setting->vehicle_type == AirSimSettings::kVehicleTypeRosFlight) {
config.reset(new RosFlightQuadX(vehicle_setting, sensor_factory));
} else if (vehicle_setting->vehicle_type == "" || //default config
vehicle_setting->vehicle_type == AirSimSettings::kVehicleTypeSimpleFlight) {
config.reset(new SimpleFlightQuadX(vehicle_setting, sensor_factory));
Expand Down

0 comments on commit 413e44d

Please sign in to comment.