Fixed compile issues

This commit is contained in:
Praveen Kumar 2019-12-03 10:37:02 +05:30 committed by bernat
parent 52927eaac7
commit 4e524d06f5
3 changed files with 27 additions and 26 deletions

View File

@ -119,8 +119,8 @@ namespace LocalizationConstants {
for (auto swp: waypoint_buffer) { for (auto swp: waypoint_buffer) {
RemoveOverlap(swp->GetId(), actor_id); RemoveOverlap(swp->GetId(), actor_id);
} }
uint number_of_pops = waypoint_buffer.size(); auto number_of_pops = waypoint_buffer.size();
for (uint i = 0; i < number_of_pops; ++i) { for (uint j = 0; j < number_of_pops; ++j) {
PopWaypoint(waypoint_buffer, actor_id); PopWaypoint(waypoint_buffer, actor_id);
} }

View File

@ -177,8 +177,8 @@ namespace traffic_manager {
} }
} }
bool TrafficManager::CheckAllFrozen(std::vector<cc::TrafficLight> tl_to_freeze) { bool TrafficManager::CheckAllFrozen(TLGroup tl_to_freeze) {
for (auto elem : tl_to_freeze) { for (auto& elem : tl_to_freeze) {
if (!elem->IsFrozen() or elem->GetState() != TLS::Red) { if (!elem->IsFrozen() or elem->GetState() != TLS::Red) {
return false; return false;
} }
@ -188,34 +188,34 @@ namespace traffic_manager {
void TrafficManager::ResetAllTrafficLights() { void TrafficManager::ResetAllTrafficLights() {
auto world_traffic_lights = world.GetActors()->Filter("*traffic_light*"); auto world_traffic_lights = world.GetActors()->Filter("*traffic_light*");
std::vector<TLGroup> list_of_all_groups;
std::vector<std::vector<cc::TrafficLight>> list_of_all_groups; TLGroup tl_to_freeze;
std::vector<cc::TrafficLight> tl_to_freeze;
std::vector<carla::ActorId> list_of_ids; std::vector<carla::ActorId> list_of_ids;
for (auto tl : *world_traffic_lights.get()) { for (auto tl : *world_traffic_lights.get()) {
if (std::find(list_of_ids.begin(), list_of_ids.end(), tl->GetId()) != list_of_ids.end()) { if (std::find(list_of_ids.begin(), list_of_ids.end(), tl->GetId()) != list_of_ids.end()) {
auto tl_group = boost::static_pointer_cast<cc::TrafficLight>(tl)->GetGroupTrafficLights(); TLGroup tl_group = boost::static_pointer_cast<cc::TrafficLight>(tl)->GetGroupTrafficLights();
list_of_all_groups.push_back(tl_group.at(0).get()); list_of_all_groups.push_back(tl_group);
// tl_group is a std::vector<boost::shared_ptr<carla::client::TrafficLight> // tl_group is a std::vector<boost::shared_ptr<carla::client::TrafficLight>
for (unsigned i=0; i<tl_group.size(); i++) { for (unsigned i=0; i<tl_group.size(); i++) {
// tlg is a boost::shared_ptr<carla::client::TrafficLight> // tlg is a boost::shared_ptr<carla::client::TrafficLight>
// tlg->Id is a carla::ActorId // tlg->Id is a carla::ActorId
list_of_ids.push_back(tl_group.at(i).get()->GetId()); list_of_ids.push_back(tl_group.at(i).get()->GetId());
if(i!=0) { if(i!=0) {
tl_to_freeze.push_back(tl_group.at(i).get()); tl_to_freeze.push_back(tl_group.at(i));
} }
} }
} }
} }
for (auto &tl_group : list_of_all_groups) {
tl_group.begin()->SetState(TLS::Green); for (TLGroup& tl_group : list_of_all_groups) {
for (auto tl = std::next(tl_group.begin(),1); tl != tl_group.end(); ++tl) { tl_group.front()->SetState(TLS::Green);
tl->SetState(TLS::Red); std::for_each(tl_group.begin() +1, tl_group.end(),
} [] (auto& tl) {tl->SetState(TLS::Red);});
} }
while (!CheckAllFrozen(tl_to_freeze)) { while (!CheckAllFrozen(tl_to_freeze)) {
for (auto tln : tl_to_freeze) { for (auto& tln : tl_to_freeze) {
tln->SetState(TLS::Red); tln->SetState(TLS::Red);
tln->Freeze(true); tln->Freeze(true);
} }

View File

@ -31,6 +31,7 @@ namespace cc = carla::client;
using ActorPtr = carla::SharedPtr<cc::Actor>; using ActorPtr = carla::SharedPtr<cc::Actor>;
using TLS = carla::rpc::TrafficLightState; using TLS = carla::rpc::TrafficLightState;
using TLGroup = std::vector<carla::SharedPtr<cc::TrafficLight>>;
/// The function of this class is to integrate all the various stages of /// The function of this class is to integrate all the various stages of
/// the traffic manager appropriately using messengers. /// the traffic manager appropriately using messengers.
@ -120,7 +121,7 @@ namespace cc = carla::client;
void SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance); void SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance);
/// Method to check if traffic lights are frozen. /// Method to check if traffic lights are frozen.
bool CheckAllFrozen(std::vector<cc::TrafficLight> tl_to_freeze); bool CheckAllFrozen(TLGroup tl_to_freeze);
/// Method to reset all traffic lights. /// Method to reset all traffic lights.
void ResetAllTrafficLights(); void ResetAllTrafficLights();