Skip to content

Commit

Permalink
Intermediate update for API refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
sytelus committed May 21, 2018
1 parent 4955485 commit e42870a
Show file tree
Hide file tree
Showing 56 changed files with 2,212 additions and 2,563 deletions.
23 changes: 11 additions & 12 deletions AirLib/AirLib.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,12 @@
<ClInclude Include="include\api\RpcLibAdapatorsBase.hpp" />
<ClInclude Include="include\api\RpcLibClientBase.hpp" />
<ClInclude Include="include\api\RpcLibServerBase.hpp" />
<ClInclude Include="include\api\SimModeApiBase.hpp" />
<ClInclude Include="include\api\WorldSimApiBase.hpp" />
<ClInclude Include="include\api\VehicleApiBase.hpp" />
<ClInclude Include="include\api\VehicleSimApiBase.hpp" />
<ClInclude Include="include\api\WorldApiBase.hpp" />
<ClInclude Include="include\common\AirSimSettings.hpp" />
<ClInclude Include="include\common\CancelToken.hpp" />
<ClInclude Include="include\common\ClockBase.hpp" />
<ClInclude Include="include\common\Common.hpp" />
<ClInclude Include="include\common\CommonStructs.hpp" />
Expand All @@ -53,7 +55,7 @@
<ClInclude Include="include\common\common_utils\Timer.hpp" />
<ClInclude Include="include\common\common_utils\type_utils.hpp" />
<ClInclude Include="include\common\common_utils\Utils.hpp" />
<ClInclude Include="include\common\common_utils\WorkerThread.hpp" />
<ClInclude Include="include\common\WorkerThread.hpp" />
<ClInclude Include="include\common\EarthCelestial.hpp" />
<ClInclude Include="include\common\SteppableClock.hpp" />
<ClInclude Include="include\common\DelayLine.hpp" />
Expand All @@ -71,13 +73,14 @@
<ClInclude Include="include\common\VectorMath.hpp" />
<ClInclude Include="include\common\common_utils\AsyncTasker.hpp" />
<ClInclude Include="include\common\ImageCaptureBase.hpp" />
<ClInclude Include="include\controllers\VehicleConnectorBase.hpp" />
<ClInclude Include="include\api\VehicleConnectorBase.hpp" />
<ClInclude Include="include\sensors\SensorFactory.hpp" />
<ClInclude Include="include\vehicles\car\api\CarApiBase.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MultirotorCommon.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MultirotorRpcLibAdapators.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MultirotorRpcLibClient.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MultirotorRpcLibServer.hpp" />
<ClInclude Include="include\vehicles\multirotor\controllers\RealMultirotorConnector.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" />
Expand Down Expand Up @@ -137,20 +140,17 @@
<ClInclude Include="include\physics\PhysicsBodyWorld.hpp" />
<ClInclude Include="include\physics\PhysicsWorld.hpp" />
<ClInclude Include="include\safety\CubeGeoFence.hpp" />
<ClInclude Include="include\vehicles\multirotor\controllers\DroneCommon.hpp" />
<ClInclude Include="include\vehicles\multirotor\controllers\DroneControllerBase.hpp" />
<ClInclude Include="include\safety\IGeoFence.hpp" />
<ClInclude Include="include\vehicles\multirotor\controllers\MavLinkDroneController.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MavLinkMultirotorApi.hpp" />
<ClInclude Include="include\safety\ObstacleMap.hpp" />
<ClInclude Include="include\controllers\PidController.hpp" />
<ClInclude Include="include\common\PidController.hpp" />
<ClInclude Include="include\vehicles\car\api\CarRpcLibAdapators.hpp" />
<ClInclude Include="include\vehicles\car\api\CarRpcLibClient.hpp" />
<ClInclude Include="include\vehicles\car\api\CarRpcLibServer.hpp" />
<ClInclude Include="include\safety\SafetyEval.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MultirotorApi.hpp" />
<ClInclude Include="include\vehicles\multirotor\api\MultirotorApiBase.h" />
<ClInclude Include="include\common\Settings.hpp" />
<ClInclude Include="include\safety\SphereGeoFence.hpp" />
<ClInclude Include="include\controllers\VehicleControllerBase.hpp" />
<ClInclude Include="include\common\Waiter.hpp" />
<ClInclude Include="include\physics\Environment.hpp" />
<ClInclude Include="include\physics\FastPhysicsEngine.hpp" />
Expand All @@ -174,7 +174,6 @@
<ClInclude Include="include\sensors\SensorBase.hpp" />
<ClInclude Include="include\sensors\SensorCollection.hpp" />
<ClInclude Include="include\vehicles\multirotor\configs\Px4MultiRotor.hpp" />
<ClInclude Include="include\controllers\ControllerBase.hpp" />
<ClInclude Include="include\vehicles\multirotor\configs\RosFlightQuadX.hpp" />
<ClInclude Include="include\vehicles\multirotor\configs\SimpleFlightQuadX.hpp" />
<ClInclude Include="include\vehicles\multirotor\MultiRotor.hpp" />
Expand All @@ -186,7 +185,7 @@
<ItemGroup>
<ClCompile Include="src\api\RpcLibClientBase.cpp" />
<ClCompile Include="src\api\RpcLibServerBase.cpp" />
<ClCompile Include="src\vehicles\multirotor\controllers\DroneControllerBase.cpp" />
<ClCompile Include="src\vehicles\multirotor\controllers\MultirotorControllerApiBase.cpp" />
<ClCompile Include="src\safety\ObstacleMap.cpp" />
<ClCompile Include="src\safety\SafetyEval.cpp" />
<ClCompile Include="src\common\common_utils\FileSystem.cpp" />
Expand Down
69 changes: 33 additions & 36 deletions AirLib/AirLib.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -165,15 +165,6 @@
<ClInclude Include="include\common\common_utils\StrictMode.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\controllers\ControllerBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\controllers\PidController.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\controllers\VehicleControllerBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\safety\CubeGeoFence.hpp">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -204,9 +195,6 @@
<ClInclude Include="include\common\common_utils\Timer.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\common\common_utils\WorkerThread.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\physics\DebugPhysicsBody.hpp">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -405,15 +393,6 @@
<ClInclude Include="include\vehicles\multirotor\firmwares\simple_flight\SimpleFlightDroneController.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\controllers\DroneCommon.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\controllers\DroneControllerBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\controllers\MavLinkDroneController.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\car\api\CarRpcLibAdapators.hpp">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -441,21 +420,9 @@
<ClInclude Include="include\api\RpcLibClientBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\api\VehicleApiBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\api\RpcLibServerBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\controllers\VehicleConnectorBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\controllers\RealMultirotorConnector.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\api\MultirotorApi.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\common\AirSimSettings.hpp">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -489,10 +456,40 @@
<ClInclude Include="include\api\WorldApiBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\api\SimModeApiBase.hpp">
<ClInclude Include="include\api\ApiServerBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\api\ApiServerBase.hpp">
<ClInclude Include="include\api\VehicleSimApiBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\api\WorldSimApiBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\vehicles\multirotor\api\MultirotorCommon.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\common\CancelToken.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\common\WorkerThread.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\api\VehicleApiBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<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>
<ClInclude Include="include\api\VehicleConnectorBase.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\common\PidController.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
Expand Down Expand Up @@ -524,7 +521,7 @@
<ClCompile Include="src\api\RpcLibServerBase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\vehicles\multirotor\controllers\DroneControllerBase.cpp">
<ClCompile Include="src\vehicles\multirotor\controllers\MultirotorControllerApiBase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
Expand Down
30 changes: 28 additions & 2 deletions AirLib/include/api/ApiServerBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,42 @@
#ifndef air_ApiServerBase_hpp
#define air_ApiServerBase_hpp

