RapyutaSimulationPlugins
RRROS2CameraComponent.h
Go to the documentation of this file.
1 
15 #pragma once
16 
17 
18 
19 #include "Camera/CameraComponent.h"
20 
21 #include "Components/SceneCaptureComponent2D.h"
22 
23 #include "CoreMinimal.h"
24 
25 #include "Engine/TextureRenderTarget2D.h"
26 
27 
28 
29 // rclUE
30 
31 #include <Msgs/ROS2Img.h>
32 
33 
34 
35 // RapyutaSimulationPlugins
36 
37 #include "Core/RRConversionUtils.h"
38 
40 
41 
42 
43 #include "RRROS2CameraComponent.generated.h"
44 
45 
46 
61 
62 {
63 
64  TArray<FColor> Image;
65 
66  FRenderCommandFence RenderFence;
67 
68 };
69 
70 
71 
72 
77 enum class EROS2CameraType : uint8
78 
79 {
80 
81  RGB ,
82 
83  DEPTH ,
84 
85 };
86 
87 
88 
110 class RAPYUTASIMULATIONPLUGINS_API URRROS2CameraComponent : public URRROS2BaseSensorComponent
111 
112 {
113 
114 
115 
116 public:
117 
127 
128 
129 
142  virtual void PreInitializePublisher(UROS2NodeComponent* InROS2Node, const FString& InTopicName) override;
143 
144 
145 
156  virtual void SensorUpdate() override;
157 
158 
159 
160 protected:
161 
175  void CaptureNonBlocking();
176 
177 
178 
180 
181  TQueue<FRenderRequest*> RenderRequestQueue;
182 
183 
184 
186 
187  FROSImg Data;
188 
189 
190 
191  int32 QueueCount = 0;
192 
193 
194 
195 public:
196 
198 
199 
204  UCameraComponent* CameraComponent = nullptr;
205 
206 
207 
208 
213  USceneCaptureComponent2D* SceneCaptureComponent = nullptr;
214 
215 
216 
217 
222  UTextureRenderTarget2D* RenderTarget = nullptr;
223 
224 
225 
226 
231  int32 Width = 640;
232 
233 
234 
235 
240  int32 Height = 480;
241 
242 
243 
244 
249  int32 QueueSize = 2;
250 
251 
252 
253 
259 
260 
261 
262  // ROS
263 
279  virtual FROSImg GetROS2Data();
280 
281 
282 
293  virtual void SetROS2Msg(UROS2GenericMsg* InMessage) override;
294 
295 
296 
297 
302  FString Encoding = TEXT("rgb8");
303 
304 };
305 
FRenderRequest::Image
TArray< FColor > Image
Definition: RRROS2CameraComponent.h:64
URRROS2BaseSensorComponent::SetROS2Msg
virtual void SetROS2Msg(UROS2GenericMsg *InMessage)
Set sensor data to ROS 2 msg. This method should be overwritten by child class.
Definition: RRROS2BaseSensorComponent.h:367
URRROS2BaseSensorComponent::SensorUpdate
virtual void SensorUpdate()
Update Sensor data. This method should be overwritten by child class.
Definition: RRROS2BaseSensorComponent.h:348
FRenderRequest::RenderFence
FRenderCommandFence RenderFence
Definition: RRROS2CameraComponent.h:66
URRROS2CameraComponent::RenderRequestQueue
TQueue< FRenderRequest * > RenderRequestQueue
Definition: RRROS2CameraComponent.h:181
FRenderRequest
used in ::CaptureNonBlocking of URRROS2CameraComponent
Definition: RRROS2CameraComponent.h:60
EROS2CameraType
EROS2CameraType
Definition: RRROS2CameraComponent.h:77
URRROS2CameraComponent
ROS 2 Camera component. Uses USceneCaptureComponent2D.
Definition: RRROS2CameraComponent.h:110
RRROS2BaseSensorComponent.h
Base ROS 2 Sensor Component class. Other sensors class should inherit from this class.
URRROS2BaseSensorComponent::PreInitializePublisher
virtual void PreInitializePublisher(UROS2NodeComponent *InROS2Node, const FString &InTopicName=TEXT(""))
Set publish frequency, topic name and FrameId.
EROS2CameraType::RGB
@ RGB
UMETA(DisplayName = "RGB"),.
URRROS2BaseSensorComponent
Base ROS 2 Sensor Component class. Other sensors class should inherit from this class.
Definition: RRROS2BaseSensorComponent.h:175
RRConversionUtils.h
Convertions between ROS and UE, i.e.
URRROS2CameraComponent::Data
FROSImg Data
Definition: RRROS2CameraComponent.h:187
ERRSensorType::DEPTH
@ DEPTH