10#include "carla/Version.h"
27#include <rpc/rpc_error.h>
37 return response.
Get();
51 Pimpl(
const std::string &host, uint16_t port,
size_t worker_threads)
57 worker_threads > 0u ? worker_threads : std::thread::hardware_concurrency());
60 template <
typename ... Args>
61 auto RawCall(
const std::string &function, Args && ... args) {
64 }
catch (const ::rpc::timeout &) {
69 template <
typename T,
typename ... Args>
70 auto CallAndWait(
const std::string &function, Args && ... args) {
71 auto object =
RawCall(function, std::forward<Args>(args) ...);
73 auto response =
object.template as<R>();
74 if (response.HasError()) {
80 template <
typename ... Args>
81 void AsyncCall(
const std::string &function, Args && ... args) {
104 const std::string &host,
106 const size_t worker_threads)
107 : _pimpl(
std::make_unique<
Pimpl>(host, port, worker_threads)) {}
110 return _pimpl->CallAndWait<
bool>(
"is_traffic_manager_running", port);
114 return _pimpl->CallAndWait<std::pair<std::string, uint16_t>>(
"get_traffic_manager_running", port);
118 return _pimpl->CallAndWait<
bool>(
"add_traffic_manager_running", trafficManagerInfo);
122 _pimpl->AsyncCall(
"destroy_traffic_manager", port);
132 return _pimpl->GetTimeout();
140 return ::carla::version();
144 return _pimpl->CallAndWait<std::string>(
"version");
149 _pimpl->CallAndWait<
void>(
"load_new_episode", std::move(map_name), reset_settings, map_layer);
154 _pimpl->CallAndWait<
void>(
"load_map_layer", map_layer);
159 _pimpl->CallAndWait<
void>(
"unload_map_layer", map_layer);
164 _pimpl->CallAndWait<
void>(
"copy_opendrive_to_file", std::move(opendrive), params);
172 _pimpl->CallAndWait<
void>(
"apply_texture_to_actor",
ActorId, MaterialParameter, Texture);
180 _pimpl->CallAndWait<
void>(
"apply_texture_to_actor_float",
ActorId, MaterialParameter, Texture);
184 const std::vector<std::string> &objects_name,
187 _pimpl->CallAndWait<
void>(
"apply_color_texture_to_objects", objects_name, parameter, Texture);
191 const std::vector<std::string> &objects_name,
194 _pimpl->CallAndWait<
void>(
"apply_float_color_texture_to_objects", objects_name, parameter, Texture);
198 _pimpl->CallAndWait<
void>(
"set_sky_light_map", panorama,
intensity, face_size);
202 _pimpl->CallAndWait<
void>(
"clear_sky_light_map");
206 return _pimpl->CallAndWait<
bool>(
"has_sky_light_map");
210 return _pimpl->CallAndWait<std::vector<std::string>>(
"get_names_of_all_objects");
222 return _pimpl->CallAndWait<std::string>(
"get_map_data");
226 return _pimpl->CallAndWait<std::vector<uint8_t>>(
"get_navigation_mesh");
231 return _pimpl->CallAndWait<
bool>(
"is_navigation_server_side");
232 }
catch (const ::rpc::rpc_error &) {
245 return _pimpl->CallAndWait<
bool>(
"walker_start_navigation", walker);
249 return _pimpl->CallAndWait<
bool>(
"walker_go_to_location", walker, destination);
253 return _pimpl->CallAndWait<
bool>(
"walker_set_max_speed", walker, max_speed);
257 return _pimpl->CallAndWait<
bool>(
"walker_stop_navigation", walker);
261 return _pimpl->CallAndWait<
bool>(
"set_pedestrians_cross_factor", percentage);
265 return _pimpl->CallAndWait<
bool>(
"set_pedestrians_seed", seed);
274 auto requiredFiles =
_pimpl->CallAndWait<std::vector<std::string>>(
"get_required_files", folder);
279 for (
auto requiredFile : requiredFiles) {
282 log_info(
"Could not find the required file in cache, downloading... ", requiredFile);
284 log_info(
"Found the required file in cache! ", requiredFile);
288 return requiredFiles;
293 auto content =
_pimpl->CallAndWait<std::vector<uint8_t>>(
"request_file", name);
302 if (file.empty() && request_otherwise) {
310 return _pimpl->CallAndWait<std::vector<std::string>>(
"get_available_maps");
314 return _pimpl->CallAndWait<std::vector<rpc::ContentPackInfo>>(
"get_content_packs");
322 return _pimpl->CallAndWait<
bool>(
"unmount_content_pack", name);
326 return _pimpl->CallAndWait<std::vector<rpc::ActorDefinition>>(
"get_actor_definitions");
338 return _pimpl->CallAndWait<uint64_t>(
"set_episode_settings", settings);
346 _pimpl->AsyncCall(
"set_weather_parameters", weather);
350 return _pimpl->CallAndWait<
float>(
"get_imu_gravity");
354 _pimpl->AsyncCall(
"set_imu_gravity", gravity);
358 return _pimpl->CallAndWait<
bool>(
"is_weather_enabled");
362 _pimpl->AsyncCall(
"set_publish_tf", publish_tf);
366 return _pimpl->CallAndWait<
bool>(
"get_publish_tf");
370 return _pimpl->CallAndWait<std::vector<carla::geom::Transform>>(
"get_ego_spawn_points");
374 const std::vector<ActorId> &ids) {
375 using return_t = std::vector<rpc::Actor>;
376 return _pimpl->CallAndWait<return_t>(
"get_actors_by_id", ids);
397 return _pimpl->AsyncCall(
"apply_physics_control", vehicle, physics_control);
403 return _pimpl->AsyncCall(
"set_vehicle_light_state", vehicle, light_state);
409 return _pimpl->AsyncCall(
"open_vehicle_door", vehicle, door_idx);
415 return _pimpl->AsyncCall(
"close_vehicle_door", vehicle, door_idx);
421 float angle_in_deg) {
422 _pimpl->CallAndWait<
void>(
"set_wheel_steer_direction", vehicle, vehicle_wheel, angle_in_deg);
428 return _pimpl->CallAndWait<
float>(
"get_wheel_steer_angle", vehicle, wheel_location);
434 float angle_in_deg) {
435 _pimpl->CallAndWait<
void>(
"set_wheel_pitch_angle", vehicle, wheel_location, angle_in_deg);
441 return _pimpl->CallAndWait<
float>(
"get_wheel_pitch_angle", vehicle, wheel_location);
448 _pimpl->CallAndWait<
void>(
"set_wheel_suspension_offset", vehicle, wheel_location, offset);
454 return _pimpl->CallAndWait<
float>(
"get_wheel_suspension_offset", vehicle, wheel_location);
458 _pimpl->CallAndWait<
void>(
"set_wheel_animation_override", vehicle, enabled);
464 return _pimpl->CallAndWait<
rpc::Actor>(
"spawn_actor", description, transform);
478 constexpr float OneEps = 1.0f - std::numeric_limits<float>::epsilon();
480 std::cout <<
"WARNING: Transformations with translation only in the 'z' axis are ill-formed when \
481 using SpringArm or SpringArmGhost attachment. Please, be careful with that." << std::endl;
494 return _pimpl->CallAndWait<
bool>(
"destroy_actor", actor);
495 }
catch (
const std::exception &e) {
496 log_error(
"failed to destroy actor", actor,
':', e.what());
502 _pimpl->AsyncCall(
"set_actor_location", actor, location);
506 _pimpl->AsyncCall(
"set_actor_transform", actor, transform);
510 _pimpl->AsyncCall(
"set_actor_target_velocity", actor, vector);
514 _pimpl->AsyncCall(
"set_actor_target_angular_velocity", actor, vector);
518 _pimpl->AsyncCall(
"enable_actor_constant_velocity", actor, vector);
522 _pimpl->AsyncCall(
"disable_actor_constant_velocity", actor);
526 _pimpl->AsyncCall(
"enable_actor_constant_acceleration", actor, vector);
530 _pimpl->AsyncCall(
"disable_actor_constant_acceleration", actor);
534 _pimpl->AsyncCall(
"add_actor_impulse", actor, impulse);
538 _pimpl->AsyncCall(
"add_actor_impulse_at_location", actor, impulse, location);
542 _pimpl->AsyncCall(
"add_actor_force", actor, force);
546 _pimpl->AsyncCall(
"add_actor_force_at_location", actor, force, location);
550 _pimpl->AsyncCall(
"add_actor_angular_impulse", actor, vector);
554 _pimpl->AsyncCall(
"add_actor_torque", actor, vector);
559 const std::string &component_name) {
561 "get_actor_component_world_transform", actor, component_name);
566 const std::string &component_name) {
568 "get_actor_component_relative_transform", actor, component_name);
572 using return_t = std::vector<geom::Transform>;
573 return _pimpl->CallAndWait<return_t>(
"get_actor_bone_world_transforms", actor);
577 using return_t = std::vector<geom::Transform>;
578 return _pimpl->CallAndWait<return_t>(
"get_actor_bone_relative_transforms", actor);
582 using return_t = std::vector<std::string>;
583 return _pimpl->CallAndWait<return_t>(
"get_actor_component_names", actor);
587 using return_t = std::vector<std::string>;
588 return _pimpl->CallAndWait<return_t>(
"get_actor_bone_names", actor);
592 using return_t = std::vector<geom::Transform>;
593 return _pimpl->CallAndWait<return_t>(
"get_actor_socket_world_transforms", actor);
597 using return_t = std::vector<geom::Transform>;
598 return _pimpl->CallAndWait<return_t>(
"get_actor_socket_relative_transforms", actor);
602 using return_t = std::vector<std::string>;
603 return _pimpl->CallAndWait<return_t>(
"get_actor_socket_names", actor);
607 _pimpl->CallAndWait<
void>(
"set_actor_simulate_physics", actor, enabled);
611 _pimpl->CallAndWait<
void>(
"set_actor_collisions", actor, enabled);
615 _pimpl->AsyncCall(
"set_actor_dead", actor);
619 _pimpl->AsyncCall(
"set_actor_enable_gravity", actor, enabled);
623 _pimpl->AsyncCall(
"set_actor_autopilot", vehicle, enabled);
627 _pimpl->AsyncCall(
"show_vehicle_debug_telemetry", vehicle, enabled);
631 _pimpl->AsyncCall(
"apply_control_to_vehicle", vehicle, control);
635 _pimpl->AsyncCall(
"apply_ackermann_control_to_vehicle", vehicle, control);
644 _pimpl->AsyncCall(
"apply_ackermann_controller_settings", vehicle, settings);
648 _pimpl->AsyncCall(
"enable_carsim", vehicle, simfile_path);
652 _pimpl->AsyncCall(
"use_carsim_road", vehicle, enabled);
657 uint64_t MaxSubsteps,
658 float MaxSubstepDeltaTime,
659 std::string VehicleJSON,
660 std::string PowertrainJSON,
661 std::string TireJSON,
662 std::string BaseJSONPath) {
663 _pimpl->AsyncCall(
"enable_chrono_physics",
674 _pimpl->AsyncCall(
"apply_control_to_walker", walker, control);
683 _pimpl->AsyncCall(
"set_bones_transform", walker, bones);
687 _pimpl->AsyncCall(
"blend_pose", walker, blend);
691 _pimpl->AsyncCall(
"get_pose_from_animation", walker);
697 _pimpl->AsyncCall(
"set_traffic_light_state", traffic_light, traffic_light_state);
701 _pimpl->AsyncCall(
"set_traffic_light_green_time", traffic_light, green_time);
705 _pimpl->AsyncCall(
"set_traffic_light_yellow_time", traffic_light, yellow_time);
709 _pimpl->AsyncCall(
"set_traffic_light_red_time", traffic_light, red_time);
713 _pimpl->AsyncCall(
"freeze_traffic_light", traffic_light, freeze);
717 _pimpl->AsyncCall(
"reset_traffic_light_group", traffic_light);
721 _pimpl->CallAndWait<
void>(
"reset_all_traffic_lights");
725 _pimpl->AsyncCall(
"freeze_all_traffic_lights", frozen);
729 using return_t = std::vector<geom::BoundingBox>;
730 return _pimpl->CallAndWait<return_t>(
"get_light_boxes", traffic_light);
734 return _pimpl->CallAndWait<std::vector<std::pair<carla::ActorId, uint32_t>>>(
"get_vehicle_light_states");
738 using return_t = std::vector<geom::Transform>;
739 return _pimpl->CallAndWait<return_t>(
"get_vehicle_bone_world_transforms", actor);
743 using return_t = std::vector<ActorId>;
744 return _pimpl->CallAndWait<return_t>(
"get_group_traffic_lights", traffic_light);
748 return _pimpl->CallAndWait<std::string>(
"start_recorder", name, additional_data, stop_replayer);
752 return _pimpl->AsyncCall(
"stop_recorder");
756 return _pimpl->CallAndWait<std::string>(
"show_recorder_file_info", name, show_all);
760 return _pimpl->CallAndWait<std::string>(
"show_recorder_collisions", name, type1, type2);
764 return _pimpl->CallAndWait<std::string>(
"show_recorder_actors_blocked", name, min_time, min_distance);
768 std::string name,
double start,
double duration,
769 uint32_t follow_id,
bool replay_sensors,
bool replay_weather,
const geom::Transform& offset,
770 std::string map_override) {
771 return _pimpl->CallAndWait<std::string>(
"replay_file", name, start, duration,
772 follow_id, replay_sensors, replay_weather, offset, map_override);
776 _pimpl->AsyncCall(
"stop_replayer", keep_actors);
780 _pimpl->AsyncCall(
"set_replayer_time_factor", time_factor);
784 _pimpl->AsyncCall(
"set_replayer_ignore_hero", ignore_hero);
788 _pimpl->AsyncCall(
"set_replayer_ignore_spectator", ignore_spectator);
793 std::function<
void(
Buffer)> callback) {
796 _pimpl->streaming_client.Subscribe(receivedToken, std::move(callback));
800 _pimpl->streaming_client.UnSubscribe(token);
804 _pimpl->streaming_client.Stop();
825 std::function<
void(
Buffer)> callback)
827 std::vector<unsigned char> token_data =
_pimpl->CallAndWait<std::vector<unsigned char>>(
"get_gbuffer_token",
ActorId, GBufferId);
829 std::memcpy(&token.data[0u], token_data.data(), token_data.size());
830 _pimpl->streaming_client.Subscribe(token, std::move(callback));
837 std::vector<unsigned char> token_data =
_pimpl->CallAndWait<std::vector<unsigned char>>(
"get_gbuffer_token",
ActorId, GBufferId);
839 std::memcpy(&token.data[0u], token_data.data(), token_data.size());
840 _pimpl->streaming_client.UnSubscribe(token);
848 _pimpl->AsyncCall(
"draw_debug_shape", shape);
852 _pimpl->AsyncCall(
"clear_debug_shape");
856 _pimpl->AsyncCall(
"clear_debug_string");
860 const std::vector<float> &vertices,
861 const std::vector<uint32_t> &triangles,
862 const std::string &material) {
863 _pimpl->CallAndWait<
void>(
"spawn_custom_mesh", vertices, triangles, material);
867 _pimpl->AsyncCall(
"apply_batch", std::move(commands), do_tick_cue);
871 std::vector<rpc::Command> commands,
873 auto result =
_pimpl->RawCall(
"apply_batch", std::move(commands), do_tick_cue);
874 return result.as<std::vector<rpc::CommandResponse>>();
878 return _pimpl->CallAndWait<uint64_t>(
"tick_cue");
882 using return_t = std::vector<rpc::LightState>;
883 return _pimpl->CallAndWait<return_t>(
"query_lights_state",
_pimpl->endpoint);
887 _pimpl->AsyncCall(
"update_lights_state",
_pimpl->endpoint, std::move(lights), discard_client);
891 _pimpl->AsyncCall(
"update_day_night_cycle",
_pimpl->endpoint, active);
895 using return_t = std::vector<geom::BoundingBox>;
896 return _pimpl->CallAndWait<return_t>(
"get_all_level_BBs", queried_tag);
900 using return_t = std::vector<rpc::EnvironmentObject>;
901 return _pimpl->CallAndWait<return_t>(
"get_environment_objects", queried_tag);
905 std::vector<uint64_t> env_objects_ids,
907 _pimpl->AsyncCall(
"enable_environment_objects", std::move(env_objects_ids), enable);
912 using return_t = std::pair<bool,rpc::LabelledPoint>;
913 return _pimpl->CallAndWait<return_t>(
"project_point", location, direction, search_distance);
918 using return_t = std::vector<rpc::LabelledPoint>;
919 return _pimpl->CallAndWait<return_t>(
"cast_ray", start_location, end_location);
924 return _pimpl->CallAndWait<std::string>(
"get_actor_name", actor);
929 return _pimpl->CallAndWait<std::string>(
"get_actor_class_name", actor);
#define DEBUG_ASSERT(predicate)
static std::vector< uint8_t > ReadFile(std::string_view path)
static bool FileExists(std::string_view file)
static bool SetFilesBaseFolder(std::string_view path)
static bool WriteFile(std::string_view path, std::vector< uint8_t > content)
const std::string endpoint
void AsyncCall(const std::string &function, Args &&... args)
auto RawCall(const std::string &function, Args &&... args)
Pimpl(const std::string &host, uint16_t port, size_t worker_threads)
streaming::Client streaming_client
time_duration GetTimeout() const
auto CallAndWait(const std::string &function, Args &&... args)
void SetReplayerIgnoreHero(bool ignore_hero)
void SetTrafficLightRedTime(rpc::ActorId traffic_light, float red_time)
void ApplyControlToWalker(rpc::ActorId walker, const rpc::WalkerControl &control)
bool WalkerGoToLocation(rpc::ActorId walker, const geom::Location &destination) const
bool SetPedestriansSeed(uint32_t seed) const
Seed for the server-side navigation RNG (crosser draw); applies to walkers whose navigation starts af...
std::vector< geom::Transform > GetVehicleBoneWorldTransforms(rpc::ActorId actor)
std::string GetClientVersion()
void OpenVehicleDoor(rpc::ActorId vehicle, const rpc::VehicleDoor door_idx)
const std::string GetEndpoint() const
float GetWheelSuspensionOffset(rpc::ActorId vehicle, rpc::VehicleWheelLocation wheel_location)
void SetPublishTF(bool publish_tf)
std::string ReplayFile(std::string name, double start, double duration, uint32_t follow_id, bool replay_sensors, bool replay_weather, const geom::Transform &offset, std::string map_override)
std::vector< geom::Transform > GetEgoSpawnPoints() const
rpc::WeatherParameters GetWeatherParameters()
std::vector< std::string > GetActorBoneNames(rpc::ActorId actor)
std::string GetMapData() const
void ApplyTextureToActor(rpc::ActorId ActorId, const rpc::MaterialParameter &MaterialParameter, const rpc::TextureColor &Texture)
void ApplyPhysicsControlToVehicle(rpc::ActorId vehicle, const rpc::VehiclePhysicsControl &physics_control)
void CloseVehicleDoor(rpc::ActorId vehicle, const rpc::VehicleDoor door_idx)
void LoadLevelLayer(rpc::MapLayer map_layer) const
void SetActorTargetVelocity(rpc::ActorId actor, const geom::Vector3D &vector)
geom::Transform GetActorComponentWorldTransform(rpc::ActorId actor, const std::string &component_name)
std::vector< std::string > GetAvailableMaps()
bool IsEnabledForROS(const streaming::Token &token)
void DisableForROS(const streaming::Token &token)
std::vector< rpc::ContentPackInfo > GetContentPacks()
bool SetFilesBaseFolder(const std::string &path)
void Send(rpc::ActorId ActorId, const rpc::CustomV2XBytes &data)
rpc::VehicleLightState GetVehicleLightState(rpc::ActorId vehicle) const
rpc::EpisodeInfo GetEpisodeInfo()
void SetWheelAnimationOverride(rpc::ActorId vehicle, bool enabled)
std::vector< rpc::Actor > GetActorsById(const std::vector< ActorId > &ids)
rpc::VehicleTelemetryData GetVehicleTelemetryData(rpc::ActorId vehicle) const
void DisableActorConstantVelocity(rpc::ActorId actor)
void EnableActorConstantVelocity(rpc::ActorId actor, const geom::Vector3D &vector)
void RequestFile(const std::string &name) const
const std::unique_ptr< Pimpl > _pimpl
rpc::AckermannControllerSettings GetAckermannControllerSettings(rpc::ActorId vehicle) const
void EnableChronoPhysics(rpc::ActorId vehicle, uint64_t MaxSubsteps, float MaxSubstepDeltaTime, std::string VehicleJSON, std::string PowertrainJSON, std::string TireJSON, std::string BaseJSONPath)
bool WalkerStartNavigation(rpc::ActorId walker) const
std::string ShowRecorderActorsBlocked(std::string name, double min_time, double min_distance)
bool GetPublishTF() const
geom::Transform GetActorComponentRelativeTransform(rpc::ActorId actor, const std::string &component_name)
std::vector< rpc::CommandResponse > ApplyBatchSync(std::vector< rpc::Command > commands, bool do_tick_cue)
void UnSubscribeFromGBuffer(rpc::ActorId ActorId, uint32_t GBufferId)
bool IsNavigationServerSide() const
True when the server hosts the pedestrian navigation (a World-Partitioned navmesh exists in the curre...
std::vector< ActorId > GetGroupTrafficLights(rpc::ActorId traffic_light)
void SetActorCollisions(rpc::ActorId actor, bool enabled)
void ApplyAckermannControllerSettings(rpc::ActorId vehicle, const rpc::AckermannControllerSettings &settings)
void ResetAllTrafficLights()
void SetActorAutopilot(rpc::ActorId vehicle, bool enabled)
float GetWheelPitchAngle(rpc::ActorId vehicle, rpc::VehicleWheelLocation wheel_location)
void UnSubscribeFromStream(const streaming::Token &token)
rpc::VehicleLightStateList GetVehiclesLightStates()
Returns a list of pairs where the firts element is the vehicle ID and the second one is the light sta...
std::vector< std::string > GetRequiredFiles(const std::string &folder="", const bool download=true) const
void LoadEpisode(std::string map_name, bool reset_settings=true, rpc::MapLayer map_layer=rpc::MapLayer::All)
void ResetTrafficLightGroup(rpc::ActorId traffic_light)
void SetIMUSensorGravity(float gravity)
std::vector< std::string > GetActorComponentNames(rpc::ActorId actor)
void SetActorLocation(rpc::ActorId actor, const geom::Location &location)
uint64_t SetEpisodeSettings(const rpc::EpisodeSettings &settings)
void ShowVehicleDebugTelemetry(rpc::ActorId vehicle, bool enabled)
void SubscribeToStream(const streaming::Token &token, std::function< void(Buffer)> callback)
void SetTrafficLightYellowTime(rpc::ActorId traffic_light, float yellow_time)
void BlendPose(rpc::ActorId walker, float blend)
void StopReplayer(bool keep_actors)
std::vector< std::string > GetNamesOfAllObjects() const
void SpawnCustomMesh(const std::vector< float > &vertices, const std::vector< uint32_t > &triangles, const std::string &material)
void CopyOpenDriveToServer(std::string opendrive, const rpc::OpendriveGenerationParameters ¶ms)
rpc::VehiclePhysicsControl GetVehiclePhysicsControl(rpc::ActorId vehicle) const
std::pair< std::string, uint16_t > GetTrafficManagerRunning(uint16_t port) const
Gets a pair filled with the <IP, port> of the Trafic Manager running on port.
std::vector< uint8_t > GetNavigationMesh() const
void EnableActorConstantAcceleration(rpc::ActorId actor, const geom::Vector3D &vector)
void AddActorImpulse(rpc::ActorId actor, const geom::Vector3D &impulse)
void DrawDebugShape(const rpc::DebugShape &shape)
void SetActorTransform(rpc::ActorId actor, const geom::Transform &transform)
void SetActorDead(rpc::ActorId actor)
void ApplyBatch(std::vector< rpc::Command > commands, bool do_tick_cue)
void StopStreaming()
Join the streaming threads; no stream callback runs afterwards.
void SetTrafficLightGreenTime(rpc::ActorId traffic_light, float green_time)
void SetWeatherParameters(const rpc::WeatherParameters &weather)
void FreezeTrafficLight(rpc::ActorId traffic_light, bool freeze)
void AddActorAngularImpulse(rpc::ActorId actor, const geom::Vector3D &vector)
void FreezeAllTrafficLights(bool frozen)
std::vector< geom::Transform > GetActorSocketWorldTransforms(rpc::ActorId actor)
bool DestroyActor(rpc::ActorId actor)
bool AddTrafficManagerRunning(std::pair< std::string, uint16_t > trafficManagerInfo) const
Informs the server that a Traffic Manager is running on <IP, port>
bool SetPedestriansCrossFactor(float percentage) const
Probability that a walker whose navigation starts after this call may cross roads (server-side naviga...
std::vector< geom::Transform > GetActorBoneWorldTransforms(rpc::ActorId actor)
bool IsTrafficManagerRunning(uint16_t port) const
Querry to know if a Traffic Manager is running on port.
void SetReplayerIgnoreSpectator(bool ignore_spectator)
std::string StartRecorder(std::string name, bool additional_data, bool stop_replayer)
std::vector< geom::BoundingBox > GetLightBoxes(rpc::ActorId traffic_light) const
float GetWheelSteerAngle(rpc::ActorId vehicle, rpc::VehicleWheelLocation wheel_location)
void AddActorForce(rpc::ActorId actor, const geom::Vector3D &force)
std::string ShowRecorderCollisions(std::string name, char type1, char type2)
void SetLightStateToVehicle(rpc::ActorId vehicle, const rpc::VehicleLightState &light_state)
std::vector< geom::BoundingBox > GetLevelBBs(uint8_t queried_tag) const
Returns all the BBs of all the elements of the level.
std::vector< uint8_t > GetCacheFile(const std::string &name, const bool request_otherwise=true) const
std::vector< rpc::LabelledPoint > CastRay(geom::Location start_location, geom::Location end_location) const
void EnableForROS(const streaming::Token &token)
void SetSkyLightMap(const rpc::TextureFloatColor &panorama, float intensity, int32_t face_size)
void EnableCarSim(rpc::ActorId vehicle, std::string simfile_path)
rpc::Actor GetSpectator()
std::string GetActorClassName(rpc::ActorId actor) const
void SetTimeout(time_duration timeout)
std::vector< geom::Transform > GetActorBoneRelativeTransforms(rpc::ActorId actor)
bool WalkerStopNavigation(rpc::ActorId walker) const
Client(const std::string &host, uint16_t port, size_t worker_threads=0u)
void SetActorEnableGravity(rpc::ActorId actor, bool enabled)
void SetActorSimulatePhysics(rpc::ActorId actor, bool enabled)
float GetIMUSensorGravity()
bool UnmountContentPack(const std::string &name)
void ApplyAckermannControlToVehicle(rpc::ActorId vehicle, const rpc::VehicleAckermannControl &control)
std::string ShowRecorderFileInfo(std::string name, bool show_all)
std::vector< rpc::ActorDefinition > GetActorDefinitions()
void SubscribeToGBuffer(rpc::ActorId ActorId, uint32_t GBufferId, std::function< void(Buffer)> callback)
void SetReplayerTimeFactor(double time_factor)
void SetTrafficLightState(rpc::ActorId traffic_light, const rpc::TrafficLightState trafficLightState)
std::string GetActorName(rpc::ActorId actor) const
std::vector< std::string > GetActorSocketNames(rpc::ActorId actor)
rpc::WalkerBoneControlOut GetBonesTransform(rpc::ActorId walker)
std::string GetServerVersion()
void SetWheelSuspensionOffset(rpc::ActorId vehicle, rpc::VehicleWheelLocation wheel_location, float offset)
void UnloadLevelLayer(rpc::MapLayer map_layer) const
void SetWheelSteerDirection(rpc::ActorId vehicle, rpc::VehicleWheelLocation vehicle_wheel, float angle_in_deg)
void SetBonesTransform(rpc::ActorId walker, const rpc::WalkerBoneControlIn &bones)
void SetActorTargetAngularVelocity(rpc::ActorId actor, const geom::Vector3D &vector)
void UseCarSimRoad(rpc::ActorId vehicle, bool enabled)
std::pair< bool, rpc::LabelledPoint > ProjectPoint(geom::Location location, geom::Vector3D direction, float search_distance) const
std::vector< rpc::EnvironmentObject > GetEnvironmentObjects(uint8_t queried_tag) const
bool WalkerSetMaxSpeed(rpc::ActorId walker, float max_speed) const
void AddActorTorque(rpc::ActorId actor, const geom::Vector3D &vector)
void UpdateServerLightsState(std::vector< rpc::LightState > &lights, bool discard_client=false) const
geom::Location GetRandomLocationFromNavigation() const
Server-side random point on the loaded navmesh.
std::vector< geom::Transform > GetActorSocketRelativeTransforms(rpc::ActorId actor)
std::vector< rpc::LightState > QueryLightsStateToServer() const
void ApplyColorTextureToObjects(const std::vector< std::string > &objects_name, const rpc::MaterialParameter ¶meter, const rpc::TextureColor &Texture)
void GetPoseFromAnimation(rpc::ActorId walker)
rpc::MapInfo GetMapInfo()
void DestroyTrafficManager(uint16_t port) const
bool HasSkyLightMap() const
void DisableActorConstantAcceleration(rpc::ActorId actor)
void ApplyControlToVehicle(rpc::ActorId vehicle, const rpc::VehicleControl &control)
rpc::Actor SpawnActorWithParent(const rpc::ActorDescription &description, const geom::Transform &transform, rpc::ActorId parent, rpc::AttachmentType attachment_type)
void UpdateDayNightCycle(const bool active) const
void EnableEnvironmentObjects(std::vector< uint64_t > env_objects_ids, bool enable) const
rpc::EpisodeSettings GetEpisodeSettings()
time_duration GetTimeout() const
void SetWheelPitchAngle(rpc::ActorId vehicle, rpc::VehicleWheelLocation wheel_location, float angle_in_deg)
rpc::ContentPackInfo MountContentPack(const std::string &path)
rpc::Actor SpawnActor(const rpc::ActorDescription &description, const geom::Transform &transform)
static constexpr auto Dot(const Vector3D &a, const Vector3D &b)
void async_call(const std::string &function, Args &&... args)
auto call(const std::string &function, Args &&... args)
void set_timeout(int64_t value)
Description of a CARLA content pack known to the server (see UCarlaContentPackManager).
Fixed-size binary payload carried by the custom V2X sensor (sensor.other.v2x_custom).
Defines the physical appearance of a vehicle whitch is obtained by the sensors.
A client able to subscribe to multiple streams.
void AsyncRun(size_t worker_threads)
A token that uniquely identify a stream.
Serializes a stream endpoint.
const auto & get_stream_id() const
Positive time duration up to milliseconds resolution.
constexpr size_t milliseconds() const noexcept
static time_duration milliseconds(size_t timeout)
static T Get(carla::rpc::Response< T > &response)
std::vector< std::pair< ActorId, VehicleLightState::flag_type > > VehicleLightStateList
std::deque< std::shared_ptr< SimpleWaypoint > > Buffer
This file contains definitions of common data structures used in traffic manager.
static void log_error(Args &&... args)
static void log_info(Args &&... args)
void throw_exception(const ExceptionT &e)
Templated on the static type so the thrown object keeps its dynamic type: taking a const std::excepti...
Vector3D MakeUnitVector(const float epsilon=2.0f *std::numeric_limits< float >::epsilon()) const
Return a unit-length copy of this vector.
Seting for map generation from opendrive without additional geometry.