21#include <unordered_map>
22#include <unordered_set>
50class AutowareVehicleStatusPublisher;
51class CarlaCameraPublisher;
52class CarlaClockPublisher;
53class CarlaTransformPublisher;
98 void *actor, std::string ros_name, std::string frame_id,
bool publish_tf);
107 void *actor, std::string ros_name, std::string frame_id,
ActorCallback callback,
108 bool enable_ackermann_control =
false,
109 bool enable_autoware_control =
false);
135 std::lock_guard<std::mutex> lock(
_mutex);
139 std::lock_guard<std::mutex> lock(
_mutex);
143 std::lock_guard<std::mutex> lock(
_mutex);
149 uint64_t sensor_type,
152 int W,
int H,
float Fov,
154 void *actor =
nullptr);
156 uint64_t sensor_type,
160 void *actor =
nullptr);
162 uint64_t sensor_type,
168 void *actor =
nullptr);
170 uint64_t sensor_type,
174 int W,
int H,
float Fov,
175 void *actor =
nullptr);
179 uint64_t sensor_type,
183 void *actor =
nullptr);
190 uint64_t sensor_type,
193 uint32_t channel_count,
194 float upper_fov_limit,
195 float lower_fov_limit,
197 void *actor =
nullptr);
199 uint64_t sensor_type,
203 void *actor =
nullptr);
205 uint64_t sensor_type,
209 void *actor =
nullptr);
211 uint64_t sensor_type,
217 void *actor =
nullptr);
219 uint64_t sensor_type,
222 uint32_t other_actor,
230 uint64_t sensor_type,
239 uint64_t sensor_type,
244 const double mgrs_offset_position[3],
245 void *actor =
nullptr);
301 template <
typename CameraT>
305 const std::string &default_prefix);
336 std::unordered_map<void *, std::shared_ptr<AutowareVehicleStatusPublisher>>
340 std::unordered_map<void *, std::shared_ptr<BasePublisher>>
_publishers;
342 std::unordered_map<void *, std::shared_ptr<CarlaTransformPublisher>>
_transforms;
345 std::unordered_multimap<void *, std::shared_ptr<BaseSubscriber>>
_subscribers;
346#if defined(WITH_ROS2_DEMO)
347 std::shared_ptr<BasicSubscriber> _basic_subscriber;
348 std::shared_ptr<BasicPublisher> _basic_publisher;
349 std::unordered_map<void *, ActorMessageCallback> _actor_message_callbacks;
std::unordered_map< void *, std::shared_ptr< CarlaTransformPublisher > > _transforms
void ProcessDataFromRadar(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, const carla::sensor::data::RadarData &data, void *actor=nullptr)
void ProcessDataFromDVS(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, const carla::SharedBufferView buffer, int W, int H, float Fov, void *actor=nullptr)
static std::shared_ptr< ROS2 > _instance
bool GetPublishTF() const
std::string GetActorRosTopicName(void *actor) const
std::atomic< bool > _enabled
std::string LookupRosName(void *actor) const
void ProcessDataFromStatusSensor(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, const carla::sensor::s11n::VehicleStatusData &data, void *vehicle_actor, void *actor)
void UnregisterVehicle(void *actor)
void RemoveBasicSubscriberCallback(void *actor)
static std::shared_ptr< ROS2 > GetInstance()
std::string BuildParentChain(void *actor) const
void SetPublishTF(bool publish_tf)
std::unordered_set< carla::streaming::detail::stream_id_type > _publish_stream
void AddActorRosTopicName(void *actor, std::string ros_topic_name)
void RemoveActorRosTopicName(void *actor)
void RegisterSensor(void *actor, std::string ros_name, std::string frame_id, bool publish_tf)
std::unordered_set< void * > _autoware_vehicles
std::unordered_map< void *, std::shared_ptr< BasePublisher > > _publishers
std::unordered_map< void *, std::vector< void * > > _actor_parents
std::shared_ptr< BasePublisher > GetOrCreateSensor(int type, carla::streaming::detail::stream_id_type id, void *actor)
std::unordered_map< void *, std::string > _actor_ros_topic_names
void ProcessDataFromIMU(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, carla::geom::Vector3D accelerometer, carla::geom::Vector3D gyroscope, float compass, void *actor=nullptr)
bool IsKnownActorLocked(void *actor) const
void ProcessDataFromObstacleDetection(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, AActor *first_actor, AActor *second_actor, float distance, void *actor=nullptr)
std::unordered_map< void *, std::shared_ptr< AutowareVehicleStatusPublisher > > _autoware_status_publishers
void ProcessDataFromAutowareGNSS(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, const carla::geom::GeoLocation &data, const carla::geom::Transform &sensor_world_transform, const double mgrs_offset_position[3], void *actor=nullptr)
void ProcessDataFromCamera(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, int W, int H, float Fov, const carla::SharedBufferView buffer, void *actor=nullptr)
bool HasTopicOverride(void *actor) const
std::unordered_map< void *, ActorCallback > _actor_callbacks
std::string LookupFrameId(void *actor) const
ROS2(const ROS2 &obj)=delete
void ProcessDataFromSemanticLidar(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, carla::sensor::data::SemanticLidarData &data, void *actor=nullptr)
std::unordered_multimap< void *, std::shared_ptr< BaseSubscriber > > _subscribers
std::shared_ptr< CarlaClockPublisher > _clock_publisher
void ProcessDataFromCollisionSensor(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, uint32_t other_actor, carla::geom::Vector3D impulse, void *actor)
void RegisterVehicle(void *actor, std::string ros_name, std::string frame_id, ActorCallback callback, bool enable_ackermann_control=false, bool enable_autoware_control=false)
std::atomic< bool > _publish_tf
std::atomic< uint64_t > _frame
std::shared_ptr< CarlaTransformPublisher > GetOrCreateTransformPublisherLocked(void *actor)
bool Enable(bool enable, Middleware middleware=Middleware::FastDDS, int domain_id=kUnsetDomainId)
Enable or disable ROS 2 publishing.
bool IsStreamEnabled(carla::streaming::detail::stream_id_type id)
void AddActorParentRosName(void *actor, void *parent)
std::unordered_map< void *, ActorRegistration > _registrations
void AddBasicSubscriberCallback(void *actor, std::string ros_name, ActorMessageCallback callback)
void SetTimestamp(double timestamp)
void UnregisterSensorLocked(void *actor)
std::shared_ptr< CarlaCameraPublisher > GetOrCreateCameraSensor(carla::streaming::detail::stream_id_type id, void *actor, const std::string &default_prefix)
void ProcessDataFromLidar(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, carla::sensor::data::LidarData &data, void *actor=nullptr)
void SetFrame(uint64_t frame)
std::string BuildBaseTopicName(void *actor) const
void ResolveAutoStreamSuffix(void *actor, const std::string &prefix, carla::streaming::detail::stream_id_type id)
void PublishTransform(void *actor, const Stamp &stamp, const carla::geom::Transform &sensor_transform)
void DropPublishersLocked(void *actor)
std::unordered_map< void *, std::shared_ptr< CarlaCameraPublisher > > _camera_publishers
void EnableStream(carla::streaming::detail::stream_id_type id)
void UnregisterSensor(void *actor)
void ProcessDataFromGNSS(uint64_t sensor_type, carla::streaming::detail::stream_id_type stream_id, const carla::geom::Transform sensor_transform, const carla::geom::GeoLocation &data, void *actor=nullptr)
std::function< void(void *actor, ROS2CallbackData data)> ActorCallback
Middleware
Enumeration of available middleware implementations.
std::function< void(void *actor, ROS2MessageCallbackData data)> ActorMessageCallback
constexpr int kUnsetDomainId
Sentinel domain id meaning "no domain id was configured on the command line"; each middleware falls b...
This file contains definitions of common data structures used in traffic manager.
std::shared_ptr< BufferView > SharedBufferView
Snapshot of a vehicle's kinematic + control state, streamed each tick by the Autoware VehicleStatusSe...