Add more options to CARLA settings

This commit is contained in:
nsubiron 2017-07-28 17:03:30 +02:00
parent 1473aa7c39
commit 2443345126
7 changed files with 29 additions and 8 deletions

View File

@ -16,8 +16,14 @@ UseNetworking=true
; the command-line switch `-world-port=N`, write and read ports will be set to ; the command-line switch `-world-port=N`, write and read ports will be set to
; N+1 and N+2 respectively. ; N+1 and N+2 respectively.
WorldPort=2000 WorldPort=2000
WritePort=2001 ; Time-out in milliseconds for the networking operations.
ReadPort=2002 ServerTimeOut=10000
; In synchronous mode, CARLA waits every tick until the control from the client
; is received.
SynchronousMode=true
; Send info about every non-player agent in the scene every frame. Slows down
; the simulation significantly.
SendNonPlayerAgentsInfo=false
[CARLA/LevelSettings] [CARLA/LevelSettings]
; Path of the vehicle class to be used for the player. Leave empty for default. ; Path of the vehicle class to be used for the player. Leave empty for default.

View File

@ -114,7 +114,8 @@ void CarlaGameController::Tick(float DeltaSeconds)
check(GameState != nullptr); check(GameState != nullptr);
if (Errc::Error == Server->SendMeasurements( if (Errc::Error == Server->SendMeasurements(
*GameState, *GameState,
Player->GetPlayerState())) { Player->GetPlayerState(),
CarlaSettings->bSendNonPlayerAgentsInfo)) {
Server = nullptr; Server = nullptr;
} }
} }

View File

