Added get function for all car light states
This commit is contained in:
parent
923960751f
commit
fc133121c7
|
@ -6,6 +6,8 @@
|
|||
* Fixed colors of lane markings when importing a map, they were reversed (white and yellow)
|
||||
* Fixed missing include directive in file **WheelPhysicsControl.h**
|
||||
* Fixed gravity measurement bug from IMU sensor
|
||||
* Added PythonAPI command to set multiple car light states at once
|
||||
* Added PythonAPI `carla.world.get_vehicles_light_state` to get all the car light states at once
|
||||
* OpenDRIVE ingestion bugfixes
|
||||
* Added Dynamic Vision Sensor (DVS) camera based on ESIM simulation http://rpg.ifi.uzh.ch/esim.html
|
||||
* Added API functions `get_right_vector` and `get_up_vector`
|
||||
|
|
|
@ -26,6 +26,10 @@ namespace client {
|
|||
return _episode.Lock()->GetBlueprintLibrary();
|
||||
}
|
||||
|
||||
rpc::VehicleLightStateList World::GetVehiclesLightStates() const {
|
||||
return _episode.Lock()->GetVehiclesLightStates();
|
||||
}
|
||||
|
||||
boost::optional<geom::Location> World::GetRandomLocationFromNavigation() const {
|
||||
return _episode.Lock()->GetRandomLocationFromNavigation();
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "carla/rpc/EpisodeSettings.h"
|
||||
#include "carla/rpc/VehiclePhysicsControl.h"
|
||||
#include "carla/rpc/WeatherParameters.h"
|
||||
#include "carla/rpc/VehicleLightStateList.h"
|
||||
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
|
@ -59,6 +60,10 @@ namespace client {
|
|||
/// can be used to spawning actor into the world.
|
||||
SharedPtr<BlueprintLibrary> GetBlueprintLibrary() const;
|
||||
|
||||
/// Returns a list of pairs where the firts element is the vehicle ID
|
||||
/// and the second one is the light state
|
||||
rpc::VehicleLightStateList GetVehiclesLightStates() const;
|
||||
|
||||
/// Get a random location from the pedestrians navigation mesh
|
||||
boost::optional<geom::Location> GetRandomLocationFromNavigation() const;
|
||||
|
||||
|
|
|
@ -315,6 +315,10 @@ namespace detail {
|
|||
_pimpl->AsyncCall("freeze_traffic_light", traffic_light, freeze);
|
||||
}
|
||||
|
||||
rpc::VehicleLightStateList Client::GetVehiclesLightStates() {
|
||||
return _pimpl->CallAndWait<std::vector<std::pair<carla::ActorId, uint32_t>>>("get_vehicle_light_states");
|
||||
}
|
||||
|
||||
std::vector<ActorId> Client::GetGroupTrafficLights(rpc::ActorId traffic_light) {
|
||||
using return_t = std::vector<ActorId>;
|
||||
return _pimpl->CallAndWait<return_t>("get_group_traffic_lights", traffic_light);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "carla/rpc/VehicleLightState.h"
|
||||
#include "carla/rpc/WeatherParameters.h"
|
||||
#include "carla/rpc/OpendriveGenerationParameters.h"
|
||||
#include "carla/rpc/VehicleLightStateList.h"
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
|
@ -203,6 +204,10 @@ namespace detail {
|
|||
rpc::ActorId traffic_light,
|
||||
bool freeze);
|
||||
|
||||
/// Returns a list of pairs where the firts element is the vehicle ID
|
||||
/// and the second one is the light state
|
||||
rpc::VehicleLightStateList GetVehiclesLightStates();
|
||||
|
||||
std::vector<ActorId> GetGroupTrafficLights(
|
||||
rpc::ActorId traffic_light);
|
||||
|
||||
|
|
|
@ -161,6 +161,10 @@ namespace detail {
|
|||
return MakeShared<BlueprintLibrary>(std::move(defs));
|
||||
}
|
||||
|
||||
rpc::VehicleLightStateList Simulator::GetVehiclesLightStates() {
|
||||
return _client.GetVehiclesLightStates();
|
||||
}
|
||||
|
||||
SharedPtr<Actor> Simulator::GetSpectator() {
|
||||
return MakeActor(_client.GetSpectator());
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "carla/client/detail/WalkerNavigation.h"
|
||||
#include "carla/profiler/LifetimeProfiled.h"
|
||||
#include "carla/rpc/TrafficLightState.h"
|
||||
#include "carla/rpc/VehicleLightStateList.h"
|
||||
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
|
@ -197,6 +198,10 @@ namespace detail {
|
|||
|
||||
SharedPtr<BlueprintLibrary> GetBlueprintLibrary();
|
||||
|
||||
/// Returns a list of pairs where the firts element is the vehicle ID
|
||||
/// and the second one is the light state
|
||||
rpc::VehicleLightStateList GetVehiclesLightStates();
|
||||
|
||||
SharedPtr<Actor> GetSpectator();
|
||||
|
||||
rpc::EpisodeSettings GetEpisodeSettings() {
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
// Copyright (c) 2020 Computer Vision Center (CVC) at the Universitat Autonoma
|
||||
// de Barcelona (UAB).
|
||||
//
|
||||
// This work is licensed under the terms of the MIT license.
|
||||
// For a copy, see <https://opensource.org/licenses/MIT>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "carla/rpc/ActorId.h"
|
||||
#include "carla/rpc/VehicleLightState.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
namespace carla {
|
||||
namespace rpc {
|
||||
|
||||
using VehicleLightStateList =
|
||||
std::vector<std::pair<ActorId, VehicleLightState::flag_type>>;
|
||||
|
||||
} // namespace rpc
|
||||
} // namespace carla
|
|
@ -61,6 +61,15 @@ static auto GetActorsById(carla::client::World &self, const boost::python::list
|
|||
return self.GetActors(ids);
|
||||
}
|
||||
|
||||
static auto GetVehiclesLightStates(carla::client::World &self) {
|
||||
boost::python::dict dict;
|
||||
auto list = self.GetVehiclesLightStates();
|
||||
for (auto &vehicle : list) {
|
||||
dict[vehicle.first] = vehicle.second;
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
void export_world() {
|
||||
using namespace boost::python;
|
||||
namespace cc = carla::client;
|
||||
|
@ -136,6 +145,7 @@ void export_world() {
|
|||
.add_property("id", &cc::World::GetId)
|
||||
.add_property("debug", &cc::World::MakeDebugHelper)
|
||||
.def("get_blueprint_library", CONST_CALL_WITHOUT_GIL(cc::World, GetBlueprintLibrary))
|
||||
.def("get_vehicles_light_states", &GetVehiclesLightStates)
|
||||
.def("get_map", CONST_CALL_WITHOUT_GIL(cc::World, GetMap))
|
||||
.def("get_random_location_from_navigation", CALL_RETURNING_OPTIONAL_WITHOUT_GIL(cc::World, GetRandomLocationFromNavigation))
|
||||
.def("get_spectator", CONST_CALL_WITHOUT_GIL(cc::World, GetSpectator))
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <carla/rpc/VehicleControl.h>
|
||||
#include <carla/rpc/VehiclePhysicsControl.h>
|
||||
#include <carla/rpc/VehicleLightState.h>
|
||||
#include <carla/rpc/VehicleLightStateList.h>
|
||||
#include <carla/rpc/WalkerBoneControl.h>
|
||||
#include <carla/rpc/WalkerControl.h>
|
||||
#include <carla/rpc/WeatherParameters.h>
|
||||
|
@ -256,7 +257,7 @@ void FCarlaServer::FPimpl::BindActions()
|
|||
return UCarlaStatics::GetGameInstance(Episode->GetWorld())->IsLevelPendingLoad();
|
||||
};
|
||||
|
||||
BIND_SYNC(copy_opendrive_to_file) << [this](const std::string &opendrive, carla::rpc::OpendriveGenerationParameters Params) -> R<void>
|
||||
BIND_SYNC(copy_opendrive_to_file) << [this](const std::string &opendrive, cr::OpendriveGenerationParameters Params) -> R<void>
|
||||
{
|
||||
REQUIRE_CARLA_EPISODE();
|
||||
if (!Episode->LoadNewOpendriveEpisode(cr::ToLongFString(opendrive), Params))
|
||||
|
@ -895,6 +896,27 @@ void FCarlaServer::FPimpl::BindActions()
|
|||
return R<void>::Success();
|
||||
};
|
||||
|
||||
BIND_SYNC(get_vehicle_light_states) << [this]() -> R<cr::VehicleLightStateList>
|
||||
{
|
||||
REQUIRE_CARLA_EPISODE();
|
||||
cr::VehicleLightStateList List;
|
||||
|
||||
auto It = Episode->GetActorRegistry().begin();
|
||||
for (; It != Episode->GetActorRegistry().end(); ++It)
|
||||
{
|
||||
auto Actor = It->GetActor();
|
||||
if (!Actor->IsPendingKill() and It->GetActorType() == FActorView::ActorType::Vehicle)
|
||||
{
|
||||
const ACarlaWheeledVehicle *Vehicle = Cast<ACarlaWheeledVehicle>(Actor);
|
||||
List.emplace_back(
|
||||
It->GetActorId(),
|
||||
cr::VehicleLightState(Vehicle->GetVehicleLightState()).GetLightStateAsValue());
|
||||
}
|
||||
}
|
||||
|
||||
return List;
|
||||
};
|
||||
|
||||
BIND_SYNC(get_group_traffic_lights) << [this](
|
||||
const cr::ActorId ActorId) -> R<std::vector<cr::ActorId>>
|
||||
{
|
||||
|
|
|
@ -289,7 +289,7 @@ FVehiclePhysicsControl ACarlaWheeledVehicle::GetVehiclePhysicsControl()
|
|||
return PhysicsControl;
|
||||
}
|
||||
|
||||
FVehicleLightState ACarlaWheeledVehicle::GetVehicleLightState()
|
||||
FVehicleLightState ACarlaWheeledVehicle::GetVehicleLightState() const
|
||||
{
|
||||
return InputControl.LightState;
|
||||
}
|
||||
|
|
|
@ -113,7 +113,7 @@ public:
|
|||
FVehiclePhysicsControl GetVehiclePhysicsControl();
|
||||
|
||||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
FVehicleLightState GetVehicleLightState();
|
||||
FVehicleLightState GetVehicleLightState() const;
|
||||
|
||||
void ApplyVehiclePhysicsControl(const FVehiclePhysicsControl &PhysicsControl);
|
||||
|
||||
|
|
Loading…
Reference in New Issue