#include "common/Common.hpp"
#include <functional>

#include "common/Common.hpp"
#include "VehicleApiBase.hpp"
#include "WorldSimApiBase.hpp"

namespace msr { namespace airlib {

class ApiServerBase {
public:
virtual void start(bool block = false) = 0;
virtual void stop() = 0;

virtual const VehicleApiBase* getVehicleApi(const std::string& vehicle_name = "") const = 0;
virtual VehicleApiBase* getVehicleApi(const std::string& vehicle_name = "")
{
return const_cast<VehicleApiBase*>(getVehicleApi(vehicle_name));
}

virtual const WorldSimApiBase* getWorldSimApi() const = 0;
virtual WorldSimApiBase* getWorldSimApi()
{
return const_cast<WorldSimApiBase*>(getWorldSimApi());
}

virtual const VehicleSimApiBase* getVehicleSimApi(const std::string& vehicle_name = "") const = 0;
virtual VehicleSimApiBase* getVehicleSimApi(const std::string& vehicle_name = "")
{
auto* world_sim_api = getWorldSimApi();
if (world_sim_api) {
auto* vehicle_sim_api = getWorldSimApi()->getVehicleSimApi(vehicle_name);
return const_cast<VehicleSimApiBase*>(vehicle_sim_api);
}
return nullptr;
}


virtual ~ApiServerBase() = default;
};

Expand Down
14 changes: 14 additions & 0 deletions AirLib/include/api/DebugApiServer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,20 @@ namespace msr { namespace airlib {
{
common_utils::Utils::log("Debug server stopped");
}

virtual const VehicleApiBase* getVehicleApi() const
{
//not supported
return nullptr;
}

virtual const WorldSimApiBase* getWorldSimApi() const
{
//not supported
return nullptr;
}


virtual ~DebugApiServer() = default;
};

Expand Down
47 changes: 27 additions & 20 deletions AirLib/include/api/RpcLibClientBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,52 +11,59 @@

namespace msr { namespace airlib {

//common methods for RCP clients of different vehicles
class RpcLibClientBase {
public:
enum class ConnectionState : uint {
Initial = 0, Connected, Disconnected, Reset, Unknown
};
public:
RpcLibClientBase(const string& ip_address = "localhost", uint16_t port = 41451, uint timeout_ms = 60000);
virtual ~RpcLibClientBase(); //required for pimpl

void confirmConnection();
bool isApiControlEnabled() const;
void enableApiControl(bool is_enabled);
void resetVehicle();
void simResetWorld();
bool armDisarm(bool arm);

ConnectionState getConnectionState();
bool ping();
int getClientVersion() const;
int getServerVersion() const;
int getMinRequiredServerVersion() const;
int getMinRequiredClientVersion() const;

bool simIsPaused() const;
void simPause(bool is_paused);
void simContinueForTime(double seconds);

vector<ImageCaptureBase::ImageResponse> simGetImages(vector<ImageCaptureBase::ImageRequest> request);
vector<uint8_t> simGetImage(int camera_id, ImageCaptureBase::ImageType type);
msr::airlib::GeoPoint getHomeGeoPoint();
msr::airlib::GeoPoint getHomeGeoPoint() const;

void simSetPose(const Pose& pose, bool ignore_collision);
Pose simGetPose();
Pose simGetVehiclePose() const;
void simSetVehiclePose(const Pose& pose, bool ignore_collision);
Pose simGetObjectPose(const std::string& object_name) const;

void confirmConnection();
bool isApiControlEnabled();
void enableApiControl(bool is_enabled);
void reset();
bool armDisarm(bool arm);
vector<ImageCaptureBase::ImageResponse> simGetImages(vector<ImageCaptureBase::ImageRequest> request);
vector<uint8_t> simGetImage(int camera_id, ImageCaptureBase::ImageType type);

CollisionInfo getCollisionInfo();
CollisionInfo simGetCollisionInfo() const;

bool simSetSegmentationObjectID(const std::string& mesh_name, int object_id, bool is_name_regex = false);
int simGetSegmentationObjectID(const std::string& mesh_name);
int simGetSegmentationObjectID(const std::string& mesh_name) const;
void simPrintLogMessage(const std::string& message, std::string message_param = "", unsigned char severity = 0);

Pose simGetObjectPose(const std::string& object_name);
CameraInfo getCameraInfo(int camera_id);
CameraInfo getCameraInfo(int camera_id) const;
void setCameraOrientation(int camera_id, const Quaternionr& orientation);

bool simIsPaused();
void simPause(bool is_paused);
void simContinueForTime(double seconds);

virtual ~RpcLibClientBase(); //required for pimpl

protected:
void* getClient();
const void* getClient() const;
void* getClient()
{
return const_cast<void*>(getClient());
}

private:
struct impl;
Expand Down
12 changes: 4 additions & 8 deletions AirLib/include/api/RpcLibServerBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,24 @@

#include "common/Common.hpp"
#include "api/ApiServerBase.hpp"
#include "api/SimModeApiBase.hpp"
#include "api/WorldSimApiBase.hpp"


namespace msr { namespace airlib {


class RpcLibServerBase : public ApiServerBase {
public:
RpcLibServerBase(SimModeApiBase* simmode_api, string server_address, uint16_t port);
RpcLibServerBase(const std::string& server_address, uint16_t port);
virtual ~RpcLibServerBase() override;

virtual void start(bool block = false) override;
virtual void stop() override;
virtual ~RpcLibServerBase() override;

protected:
void* getServer() const;
SimModeApiBase* getSimModeApi() const;

private:
VehicleApiBase* getVehicleApi() const;

private:
SimModeApiBase* simmode_api_;
struct impl;
std::unique_ptr<impl> pimpl_;
};
Expand Down
Loading

0 comments on commit e42870a

Please sign in to comment.