@ -242,7 +242,8 @@ static void GetAgentInfo(
CarlaServer::ErrorCode CarlaServer::SendMeasurements( CarlaServer::ErrorCode CarlaServer::SendMeasurements(
const ACarlaGameState &GameState, const ACarlaGameState &GameState,
const ACarlaPlayerState &PlayerState) const ACarlaPlayerState &PlayerState,
const bool bSendNonPlayerAgentsInfo)
{ {
// Measurements. // Measurements.
carla_measurements values; carla_measurements values;
@ -259,7 +260,9 @@ CarlaServer::ErrorCode CarlaServer::SendMeasurements(
Set(player.intersection_offroad, PlayerState.GetOffRoadIntersectionFactor()); Set(player.intersection_offroad, PlayerState.GetOffRoadIntersectionFactor());
TArray<carla_agent> Agents; TArray<carla_agent> Agents;
if (bSendNonPlayerAgentsInfo) {
GetAgentInfo(GameState, Agents); GetAgentInfo(GameState, Agents);
}
values.non_player_agents = (Agents.Num() > 0 ? Agents.GetData() : nullptr); values.non_player_agents = (Agents.Num() > 0 ? Agents.GetData() : nullptr);
values.number_of_non_player_agents = Agents.Num(); values.number_of_non_player_agents = Agents.Num();

View File

@ -38,7 +38,8 @@ public:
ErrorCode SendMeasurements( ErrorCode SendMeasurements(
const ACarlaGameState &GameState, const ACarlaGameState &GameState,
const ACarlaPlayerState &PlayerState); const ACarlaPlayerState &PlayerState,
bool bSendNonPlayerAgentsInfo);
private: private:

View File

@ -88,8 +88,9 @@ static void LoadSettingsFromConfig(
ConfigFile.GetBool(S_CARLA_SERVER, TEXT("UseNetworking"), Settings.bUseNetworking); ConfigFile.GetBool(S_CARLA_SERVER, TEXT("UseNetworking"), Settings.bUseNetworking);
ConfigFile.GetInt(S_CARLA_SERVER, TEXT("WorldPort"), Settings.WorldPort); ConfigFile.GetInt(S_CARLA_SERVER, TEXT("WorldPort"), Settings.WorldPort);
ConfigFile.GetInt(S_CARLA_SERVER, TEXT("ServerTimeOut"), Settings.ServerTimeOut); ConfigFile.GetInt(S_CARLA_SERVER, TEXT("ServerTimeOut"), Settings.ServerTimeOut);
ConfigFile.GetBool(S_CARLA_SERVER, TEXT("SynchronousMode"), Settings.bSynchronousMode);
} }
ConfigFile.GetBool(S_CARLA_SERVER, TEXT("SynchronousMode"), Settings.bSynchronousMode);
ConfigFile.GetBool(S_CARLA_SERVER, TEXT("SendNonPlayerAgentsInfo"), Settings.bSendNonPlayerAgentsInfo);
// LevelSettings. // LevelSettings.
ConfigFile.GetString(S_CARLA_LEVELSETTINGS, TEXT("PlayerVehicle"), Settings.PlayerVehicle); ConfigFile.GetString(S_CARLA_LEVELSETTINGS, TEXT("PlayerVehicle"), Settings.PlayerVehicle);
ConfigFile.GetInt(S_CARLA_LEVELSETTINGS, TEXT("NumberOfVehicles"), Settings.NumberOfVehicles); ConfigFile.GetInt(S_CARLA_LEVELSETTINGS, TEXT("NumberOfVehicles"), Settings.NumberOfVehicles);
@ -203,6 +204,7 @@ void UCarlaSettings::LogSettings() const
UE_LOG(LogCarla, Log, TEXT("World Port = %d"), WorldPort); UE_LOG(LogCarla, Log, TEXT("World Port = %d"), WorldPort);
UE_LOG(LogCarla, Log, TEXT("Server Time-out = %d ms"), ServerTimeOut); UE_LOG(LogCarla, Log, TEXT("Server Time-out = %d ms"), ServerTimeOut);
UE_LOG(LogCarla, Log, TEXT("Synchronous Mode = %s"), EnabledDisabled(bSynchronousMode)); UE_LOG(LogCarla, Log, TEXT("Synchronous Mode = %s"), EnabledDisabled(bSynchronousMode));
UE_LOG(LogCarla, Log, TEXT("Send Non-Player Agents Info = %s"), EnabledDisabled(bSendNonPlayerAgentsInfo));
UE_LOG(LogCarla, Log, TEXT("[%s]"), S_CARLA_LEVELSETTINGS); UE_LOG(LogCarla, Log, TEXT("[%s]"), S_CARLA_LEVELSETTINGS);
UE_LOG(LogCarla, Log, TEXT("Player Vehicle = %s"), (PlayerVehicle.IsEmpty() ? TEXT("default") : *PlayerVehicle)); UE_LOG(LogCarla, Log, TEXT("Player Vehicle = %s"), (PlayerVehicle.IsEmpty() ? TEXT("default") : *PlayerVehicle));
UE_LOG(LogCarla, Log, TEXT("Number Of Vehicles = %d"), NumberOfVehicles); UE_LOG(LogCarla, Log, TEXT("Number Of Vehicles = %d"), NumberOfVehicles);

View File

@ -80,7 +80,11 @@ public:
* client is received. * client is received.
*/ */
UPROPERTY(Category = "CARLA Server", VisibleAnywhere, meta = (EditCondition = bUseNetworking)) UPROPERTY(Category = "CARLA Server", VisibleAnywhere, meta = (EditCondition = bUseNetworking))
bool bSynchronousMode = false; bool bSynchronousMode = true;
/** Send info about every non-player agent in the scene every frame. */
UPROPERTY(Category = "CARLA Server", VisibleAnywhere, meta = (EditCondition = bUseNetworking))
bool bSendNonPlayerAgentsInfo = false;
/// @} /// @}
// =========================================================================== // ===========================================================================

View File

@ -16,6 +16,9 @@ import carla_server_pb2 as carla_protocol
CarlaSettings = """ CarlaSettings = """
[CARLA/Server]
SynchronousMode=true
SendNonPlayerAgentsInfo=false
[CARLA/LevelSettings] [CARLA/LevelSettings]
NumberOfVehicles=10 NumberOfVehicles=10
NumberOfPedestrians=20 NumberOfPedestrians=20
@ -172,6 +175,7 @@ def test_carla_client():
logging.info('received non-initialized measurements') logging.info('received non-initialized measurements')
else: else:
logging.info('received valid measurements') logging.info('received valid measurements')
logging.info('received info of %d agents', len(data.non_player_agents))
logging.info('waiting for images') logging.info('waiting for images')
data = client.read_images() data = client.read_images()
logging.info('received %d bytes of images', len(data) if data is not None else 0) logging.info('received %d bytes of images', len(data) if data is not None else 0)