Skip to content

Commit d368691

Browse files
committed
fixed ros image publisher. TODO: add camera info.
started stereo camera
1 parent 1a5bfca commit d368691

File tree

8 files changed

+1319
-35
lines changed

8 files changed

+1319
-35
lines changed

Runtime/Scripts/ROS/MessageTypes/Std/ZOROSStdMessages.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ public class HeaderMessage : ZOROSMessageInterface {
6868
// time-handling sugar is provided by the client library
6969
public TimeMessage stamp { get; set; }
7070
// Frame this data is associated with
71-
// 0: no frame
72-
// 1: global frame
7371
public string frame_id { get; set; }
7472

7573
public HeaderMessage() {

Runtime/Scripts/ROS/Unity/Publishers/ZOROSImagePublisher.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ namespace ZO.ROS.Publisher {
1010

1111
/// <summary>
1212
/// Publish /sensor/Image message.
13+
/// See: http://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/Image.html
1314
/// To test run: `rosrun image_view image_view image:=/unity_image/image _image_transport:=raw`
1415
/// </summary>
1516
public class ZOROSImagePublisher : ZOROSUnityGameObjectBase, ZOSerializationInterface {
@@ -57,7 +58,25 @@ public override void OnROSBridgeDisconnected(ZOROSUnityManager rosUnityManager)
5758
ROSBridgeConnection.UnAdvertise(ROSTopic);
5859
}
5960

61+
62+
/// <summary>
63+
/// Publishes raw camera RBG8 data as a ROS Image message.
64+
/// See: http://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/Image.html
65+
/// </summary>
66+
/// <param name="rgbCamera">The camera component</param>
67+
/// <param name="cameraId">Camera ID</param>
68+
/// <param name="width">Frame width</param>
69+
/// <param name="height">Frame height</param>
70+
/// <param name="rgbData">Raw RBG8 data </param>
71+
/// <returns></returns>
6072
private Task OnPublishRGBImageDelegate(ZORGBCamera rgbCamera, string cameraId, int width, int height, byte[] rgbData) {
73+
ZOROSTransformPublisher transformPublisher = GetComponent<ZOROSTransformPublisher>();
74+
if (transformPublisher != null) {
75+
_rosImageMessage.header.frame_id = transformPublisher.ChildFrameID;
76+
} else {
77+
_rosImageMessage.header.frame_id = Name;
78+
}
79+
6180
_rosImageMessage.header.Update();
6281
_rosImageMessage.height = (uint)height;
6382
_rosImageMessage.width = (uint)width;

Runtime/Scripts/Sensors/StereoCamera.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!1 &1268806742888531291
4+
GameObject:
5+
m_ObjectHideFlags: 0
6+
m_CorrespondingSourceObject: {fileID: 0}
7+
m_PrefabInstance: {fileID: 0}
8+
m_PrefabAsset: {fileID: 0}
9+
serializedVersion: 6
10+
m_Component:
11+
- component: {fileID: 1268806742888531290}
12+
m_Layer: 0
13+
m_Name: ROSStereoCamera
14+
m_TagString: Untagged
15+
m_Icon: {fileID: 0}
16+
m_NavMeshLayer: 0
17+
m_StaticEditorFlags: 0
18+
m_IsActive: 1
19+
--- !u!4 &1268806742888531290
20+
Transform:
21+
m_ObjectHideFlags: 0
22+
m_CorrespondingSourceObject: {fileID: 0}
23+
m_PrefabInstance: {fileID: 0}
24+
m_PrefabAsset: {fileID: 0}
25+
m_GameObject: {fileID: 1268806742888531291}
26+
m_LocalRotation: {x: 0, y: 0.7071068, z: -0, w: -0.7071068}
27+
m_LocalPosition: {x: 0, y: 2.7600002, z: 1.4099998}
28+
m_LocalScale: {x: 1, y: 1, z: 1}
29+
m_Children:
30+
- {fileID: 1477844094113187799}
31+
- {fileID: 1477844094261342780}
32+
m_Father: {fileID: 0}
33+
m_RootOrder: 0
34+
m_LocalEulerAnglesHint: {x: 0, y: 270, z: 0}
35+
--- !u!114 &1872135099
36+
MonoBehaviour:
37+
m_ObjectHideFlags: 0
38+
m_CorrespondingSourceObject: {fileID: 0}
39+
m_PrefabInstance: {fileID: 0}
40+
m_PrefabAsset: {fileID: 0}
41+
m_GameObject: {fileID: 1477844094113187792}
42+
m_Enabled: 1
43+
m_EditorHideFlags: 0
44+
m_Script: {fileID: 11500000, guid: 4eab68bc499af59ddb04d723f31065f2, type: 3}
45+
m_Name:
46+
m_EditorClassIdentifier:
47+
_updateRateHz: 30
48+
_debug: 0
49+
_currentUpdateHz: 0
50+
_currentFixedUpdateHz: 0
51+
_ROSTopic: image/left_image_raw
52+
_name: ros.publisher.image_Left_RGBCamera
53+
_rgbCameraSensor: {fileID: 1477844094113187798}
54+
--- !u!114 &1872135102
55+
MonoBehaviour:
56+
m_ObjectHideFlags: 0
57+
m_CorrespondingSourceObject: {fileID: 0}
58+
m_PrefabInstance: {fileID: 0}
59+
m_PrefabAsset: {fileID: 0}
60+
m_GameObject: {fileID: 1477844094261342779}
61+
m_Enabled: 1
62+
m_EditorHideFlags: 0
63+
m_Script: {fileID: 11500000, guid: 4eab68bc499af59ddb04d723f31065f2, type: 3}
64+
m_Name:
65+
m_EditorClassIdentifier:
66+
_updateRateHz: 30
67+
_debug: 0
68+
_currentUpdateHz: 0
69+
_currentFixedUpdateHz: 0
70+
_ROSTopic: image/right_image_raw
71+
_name: ros.publisher.image_Right_RGBCamera
72+
_rgbCameraSensor: {fileID: 1477844094261342781}
73+
--- !u!1001 &1268806744293865288
74+
PrefabInstance:
75+
m_ObjectHideFlags: 0
76+
serializedVersion: 2
77+
m_Modification:
78+
m_TransformParent: {fileID: 1268806742888531290}
79+
m_Modifications:
80+
- target: {fileID: 367586929377166707, guid: bf48e06576e6281ca91670f71ef1f6b4,
81+
type: 3}
82+
propertyPath: m_Name
83+
value: Right_RGBCamera
84+
objectReference: {fileID: 0}
85+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
86+
type: 3}
87+
propertyPath: m_RootOrder
88+
value: 1
89+
objectReference: {fileID: 0}
90+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
91+
type: 3}
92+
propertyPath: m_LocalPosition.x
93+
value: 0
94+
objectReference: {fileID: 0}
95+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
96+
type: 3}
97+
propertyPath: m_LocalPosition.y
98+
value: -0
99+
objectReference: {fileID: 0}
100+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
101+
type: 3}
102+
propertyPath: m_LocalPosition.z
103+
value: 0
104+
objectReference: {fileID: 0}
105+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
106+
type: 3}
107+
propertyPath: m_LocalRotation.w
108+
value: 0.9999999
109+
objectReference: {fileID: 0}
110+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
111+
type: 3}
112+
propertyPath: m_LocalRotation.x
113+
value: 0
114+
objectReference: {fileID: 0}
115+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
116+
type: 3}
117+
propertyPath: m_LocalRotation.y
118+
value: 0
119+
objectReference: {fileID: 0}
120+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
121+
type: 3}
122+
propertyPath: m_LocalRotation.z
123+
value: 0.0004799307
124+
objectReference: {fileID: 0}
125+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
126+
type: 3}
127+
propertyPath: m_LocalEulerAnglesHint.x
128+
value: 0
129+
objectReference: {fileID: 0}
130+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
131+
type: 3}
132+
propertyPath: m_LocalEulerAnglesHint.y
133+
value: 0
134+
objectReference: {fileID: 0}
135+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
136+
type: 3}
137+
propertyPath: m_LocalEulerAnglesHint.z
138+
value: 0.055
139+
objectReference: {fileID: 0}
140+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
141+
type: 3}
142+
propertyPath: _debug
143+
value: 1
144+
objectReference: {fileID: 0}
145+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
146+
type: 3}
147+
propertyPath: _width
148+
value: 640
149+
objectReference: {fileID: 0}
150+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
151+
type: 3}
152+
propertyPath: _height
153+
value: 480
154+
objectReference: {fileID: 0}
155+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
156+
type: 3}
157+
propertyPath: _updateRateHz
158+
value: 30
159+
objectReference: {fileID: 0}
160+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
161+
type: 3}
162+
propertyPath: _postProcessMaterial
163+
value:
164+
objectReference: {fileID: 2100000, guid: d2f03b5f033866ec6b3b16cabc66b331, type: 2}
165+
- target: {fileID: 367586929377166710, guid: bf48e06576e6281ca91670f71ef1f6b4,
166+
type: 3}
167+
propertyPath: field of view
168+
value: 73.73979
169+
objectReference: {fileID: 0}
170+
- target: {fileID: 367586929377166710, guid: bf48e06576e6281ca91670f71ef1f6b4,
171+
type: 3}
172+
propertyPath: m_FocalLength
173+
value: 1.84
174+
objectReference: {fileID: 0}
175+
m_RemovedComponents: []
176+
m_SourcePrefab: {fileID: 100100000, guid: bf48e06576e6281ca91670f71ef1f6b4, type: 3}
177+
--- !u!1 &1477844094261342779 stripped
178+
GameObject:
179+
m_CorrespondingSourceObject: {fileID: 367586929377166707, guid: bf48e06576e6281ca91670f71ef1f6b4,
180+
type: 3}
181+
m_PrefabInstance: {fileID: 1268806744293865288}
182+
m_PrefabAsset: {fileID: 0}
183+
--- !u!4 &1477844094261342780 stripped
184+
Transform:
185+
m_CorrespondingSourceObject: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
186+
type: 3}
187+
m_PrefabInstance: {fileID: 1268806744293865288}
188+
m_PrefabAsset: {fileID: 0}
189+
--- !u!114 &1477844094261342781 stripped
190+
MonoBehaviour:
191+
m_CorrespondingSourceObject: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
192+
type: 3}
193+
m_PrefabInstance: {fileID: 1268806744293865288}
194+
m_PrefabAsset: {fileID: 0}
195+
m_GameObject: {fileID: 1477844094261342779}
196+
m_Enabled: 1
197+
m_EditorHideFlags: 0
198+
m_Script: {fileID: 11500000, guid: 7de0e78cad1cc57a3b409bbb96c7af6a, type: 3}
199+
m_Name:
200+
m_EditorClassIdentifier:
201+
--- !u!1001 &1268806744434066083
202+
PrefabInstance:
203+
m_ObjectHideFlags: 0
204+
serializedVersion: 2
205+
m_Modification:
206+
m_TransformParent: {fileID: 1268806742888531290}
207+
m_Modifications:
208+
- target: {fileID: 367586929377166707, guid: bf48e06576e6281ca91670f71ef1f6b4,
209+
type: 3}
210+
propertyPath: m_Name
211+
value: Left_RGBCamera
212+
objectReference: {fileID: 0}
213+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
214+
type: 3}
215+
propertyPath: m_RootOrder
216+
value: 0
217+
objectReference: {fileID: 0}
218+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
219+
type: 3}
220+
propertyPath: m_LocalPosition.x
221+
value: 0
222+
objectReference: {fileID: 0}
223+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
224+
type: 3}
225+
propertyPath: m_LocalPosition.y
226+
value: 0
227+
objectReference: {fileID: 0}
228+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
229+
type: 3}
230+
propertyPath: m_LocalPosition.z
231+
value: 0
232+
objectReference: {fileID: 0}
233+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
234+
type: 3}
235+
propertyPath: m_LocalRotation.w
236+
value: 1
237+
objectReference: {fileID: 0}
238+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
239+
type: 3}
240+
propertyPath: m_LocalRotation.x
241+
value: 0
242+
objectReference: {fileID: 0}
243+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
244+
type: 3}
245+
propertyPath: m_LocalRotation.y
246+
value: 0
247+
objectReference: {fileID: 0}
248+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
249+
type: 3}
250+
propertyPath: m_LocalRotation.z
251+
value: 0
252+
objectReference: {fileID: 0}
253+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
254+
type: 3}
255+
propertyPath: m_LocalEulerAnglesHint.x
256+
value: 0
257+
objectReference: {fileID: 0}
258+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
259+
type: 3}
260+
propertyPath: m_LocalEulerAnglesHint.y
261+
value: 0
262+
objectReference: {fileID: 0}
263+
- target: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
264+
type: 3}
265+
propertyPath: m_LocalEulerAnglesHint.z
266+
value: 0
267+
objectReference: {fileID: 0}
268+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
269+
type: 3}
270+
propertyPath: _debug
271+
value: 1
272+
objectReference: {fileID: 0}
273+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
274+
type: 3}
275+
propertyPath: _width
276+
value: 640
277+
objectReference: {fileID: 0}
278+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
279+
type: 3}
280+
propertyPath: _height
281+
value: 480
282+
objectReference: {fileID: 0}
283+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
284+
type: 3}
285+
propertyPath: _updateRateHz
286+
value: 30
287+
objectReference: {fileID: 0}
288+
- target: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
289+
type: 3}
290+
propertyPath: _postProcessMaterial
291+
value:
292+
objectReference: {fileID: 2100000, guid: d2f03b5f033866ec6b3b16cabc66b331, type: 2}
293+
- target: {fileID: 367586929377166710, guid: bf48e06576e6281ca91670f71ef1f6b4,
294+
type: 3}
295+
propertyPath: field of view
296+
value: 73.73979
297+
objectReference: {fileID: 0}
298+
- target: {fileID: 367586929377166710, guid: bf48e06576e6281ca91670f71ef1f6b4,
299+
type: 3}
300+
propertyPath: m_FocalLength
301+
value: 1.84
302+
objectReference: {fileID: 0}
303+
m_RemovedComponents: []
304+
m_SourcePrefab: {fileID: 100100000, guid: bf48e06576e6281ca91670f71ef1f6b4, type: 3}
305+
--- !u!1 &1477844094113187792 stripped
306+
GameObject:
307+
m_CorrespondingSourceObject: {fileID: 367586929377166707, guid: bf48e06576e6281ca91670f71ef1f6b4,
308+
type: 3}
309+
m_PrefabInstance: {fileID: 1268806744434066083}
310+
m_PrefabAsset: {fileID: 0}
311+
--- !u!4 &1477844094113187799 stripped
312+
Transform:
313+
m_CorrespondingSourceObject: {fileID: 367586929377166708, guid: bf48e06576e6281ca91670f71ef1f6b4,
314+
type: 3}
315+
m_PrefabInstance: {fileID: 1268806744434066083}
316+
m_PrefabAsset: {fileID: 0}
317+
--- !u!114 &1477844094113187798 stripped
318+
MonoBehaviour:
319+
m_CorrespondingSourceObject: {fileID: 367586929377166709, guid: bf48e06576e6281ca91670f71ef1f6b4,
320+
type: 3}
321+
m_PrefabInstance: {fileID: 1268806744434066083}
322+
m_PrefabAsset: {fileID: 0}
323+
m_GameObject: {fileID: 1477844094113187792}
324+
m_Enabled: 1
325+
m_EditorHideFlags: 0
326+
m_Script: {fileID: 11500000, guid: 7de0e78cad1cc57a3b409bbb96c7af6a, type: 3}
327+
m_Name:
328+
m_EditorClassIdentifier:

Runtime/Scripts/Sensors/StereoCamera/ROSStereoCamera.prefab.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)