Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Traffic Manager API #274

Merged
merged 1 commit into from
May 25, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion traffic_manager/source/include/ActorStateCallable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class ActorStateCallable: public PipelineCallable
ActorStateMessage* actorstate_msg;

public:
ActorStateCallable(ActorStateMessage* actorstate_msg,
ActorStateCallable(
std::queue<PipelineMessage>* input_queue,
std::queue<PipelineMessage>* output_queue,
std::mutex& read_mutex,
Expand Down
2 changes: 1 addition & 1 deletion traffic_manager/source/include/ActorStateStage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class ActorStateStage: public PipelineStage
ActorStateMessage* actorstate_msg;

public:
ActorStateStage(ActorStateMessage* actorstate_msg, int output_buffer_size,
ActorStateStage(int output_buffer_size,
std::queue<PipelineMessage>* input_queue,
std::queue<PipelineMessage>* output_queue);
~ActorStateStage();
Expand Down
2 changes: 0 additions & 2 deletions traffic_manager/source/include/CarlaDataAccessLayer.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
// Data access layer to carla server
#pragma once

#include <vector>
#include <array>

Expand Down
2 changes: 0 additions & 2 deletions traffic_manager/source/include/FeederMessage.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
//Declaration of FeederMessage class members
#pragma once

#include "PipelineMessage.hpp"

namespace traffic_manager{
Expand Down
2 changes: 0 additions & 2 deletions traffic_manager/source/include/InMemoryMap.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
// Class for in memory representation of descrete map
#pragma once

#include <map>
#include <cmath>
#include "carla/Memory.h"
Expand Down
2 changes: 0 additions & 2 deletions traffic_manager/source/include/PipelineCallable.hpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
// Declaration for base class of all pipeline threads

#pragma once

#include <queue>
#include <mutex>
#include "PipelineMessage.hpp"
Expand Down
1 change: 0 additions & 1 deletion traffic_manager/source/include/PipelineMessage.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Declaration for a common base class to all messages between pipeline stages
#pragma once

#include "carla/client/Actor.h"

namespace traffic_manager {
Expand Down
4 changes: 2 additions & 2 deletions traffic_manager/source/include/RegisteredActorMessage.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Declaration of RegisteredActorMessage class
#pragma once
# pragma once
#include "PipelineMessage.hpp"

namespace traffic_manager
Expand All @@ -13,4 +13,4 @@ namespace traffic_manager
void addActor(carla::SharedPtr<carla::client::Actor> actor);
void removeActor(carla::SharedPtr<carla::client::Actor> actor);
};
}
}
1 change: 0 additions & 1 deletion traffic_manager/source/include/SimpleWaypoint.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// A simple waypoint class
#pragma once
#include "carla/Memory.h"
#include "carla/geom/Vector3D.h"
#include "carla/geom/Location.h"
Expand Down
4 changes: 2 additions & 2 deletions traffic_manager/source/src/ActorStateCallable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

namespace traffic_manager {

ActorStateCallable::ActorStateCallable(ActorStateMessage* actorstate_msg,
ActorStateCallable::ActorStateCallable(
std::queue<PipelineMessage>* input_queue,
std::queue<PipelineMessage>* output_queue,
std::mutex& read_mutex,
std::mutex& write_mutex,
int output_buffer_size):actorstate_msg(actorstate_msg),
int output_buffer_size):
PipelineCallable(input_queue,output_queue,read_mutex,write_mutex,output_buffer_size){}

ActorStateCallable::~ActorStateCallable(){}
Expand Down
10 changes: 5 additions & 5 deletions traffic_manager/source/src/ActorStateStage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

namespace traffic_manager {

ActorStateStage::ActorStateStage(ActorStateMessage* actorstate_msg, int output_buffer_size,
ActorStateStage::ActorStateStage(int output_buffer_size,
std::queue<PipelineMessage>* input_queue,
std::queue<PipelineMessage>* output_queue):actorstate_msg(actorstate_msg),
std::queue<PipelineMessage>* output_queue):
PipelineStage(1, output_buffer_size,
input_queue,output_queue,actorstate_msg){}
input_queue,output_queue,NULL){}

ActorStateStage::~ActorStateStage(){}

Expand All @@ -25,10 +25,10 @@ namespace traffic_manager {

void ActorStateStage::createPipelineCallables()
{
ActorStateCallable* actorstate_callable = new ActorStateCallable(actorstate_msg,
ActorStateCallable* actorstate_callable = new ActorStateCallable(
input_queue, output_queue,
read_mutex, write_mutex,
output_buffer_size);
threadCallables.push_back(actorstate_callable);
threadCallables.push_back(actorstate_callable);
}
}
6 changes: 5 additions & 1 deletion traffic_manager/source/src/PipelineCallable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@ void PipelineCallable::writeQueue(PipelineMessage message) {
void PipelineCallable::run() {
while(true)
{
PipelineMessage in_message;
PipelineMessage in_message;
if (input_queue!=NULL && input_queue->empty())
{
continue;
}
if (input_queue!=NULL && !input_queue->empty())
in_message = readQueue();
auto out_message = action(in_message);
Expand Down
134 changes: 69 additions & 65 deletions traffic_manager/source/test/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#include "CarlaDataAccessLayer.hpp"
#include "InMemoryMap.hpp"
#include "carla/client/Waypoint.h"
//#include "ActorReadStage.hpp"
#include "carla/client/ActorList.h"
#include "carla/client/Actor.h"
#include "RegisteredActorMessage.hpp"
Expand All @@ -15,15 +14,10 @@
#include "ActorStateMessage.hpp"
#include "ActorStateStage.hpp"

void test(traffic_manager::RegisteredActorMessage registerActorObj,
int pull, int buffer_size,
std::queue <traffic_manager::PipelineMessage> input_queue,
std::queue <traffic_manager::PipelineMessage> out_queue);
void test_get_topology(carla::SharedPtr<carla::client::Map> world_map);
void test_feeder_stage(carla::SharedPtr<carla::client::ActorList> actor_list);

void test2(traffic_manager::ActorStateMessage actor_state_obj,
int pull, int buffer_size,
std::queue <traffic_manager::PipelineMessage> input_queue,
std::queue <traffic_manager::PipelineMessage> out_queue);
void test_actor_state_stage(carla::SharedPtr<carla::client::ActorList> actor_list);

int main()
{
Expand All @@ -33,33 +27,47 @@ int main()
auto world_map = world.GetMap();
auto actorList = world.GetActors();
auto vehicle_list = actorList->Filter("vehicle.*");
traffic_manager::ActorStateMessage actor_state_obj;
traffic_manager::RegisteredActorMessage registerActorObj;
//auto registerActorObj.shared_actor_list;
for(auto it = vehicle_list->begin(); it != vehicle_list->end(); it++)
{
registerActorObj.shared_actor_list.push_back(*it);
}

test_get_topology(world_map);
// test_feeder_stage(vehicle_list);
test_actor_state_stage(vehicle_list);

std::queue <traffic_manager::PipelineMessage> input_queue;
std::queue <traffic_manager::PipelineMessage> out_queue;
return 0;
}

//test(registerActorObj, 1, 20, input_queue, out_queue);
test2(actor_state_obj, 1, 20,input_queue,out_queue);
//traffic_manager::FeederStage feeder_stage(&registerActorObj, 20, &input_queue, &out_queue);

void test_get_topology(carla::SharedPtr<carla::client::Map> world_map) {

auto dao = traffic_manager::CarlaDataAccessLayer(world_map);
auto topology = dao.getTopology();

typedef std::vector<
std::pair<
carla::SharedPtr<carla::client::Waypoint>,
carla::SharedPtr<carla::client::Waypoint>
>
> toplist;
for(toplist::iterator it = topology.begin(); it != topology.end(); it++) {
auto wp1 = it->first;
auto wp2 = it->second;
std::cout << "Segment end road IDs : " << wp1->GetRoadId() << " -- " << wp2->GetRoadId() << std::endl;
}
}

void test(traffic_manager::RegisteredActorMessage registerActorObj,
int pull, int buffer_size,
std::queue <traffic_manager::PipelineMessage> input_queue,
std::queue <traffic_manager::PipelineMessage> out_queue)
void test_feeder_stage(carla::SharedPtr<carla::client::ActorList> actor_list)
{
traffic_manager::FeederStage feeder_stage(&registerActorObj, buffer_size, &input_queue, &out_queue);
std::queue <traffic_manager::PipelineMessage> input_queue;
std::queue <traffic_manager::PipelineMessage> out_queue;

traffic_manager::RegisteredActorMessage registerActorObj;
for(auto it = actor_list->begin(); it != actor_list->end(); it++)
{
registerActorObj.shared_actor_list.push_back(*it);
}

traffic_manager::FeederStage feeder_stage(&registerActorObj, 20, &input_queue, &out_queue);
feeder_stage.start();
sleep(1);
//std::cout <<"out_queue size : " <<out_queue.size()<< std::endl;

int count = 20;
while(!out_queue.empty() && count > 0)
{
Expand All @@ -73,50 +81,46 @@ void test(traffic_manager::RegisteredActorMessage registerActorObj,
while(true);
}

void test2(traffic_manager::ActorStateMessage actor_state_obj,
int pull, int buffer_size,
std::queue <traffic_manager::PipelineMessage> input_queue,
std::queue <traffic_manager::PipelineMessage> out_queue)
void test_actor_state_stage(carla::SharedPtr<carla::client::ActorList> actor_list)
{
traffic_manager::ActorStateStage actorstage_obj(&actor_state_obj, buffer_size, &input_queue, &out_queue);
actorstage_obj.start();
sleep(1);
std::queue <traffic_manager::PipelineMessage> input_queue;
std::queue <traffic_manager::PipelineMessage> out_queue;
std::queue <traffic_manager::PipelineMessage> in_queue_to_actorstage;
std::queue <traffic_manager::PipelineMessage> out_queue_to_actorstage;

int count = 20;
while(!out_queue.empty() && count > 0)
traffic_manager::RegisteredActorMessage registerActorObj;
for(auto it = actor_list->begin(); it != actor_list->end(); it++)
{
auto out = out_queue.front();
out_queue.pop();

std::cout << "Actor_Type_id " << out_queue.size()<< std::endl;
//std::cout << "Actor_id " << out.getActor()->GetId() << std::endl;
count--;
registerActorObj.shared_actor_list.push_back(*it);
}
while(true);

}

traffic_manager::FeederStage feeder_stage(&registerActorObj, 20, &input_queue, &out_queue);
feeder_stage.start();
sleep(1);

//call_feeder_stage(&registerActorObj, &input_queue, &out_queue);
// int count = 20;
// while(!in_queue_to_actorstage.empty() && count > 0)
// {
// auto out = in_queue_to_actorstage.front();
// in_queue_to_actorstage.pop();

// std::cout << "Actor_id " << out.getActor()->GetId() << std::endl;
// count--;
// }

traffic_manager::ActorStateStage actorstage_obj(20, &out_queue, &out_queue_to_actorstage);
actorstage_obj.start();
sleep(1);

// int count1 = 20;
// while(!out_queue_to_actorstage.empty() && count1 > 0)
// {
// auto out = out_queue_to_actorstage.front();
// out_queue_to_actorstage.pop();

// //void test_closest_waypoint(carla::SharedPtr<carla::client::ActorList> vehicle_list, carla::SharedPtr<carla::client::Map> world_map);
// std::vector<int> getActors(carla::SharedPtr<carla::client::ActorList> _actor_list);
// int main(){
// auto client_conn = carla::client::Client("localhost", 2000);
// std::cout<<"Connected with client object : "<<client_conn.GetClientVersion()<<std::endl;
// auto world = client_conn.GetWorld();
// auto world_map = world.GetMap();
// auto actorList = world.GetActors();
// auto vehicle_list = actorList->Filter("vehicle.*");
// auto topology = world_map->GetTopology();
// auto newtopo = traffic_manager::InMemoryMap(topology);
// auto all_actors = getActors(vehicle_list);
// traffic_manager::RegisteredActorMessage actorobj;
// int actorId = actorobj.getActorID();
// std::cout << actorId << std::endl;
// // auto location = getLocation(vehicle_list);
// // auto allwayp = newtopo.getWaypoint(location);
// return 0;
// }
// std::cout << "actor state actor_id " << out.getActor()->GetId() << std::endl;
// count1--;
// }
while(true);
}