RapyutaSimulationPlugins
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
URRROS2CameraComponent Class Reference

ROS 2 Camera component. Uses USceneCaptureComponent2D. More...

#include <RRROS2CameraComponent.h>

Inheritance diagram for URRROS2CameraComponent:
Inheritance graph
[legend]
Collaboration diagram for URRROS2CameraComponent:
Collaboration graph
[legend]

Public Member Functions

 URRROS2CameraComponent ()
 Construct a new URRROS2CameraComponent object. More...
 
virtual void PreInitializePublisher (UROS2NodeComponent *InROS2Node, const FString &InTopicName) override
 Initialize Data and RenderTarget, set SceneCaptureComponent parameters. More...
 
virtual void SensorUpdate () override
 Update sensor data by CaptureScene and CaptureNonBlocking. More...
 
virtual FROSImg GetROS2Data ()
 Update ROS 2 Msg structure from RenderRequestQueue. More...
 
virtual void SetROS2Msg (UROS2GenericMsg *InMessage) override
 Set result of GetROS2Data to InMessage. More...
 
- Public Member Functions inherited from URRROS2BaseSensorComponent
 URRROS2BaseSensorComponent ()
 Construct a new URRROS2BaseSensorComponent object. More...
 
virtual void InitalizeWithROS2 (UROS2NodeComponent *InROS2Node, const FString &InPublisherName=TEXT(""), const FString &InTopicName=TEXT(""), const UROS2QoS InQoS=UROS2QoS::SensorData)
 Create and initialize publisher and start sensor update by calling. More...
 
virtual void CreatePublisher (const FString &InPublisherName=TEXT(""))
 Create a Publisher with SensorPublisherClass. More...
 
virtual void InitializePublisher (UROS2NodeComponent *InROS2Node, const UROS2QoS InQoS=UROS2QoS::SensorData)
 Initialize Sensorpublisher by using UROS2Publisher's methods. More...
 
virtual void Run ()
 Start timer to update and publish sensor data by using SetTimer. More...
 
virtual void Stop ()
 Stop timer to update and publish sensor data by using ClearTimer. More...
 

Public Attributes

UCameraComponent * CameraComponent = nullptr
 Camera. Not necessary to capture but useful to see image in UE4 windows. More...
 
USceneCaptureComponent2D * SceneCaptureComponent = nullptr
 
UTextureRenderTarget2D * RenderTarget = nullptr
 
int32 Width = 640
 
int32 Height = 480
 
int32 QueueSize = 2
 
EROS2CameraType CameraType = EROS2CameraType::RGB
 
FString Encoding = TEXT("rgb8")
 
- Public Attributes inherited from URRROS2BaseSensorComponent
TSubclassOf< UROS2Publisher > SensorPublisherClass = URRROS2BaseSensorPublisher::StaticClass()
 
URRROS2BaseSensorPublisherSensorPublisher = nullptr
 
TSubclassOf< UROS2GenericMsg > MsgClass = UROS2GenericMsg::StaticClass()
 
FString TopicName = TEXT("sensor_data")
 
FString FrameId = TEXT("sensor_frame")
 
int32 PublicationFrequencyHz = 30
 
bool bAppendNodeNamespace = true
 Append namespace to FrameId or not. More...
 
bool bIsValid = true
 

Protected Member Functions

void CaptureNonBlocking ()
 Capture data by notifing task in RenderRequestQueue. More...
 

Protected Attributes

TQueue< FRenderRequest * > RenderRequestQueue
 
FROSImg Data
 
int32 QueueCount = 0
 
- Protected Attributes inherited from URRROS2BaseSensorComponent
FTimerHandle TimerHandle
 

Detailed Description

ROS 2 Camera component. Uses USceneCaptureComponent2D.

See also
USceneCaptureComponent2D
UE4 ShaderInPlugin
implementation reference: https://github.com/TimmHess/UnrealImageCapture
Todo:
Support non RGB data support.

UCLASS(ClassGroup = (Custom), Blueprintable, meta = (BlueprintSpawnableComponent))

Constructor & Destructor Documentation

◆ URRROS2CameraComponent()

URRROS2CameraComponent::URRROS2CameraComponent ( )

Construct a new URRROS2CameraComponent object.

Initialize SceneCaptureComponent and CameraComponent.

Member Function Documentation

◆ CaptureNonBlocking()

void URRROS2CameraComponent::CaptureNonBlocking ( )
protected

Capture data by notifing task in RenderRequestQueue.

See also
reference https://github.com/TimmHess/UnrealImageCapture

UFUNCTION()

◆ GetROS2Data()

virtual FROSImg URRROS2CameraComponent::GetROS2Data ( )
virtual

Update ROS 2 Msg structure from RenderRequestQueue.

Returns
FROSImg

UFUNCTION(BlueprintCallable)

◆ PreInitializePublisher()

virtual void URRROS2CameraComponent::PreInitializePublisher ( UROS2NodeComponent *  InROS2Node,
const FString &  InTopicName 
)
overridevirtual

Initialize Data and RenderTarget, set SceneCaptureComponent parameters.

Parameters
InROS2NodeROS2Node which this publisher belongs to
InTopicName

Reimplemented from URRROS2BaseSensorComponent.

◆ SensorUpdate()

virtual void URRROS2CameraComponent::SensorUpdate ( )
overridevirtual

Update sensor data by CaptureScene and CaptureNonBlocking.

See also
CaptureScene
Todo:
Should CaptureNonBlocking called in TickComponents?

Reimplemented from URRROS2BaseSensorComponent.

◆ SetROS2Msg()

virtual void URRROS2CameraComponent::SetROS2Msg ( UROS2GenericMsg *  InMessage)
overridevirtual

Set result of GetROS2Data to InMessage.

Parameters
InMessage

Reimplemented from URRROS2BaseSensorComponent.

Member Data Documentation

◆ CameraComponent

UCameraComponent* URRROS2CameraComponent::CameraComponent = nullptr

Camera. Not necessary to capture but useful to see image in UE4 windows.

UPROPERTY(VisibleAnywhere, BlueprintReadWrite)

◆ CameraType

EROS2CameraType URRROS2CameraComponent::CameraType = EROS2CameraType::RGB

◆ Data

FROSImg URRROS2CameraComponent::Data
protected

◆ Encoding

FString URRROS2CameraComponent::Encoding = TEXT("rgb8")

◆ Height

int32 URRROS2CameraComponent::Height = 480

◆ QueueCount

int32 URRROS2CameraComponent::QueueCount = 0
protected

◆ QueueSize

int32 URRROS2CameraComponent::QueueSize = 2

◆ RenderRequestQueue

TQueue<FRenderRequest*> URRROS2CameraComponent::RenderRequestQueue
protected

◆ RenderTarget

UTextureRenderTarget2D* URRROS2CameraComponent::RenderTarget = nullptr

◆ SceneCaptureComponent

USceneCaptureComponent2D* URRROS2CameraComponent::SceneCaptureComponent = nullptr

◆ Width

int32 URRROS2CameraComponent::Width = 640

The documentation for this class was generated from the following file: