Skip to content

Commit

Permalink
fixed drone spawning at any coordinates
Browse files Browse the repository at this point in the history
  • Loading branch information
klaxalk committed Jun 22, 2024
1 parent cb8f09a commit 7cd569c
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 21 deletions.
10 changes: 8 additions & 2 deletions include/ueds_connector/serialization/serializable_shared.h
Original file line number Diff line number Diff line change
Expand Up @@ -457,13 +457,16 @@ struct Request : public Common::NetworkRequest
double x;
double y;
double z;

double pitch;
double yaw;
double roll;

bool should_collide;

template <class Archive>
void serialize(Archive& archive) {
archive(cereal::base_class<Common::NetworkRequest>(this), x, y, z, pitch, yaw, roll);
archive(cereal::base_class<Common::NetworkRequest>(this), x, y, z, pitch, yaw, roll, should_collide);
}
};

Expand Down Expand Up @@ -509,13 +512,16 @@ struct Request : public Common::NetworkRequest
double x;
double y;
double z;

double pitch;
double yaw;
double roll;

bool should_collide;

template <class Archive>
void serialize(Archive& archive) {
archive(cereal::base_class<Common::NetworkRequest>(this), x, y, z, pitch, yaw, roll);
archive(cereal::base_class<Common::NetworkRequest>(this), x, y, z, pitch, yaw, roll, should_collide);
}
};

Expand Down
4 changes: 2 additions & 2 deletions include/ueds_connector/ueds_connector.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ class UedsConnector : public SocketClient {

std::tuple<bool, Rotation, bool, Coordinates> SetRotation(const Rotation& rotation);

std::tuple<bool, Coordinates, Rotation, bool, Coordinates> SetLocationAndRotation(const Coordinates& coordinate, const Rotation& rotation);
std::tuple<bool, Coordinates, Rotation, bool, Coordinates> SetLocationAndRotation(const Coordinates& coordinate, const Rotation& rotation, const bool should_collide);

std::tuple<bool> SetLocationAndRotationAsync(const Coordinates& coordinate, const Rotation& rotation);
std::tuple<bool> SetLocationAndRotationAsync(const Coordinates& coordinate, const Rotation& rotation, const bool should_collide);

std::tuple<bool, std::vector<LidarData>, Coordinates> GetLidarData();

Expand Down
31 changes: 20 additions & 11 deletions src/ueds_connector/ueds_connector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,16 +191,21 @@ std::tuple<bool, Rotation, bool, Coordinates> UedsConnector::SetRotation(const R

/* setLocationAndRotation() //{ */

std::tuple<bool, Coordinates, Rotation, bool, Coordinates> UedsConnector::SetLocationAndRotation(const Coordinates& coordinate, const Rotation& rotation) {
std::tuple<bool, Coordinates, Rotation, bool, Coordinates> UedsConnector::SetLocationAndRotation(const Coordinates& coordinate, const Rotation& rotation,
const bool should_collide) {

Serializable::Drone::SetLocationAndRotation::Request request{};
request.x = coordinate.x;
request.y = coordinate.y;
request.z = coordinate.z;

request.x = coordinate.x;
request.y = coordinate.y;
request.z = coordinate.z;

request.pitch = rotation.pitch;
request.yaw = rotation.yaw;
request.roll = rotation.roll;

request.should_collide = should_collide;

Serializable::Drone::SetLocationAndRotation::Response response{};
const auto status = Request(request, response);
const auto success = status && response.status;
Expand Down Expand Up @@ -230,19 +235,23 @@ std::tuple<bool, Coordinates, Rotation, bool, Coordinates> UedsConnector::SetLoc

/* setLocationAndRotationAsync() //{ */

std::tuple<bool> UedsConnector::SetLocationAndRotationAsync(const Coordinates& coordinate, const Rotation& rotation) {
std::tuple<bool> UedsConnector::SetLocationAndRotationAsync(const Coordinates& coordinate, const Rotation& rotation, const bool should_collide) {

Serializable::Drone::SetLocationAndRotationAsync::Request request{};
request.x = coordinate.x;
request.y = coordinate.y;
request.z = coordinate.z;

request.x = coordinate.x;
request.y = coordinate.y;
request.z = coordinate.z;

request.pitch = rotation.pitch;
request.yaw = rotation.yaw;
request.roll = rotation.roll;

Serializable::Drone::SetLocationAndRotation::Response response{};
const auto status = Request(request, response);
const auto success = status && response.status;
request.should_collide = should_collide;

Serializable::Drone::SetLocationAndRotationAsync::Response response{};
const auto status = Request(request, response);
const auto success = status && response.status;

return std::make_tuple(success);
}
Expand Down
14 changes: 9 additions & 5 deletions src/unreal_simulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@

/* defines //{ */

#define API_VERSION 1
#define API_VERSION 2

//}

Expand Down Expand Up @@ -221,7 +221,7 @@ class UnrealSimulator : public nodelet::Nodelet {

std::vector<ueds_connector::Coordinates> ueds_world_origins_;

void updateUnrealPoses(void);
void updateUnrealPoses(const bool teleport_without_collision);

void checkForCrash(void);

Expand Down Expand Up @@ -532,6 +532,10 @@ void UnrealSimulator::onInit() {
}
}

ROS_INFO("[UnrealSimulator]: teleporting the UAVs to their spawn positions");

updateUnrealPoses(true);

ROS_INFO("[UnrealSimulator]: Unreal UAVs are initialized");

// | --------------- dynamic reconfigure server --------------- |
Expand Down Expand Up @@ -727,7 +731,7 @@ void UnrealSimulator::timerUnrealSync([[maybe_unused]] const ros::TimerEvent& ev
return;
}

updateUnrealPoses();
updateUnrealPoses(false);
}

//}
Expand Down Expand Up @@ -1306,7 +1310,7 @@ void UnrealSimulator::publishPoses(void) {

/* updateUnrealPoses() //{ */

void UnrealSimulator::updateUnrealPoses(void) {
void UnrealSimulator::updateUnrealPoses(const bool teleport_without_collision) {

// | ------------ set each UAV's position in unreal ----------- |

Expand All @@ -1330,7 +1334,7 @@ void UnrealSimulator::updateUnrealPoses(void) {
rot.roll = 180.0 * (roll / M_PI);
rot.yaw = 180.0 * (-yaw / M_PI);

ueds_connectors_[i]->SetLocationAndRotationAsync(pos, rot);
ueds_connectors_[i]->SetLocationAndRotationAsync(pos, rot, !teleport_without_collision && _collisions_);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion tmux/one_drone/config/simulator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ uav1:
x: 0.0
y: 0.0
z: 0.0
heading: 0
heading: 0.0

sensors:
lidar:
Expand Down

0 comments on commit 7cd569c

Please sign in to comment.