Financial highlights
Ultima quotazione 52,47€
Variazione -3,58%
01/06/2026 - 17:39
data source: Investis Digital
Financial highlights
Ultima quotazione 52,47€
Variazione -3,58%
01/06/2026 - 17:39
data source: Investis Digital
Financial Results & Reports
Press releases
The following has evaluated to null or missing:
==> SeparatorBackground.CantoUrl.UrlEternalMobile [in template "20115#20151#196879" at line 151, column 34]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #if SeparatorBackground.CantoUrl.UrlE... [in template "20115#20151#196879" at line 151, column 29]
----
1<#assign siteExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge() />
2<#assign new_restyle = (siteExpandoBridge.hasAttribute("new-restyle")?then(getterUtil.getBoolean(siteExpandoBridge.getAttribute("new-restyle", false)),false)) />
3<#if new_restyle?? && new_restyle>
4
5 <@leonardo.articleInfo .vars "(A, A1) Hero banner"/>
6 <section class="sticky-container">
7
8 <#if
9 (SeparatorBackground.YoutubeId.getData() == "") &&
10 (SeparatorBackground.Video.getData() == "") &&
11 !((SeparatorBackground.CantoUrl)?? && SeparatorBackground.CantoUrl.getData() != "") &&
12 (!(SeparatorBackground.Image.getData()??) || SeparatorBackground.Image.getData() == "")
13 >
14
15 <div class="container-full-width header-safe-area black">
16 <div class="container no-side-padding hero-image black">
17 <div class="text-content text-center hero-02-text-container">
18 <#if Title.getData() != "">
19 <h1 class="title-hero-02 m-0"><@leonardo.escapeTitle title=Title.getData()/></h1>
20 </#if>
21 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
22 <div class="body-medium text-center mt-4">
23 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''>
24 <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br />
25 </#if>
26 <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
27 <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/>
28 </#if>
29 </div>
30 </#if>
31 </div>
32 </div>
33 </div>
34
35 <#else>
36
37 <#if SeparatorBackground.YoutubeId.getData() == "" && SeparatorBackground.Video.getData() == "" &&
38 !((SeparatorBackground.CantoUrl)?? && SeparatorBackground.CantoUrl.getData() != "") &&
39 SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != "">
40 <#assign scalingDetails = {
41 "desktop": {"alternateImage": {}, "key": "h_560"},
42 "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_560"},
43 "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_560"},
44 "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "w_596"}
45 }>
46 <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )>
47 <!-- Image Banner -->
48 <div class="container-full-width black hero-image-small <#if !(SeparatorBackground.Image.ImageM?has_content) || SeparatorBackground.Image.ImageM.getData() ==''>product</#if>">
49 <div class="hero-bottom-gradient">
50 <picture class="bg-picture">
51 <source
52 srcset="${slideImg.mobile?replace(" ", "%20")!}"
53 media="(max-width: 576px)"
54 >
55 <source
56 srcset="${slideImg.tablet_portrait?replace(" ", "%20")!}"
57 media="(max-width: 768px)"
58 >
59 <source
60 srcset="${slideImg.tablet_landscape?replace(" ", "%20")!}"
61 media="(max-width: 1024px)"
62 >
63 <img
64 class="img-fluid bg"
65 src="${slideImg.desktop?replace(" ", "%20")!}"
66 alt="${slideImg.alt_desktop!}" fetchpriority="high" loading="eager"
67 >
68 </picture>
69
70 <div class="text-content container">
71 <#if Title.getData() != "">
72 <h1 class="title-hero-02 mb-0"><@leonardo.escapeTitle title=Title.getData()/></h1>
73 </#if>
74 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
75 <div class="body-medium text-center mt-4">
76 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''>
77 <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br />
78 </#if>
79 <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
80 <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/>
81 </#if>
82 </div>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#if SeparatorBackground.Image.ImageM.getData()?? && SeparatorBackground.Image.ImageM.getData() != "">
88 <script>
89 window.addEventListener("load", () => {
90 const EXPECTED_HEIGHT = 844;
91
92 const heroBlocks = document.querySelectorAll(
93 ".hero-image-small"
94 );
95
96 heroBlocks.forEach((heroBlock) => {
97 const picture = heroBlock.querySelector("picture.bg-picture");
98
99 if (!picture) return;
100
101 const mobileSource = Array.from(picture.querySelectorAll("source")).find(
102 (source) => source.media && source.media.includes("max-width: 576px")
103 );
104
105 if (!mobileSource) return;
106
107 const mobileSrc = (mobileSource.getAttribute("srcset") || "").trim();
108
109 const imageElement = new Image();
110
111 imageElement.onload = () => {
112 const height = imageElement.naturalHeight;
113 const isValidHeight = height >= EXPECTED_HEIGHT;
114
115 if (!isValidHeight) {
116 heroBlock.classList.add("product");
117 }
118
119 };
120
121 imageElement.onerror = () => {
122 console.warn("Errore nel caricamento della mobile image:", mobileSrc);
123 };
124
125 imageElement.src = mobileSrc;
126 });
127 });
128 </script>
129 </#if>
130
131 <#elseif (SeparatorBackground.CantoUrl.getData())?has_content>
132 <#assign autoplay = "" />
133 <#assign loop = "" />
134 <#assign bar = "" />
135 <#if (SeparatorBackground.CantoUrl.CantoAutoPlay.data)?has_content && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoAutoPlay.getData())>
136 <#assign autoplay = "autoplay muted playsinline webkit-playsinline" />
137 </#if>
138 <#if (SeparatorBackground.CantoUrl.CantoLoop.data)?has_content && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoLoop.getData())>
139 <#assign loop = "loop" />
140 </#if>
141 <#if (SeparatorBackground.CantoUrl.CantoControlBar.data)?has_content && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData())>
142 <#assign bar = "controls='controls'" />
143 </#if>
144
145
146 <!-- Canto Video Banner-->
147
148 <div class="container-full-width header-safe-area black">
149 <div class="hero-video hero-bottom-gradient <#if bar !=''>no-after</#if>">
150 <video preload="auto" ${autoplay} ${loop} ${bar} <#if bar !=''>style="z-index:4"</#if>>
151 <#if SeparatorBackground.CantoUrl.UrlEternalMobile.getData() !=''>
152 <source
153 src="${SeparatorBackground.CantoUrl.UrlEternalMobile.getData()}"
154 media="(max-width: 575.98px)"
155 type="video/mp4">
156 </#if>
157 <source
158 src="${SeparatorBackground.CantoUrl.getData()}"
159 media="(min-width: 576px)"
160 type="video/mp4">
161 </video>
162 <div class="text-content container">
163 <#if !(SeparatorBackground.CantoUrl.CantoControlBar.data?has_content
164 && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData()))>
165 <#if Title.getData() != "">
166 <h1 class="title-hero-01 mb-0">${Title.getData()}</h1>
167 </#if>
168 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
169 <div class="body-medium text-center mt-4">
170 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''>
171 <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br />
172 </#if>
173 <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
174 <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/>
175 </#if>
176 </div>
177 </#if>
178 </#if>
179 </div>
180 </div>
181 </div>
182 <script>
183 const heroVideo = document.querySelector(".hero-video video");
184 heroVideo.muted = true;
185 heroVideo.playsInline = true;
186 heroVideo.play().catch(() => {});
187 </script>
188
189 <#elseif (SeparatorBackground.YoutubeId.getData())?has_content >
190 <!-- YT Video Banner -->
191 <div class="container-full-width black">
192 <div class="hero-video hero-bottom-gradient hero-yt <#if !getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())>no-after</#if>">
193 <div class="yt-content">
194 <div class="embed-responsive embed-responsive-16by9">
195 <#assign autoplay = "" />
196 <#assign mute = "" />
197
198 <#if getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())>
199 <#assign autoplay = "?autoplay=1&mute=1&controls=0&rel=0" />
200 <#elseif getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeMute.getData())>
201 <#assign autoplay = "?mute=1&controls=1&rel=0" />
202 <#else>
203 <#assign autoplay = "?controls=1&rel=0" />
204 </#if>
205 <iframe class="embed-responsive-item" width="100%"
206 height="100%"
207 title="<#if Title.getData() != ''>${Title.getData()}<#else>video youtube</#if>"
208 frameborder="0"
209 allow="autoplay; fullscreen; encrypted-media"
210 allowfullscreen
211 playsinline src="https://www.youtube.com/embed/${SeparatorBackground.YoutubeId.getData()}${autoplay}"
212 >
213 </iframe>
214 </div>
215
216 </div>
217 <#if Title.getData() != "" || Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
218 <#if getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())>
219 <div class="text-content container">
220 <#if Title.getData() != "">
221 <h1 class="title-hero-01 mb-0"><@leonardo.escapeTitle title=Title.getData()/></h1>
222 </#if>
223 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
224 <div class="body-medium text-center mt-4">
225 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''>
226 <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br />
227 </#if>
228 <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
229 <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/>
230 </#if>
231 </div>
232 </#if>
233 </div>
234 </#if>
235 </#if>
236 </div>
237 </div>
238
239 <#elseif SeparatorBackground.Video.getData() != "">
240 <!-- Video DM -->
241 <div class="container-full-width black header-safe-area">
242 <div class="hero-video hero-bottom-gradient">
243 <video preload="auto" src="${SeparatorBackground.Video.getData()}" <#if SeparatorBackground.Video.VideoType.getData() !=''>
244 type="${SeparatorBackground.Video.VideoType.getData()}"</#if> muted autoplay loop>
245 </video>
246 <div class="text-content container">
247 <#if Title.getData() != "">
248 <h1 class="title-hero-01 mb-0"><@leonardo.escapeTitle title=Title.getData()/></h1>
249 </#if>
250 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
251 <div class="body-medium text-center mt-4">
252 <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''>
253 <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br />
254 </#if>
255 <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
256 <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/>
257 </#if>
258 </div>
259 </#if>
260 </div>
261 </div>
262 </div>
263 </#if>
264 </#if>
265 <#if Title.TextUnderHero?? && Title.TextUnderHero.getData() !=''>
266 <div class="static-text">
267 <div class="container-full-width">
268 <div class="container">
269 <div class="title-medium">
270 <#if Title.TextUnderHero?? && Title.TextUnderHero.getData() !=''>
271 ${Title.TextUnderHero.getData()}
272 <#elseif Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''>
273 <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br />
274 <#elseif Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''>
275 <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/>
276 </#if>
277 </div>
278 </div>
279 </div>
280 </div>
281 </#if>
282 </section>
283 <#if Title.TextUnderHero?? && Title.TextUnderHero.getData() !=''>
284 <script>
285 window.addEventListener('load', () => {
286 const text = document.querySelector('.sticky-container .static-text');
287 const menu = document.querySelector('.menu-fixed-grey');
288
289 if (text && menu) {
290 const heightText = text.offsetHeight;
291 const currentBottom = parseFloat(getComputedStyle(menu).bottom) || 0;
292 menu.style.bottom = (currentBottom + heightText) + 'px';
293 }
294 });
295 </script>
296 </#if>
297
298<#else>
299 <@leonardo.articleInfo .vars "(A, A1) Hero banner"/>
300
301 <style>
302 html.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:hover,
303 html.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:active,
304 html.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:focus,
305 body.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:hover,
306 body.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:active,
307 body.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:focus {
308 text-decoration: inherit;
309 color: inherit;
310 }
311
312
313 </style>
314
315
316 <#assign noOpacity = "${randomNamespace}opacity">
317
318 <#if (SeparatorBackground.Image.disableOpacityFilter.data)?has_content && getterUtil.getBoolean(SeparatorBackground.Image.disableOpacityFilter.getData()) >
319 <style>
320 html.leo18.dark-theme body #wrapper.leonardocompany .hero .hero-slide.${noOpacity}::before {
321 background-color: rgba(0, 0, 0, 0);
322 }
323 </style>
324 </#if>
325
326 <#assign rndNamespace = randomNamespace>
327
328 <#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
329 <#assign currentGroupExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge()>
330 <#assign isDarkTheme = false>
331
332 <#if currentGroupExpandoBridge.hasAttribute("dark-theme")>
333 <#assign isDarkTheme = currentGroupExpandoBridge.getAttribute("dark-theme", false)>
334 </#if>
335
336 <div class="section-container section-container--fluid herobanner">
337
338 <#if SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != "" >
339 <#if (SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData())>
340 <#assign scalingDetails = {
341 "desktop": {"alternateImage": {}, "key": "w_1440"},
342 "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_400"},
343 "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_1024"},
344 "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_560"}
345 }>
346 <#else>
347 <#assign scalingDetails = {
348 "desktop": {"alternateImage": {}, "key": "w_1440"},
349 "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_703"},
350 "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_959"},
351 "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_602"}
352 }>
353 </#if>
354 <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )>
355 </#if>
356
357 <#if SearchBox?? && getterUtil.getBoolean(SearchBox.getData())>
358 <#if SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != "" >
359 <div class="search-widget-local heroSearchWidget"
360 data-img-url-d="${slideImg.desktop!}"
361 data-img-url-tl="${slideImg.tablet_landscape!}"
362 data-img-url-tp="${slideImg.tablet_portrait!}"
363 data-img-url-m="${slideImg.mobile!}"
364 style=''
365 >
366 <noscript>
367 <img src="${slideImg.desktop!}" alt='${slideImg.alt_desktop!}'>
368 <img src="${slideImg.tablet_landscape!}" alt='${slideImg.alt_landscape! slideImg.alt_tablet_landscape!}'>
369 <img src="${slideImg.tablet_portrait!}" alt='${slideImg.alt_tablet_portrait! slideImg.alt_tablet_portrait!}'>
370 <img src="${slideImg.mobile!}" alt='${slideImg.alt_mobile! slideImg.alt_mobile!}'>
371 </noscript>
372 <#else>
373 <div class="search-widget-local">
374 </#if>
375 <#if isDarkTheme>
376 <#if Title.preTitle ?? && Title.preTitle.getData() != "">
377 <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div>
378 </#if>
379 </#if>
380 <#if Title.getData() != "">
381 <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())>
382 <h1 class="search-widget-local--title"><@leonardo.escapeTitle title=Title.getData()/></h1>
383 <#else>
384 <div class="search-widget-local--title"><@leonardo.escapeTitle title=Title.getData()/></div>
385 </#if>
386 </#if>
387 <div class="search-widget-local--content">
388 <label class="search-widget-local--content--search-label" for="inp-search-local">Enter search text</label>
389 <#if SearchBox.Placeholder?? && SearchBox.Placeholder.getData() != "" && SearchBox.ClusterID?? && SearchBox.ClusterID.getData() != "" >
390 <input autofocus class="search-widget-local--content--search-text" id="inp-search-local" type="text" maxlength="50"
391 placeholder="${SearchBox.Placeholder.getData()!}" data-cluster-id="${SearchBox.ClusterID.getData()!}"/>
392 <!-- Cluster ID: ${SearchBox.ClusterID.getData()!} -->
393 <a class="search-widget-local--content--search-icon" href="javascript: void(0)" title="Search" data-cluster-id="${SearchBox.ClusterID.getData()!}">
394 <svg xmlns="http://www.w3.org/2000/svg" width="17" height="16" viewBox="0 0 17 16">
395 <path fill="#FFF" fill-rule="evenodd" d="M6.88 1.729c2.784 0 5.047 2.103 5.047 4.69 0 2.585-2.263 4.689-5.046 4.689-2.783 0-5.047-2.104-5.047-4.69 0-2.586 2.264-4.69 5.047-4.69m9.953 12.79l-4.51-4.213.279-.352.007-.01c.05-.062.1-.124.148-.188l.004-.006c1.766-2.36 1.375-5.696-.961-7.867C10.495.668 8.759 0 6.913 0 5.066 0 3.33.668 2.025 1.881.719 3.095 0 4.708 0 6.424c0 1.716.719 3.329 2.025 4.542 1.302 1.21 3.034 1.877 4.876 1.877a7.396 7.396 0 0 0 3.189-.722c.11-.058.438-.235.702-.433l4.58 4.159a.6.6 0 0 0 .39.153.547.547 0 0 0 .371-.149l.23-.205c.174-.156.358-.32.49-.443.255-.238.131-.537-.019-.685"/>
396 </svg>
397 </a>
398 </#if>
399 </div>
400 </div>
401 <#elseif SeparatorBackground.YoutubeId.getData() == "" && SeparatorBackground.Video.getData() == "" &&
402 !((SeparatorBackground.CantoUrl)?? && SeparatorBackground.CantoUrl.getData() != "") &&
403 SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != "">
404 <!-- Image Banner -->
405 <div class="hero">
406 <div class="hero-slide ${noOpacity} ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('hero-slide--internal','')}"
407 data-img-url-d="${slideImg.desktop!}"
408 data-img-url-tl="${slideImg.tablet_landscape!}"
409 data-img-url-tp="${slideImg.tablet_portrait!}"
410 data-img-url-m="${slideImg.mobile!}"
411 style=''
412 >
413 <noscript>
414 <img src="${slideImg.desktop!}" alt='${slideImg.alt_desktop!}'>
415 <img src="${slideImg.tablet_landscape!}" alt='${slideImg.alt_landscape! slideImg.alt_tablet_landscape!}'>
416 <img src="${slideImg.tablet_portrait!}" alt='${slideImg.alt_tablet_portrait! slideImg.alt_tablet_portrait!}'>
417 <img src="${slideImg.mobile!}" alt='${slideImg.alt_mobile! slideImg.alt_mobile!}'>
418 </noscript>
419
420 <#if Title.getData() != "" || LinkTitle.getData() != "" || (CountdownDate.data)?has_content>
421 <div class="hero-slide--content">
422 <#if isDarkTheme>
423 <#if Title.preTitle ?? && Title.preTitle.getData() != "">
424 <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div>
425 </#if>
426 </#if>
427 <#if Title.getData() != "">
428 <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())>
429 <h1 class="hero-slide--content--title">
430 <#else>
431 <div class="hero-slide--content--title">
432 </#if>
433 <#if LinkTitle.getData() != "" >
434 <a class="title-cta"
435 href="${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}"
436 title="${LinkTitle.getData()}"
437 target="${leonardo.getTarget(LinkTitle.OpenLink!)}"
438 >
439 </#if>
440
441 <@leonardo.escapeTitle title=Title.getData()/>
442
443 <#if LinkTitle.getData() != "" >
444 </a>
445 </#if>
446
447 <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())>
448 </h1>
449 <#else>
450 </div>
451 </#if>
452 <#if Title.DescriptionLeft.getData() != "" || Title.DescriptionRight.getData() != "">
453 <div class="hero-slide--content--descriptions">
454 <#if Title.DescriptionLeft.getData() != "">
455 <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/></div>
456 </#if>
457 <#if Title.DescriptionRight.getData() != "">
458 <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionRight.getData()/></div>
459 </#if>
460 </div>
461 </#if>
462 </#if>
463 <#if LinkTitle.getData() != "" >
464 <div class="hero-slide--content--cta">
465 <a class="btn btn-leo btn-leo-transparent"
466 href="${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}"
467 title="${LinkTitle.getData()}"
468 target="${leonardo.getTarget(LinkTitle.OpenLink!)}"
469 >
470 ${LinkTitle.getData()}
471 </a>
472 </div>
473 </#if>
474 </div>
475 </#if>
476 </div>
477 <#if (CountdownDate.data)?has_content >
478
479 <style>
480 @media (max-width: 767px){
481 .leo18 .hero .hero-share { bottom: 100px; }
482 }
483 </style>
484
485 <#assign currentDate = .now?long>
486 <#assign eventDate = CountdownDate.data?datetime("yyyy-MM-dd")?long>
487 <#if (CountdownDate.Hours)?has_content && (CountdownDate.Minutes)?has_content >
488 <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Hours.getData())*60*60*1000))?long>
489 <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Minutes.getData())*60*1000))?long>
490 </#if>
491 <#assign countdown = ((eventDate - currentDate)/(1000))?int >
492 <#if countdown gte 0 >
493 <div class="countdown-widget hidden" data-time-left="${countdown}">
494 <div class="section-container section-container--fluid">
495 <div class="countdown-widget--wrap">
496 <div class="countdown-widget--title"><@leonardo.escapeTitle title=CountdownDate.Text.data!/></div>
497 <div class="countdown-widget--counters">
498 <div class="countdown-widget--counters--counter days">
499 <div class="countdown-widget--counters--counter--val"> </div>
500 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "days")}</div>
501 </div>
502 <div class="countdown-widget--counters--counter hours">
503 <div class="countdown-widget--counters--counter--val"> </div>
504 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "hours")}</div>
505 </div>
506 <div class="countdown-widget--counters--counter minutes">
507 <div class="countdown-widget--counters--counter--val"> </div>
508 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "minutes")}</div>
509 </div>
510 <#if (CountdownDate.ShowSeconds)?has_content && getterUtil.getBoolean(CountdownDate.ShowSeconds.getData()) >
511 <div class="countdown-widget--counters--counter seconds">
512 <div class="countdown-widget--counters--counter--val"> </div>
513 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "seconds")}</div>
514 </div>
515 </#if>
516 </div>
517 </div>
518 </div>
519 </div>
520 </#if>
521 </#if>
522 <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) >
523 <@leonardo.shareLinkHero/>
524 </#if>
525 </div>
526
527 <#elseif (SeparatorBackground.CantoUrl.getData())?has_content>
528 <!-- Canto Video Banner -->
529 <#assign scalingDetails = {
530 "desktop": {"alternateImage": {}, "key": "w_1440"},
531 "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_703"},
532 "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_959"},
533 "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_602"}
534 }>
535 <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )>
536
537 <#if (CountdownDate.data)?has_content >
538 <style>
539 @media (max-width: 767px){
540 .leo18 .hero .hero-share { bottom: 100px; }
541 }
542 </style>
543 </#if>
544
545 <div class="hero">
546 <div class="leo-video canto-video ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('video-little-size','')} ${((!getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData())) && (getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoAutoPlay.getData())))?then('no-pause','')}"
547 data-video-data='{
548 "type":"video",
549 "showControls":${(getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData()))?then("1","0")},
550 "videoSources":[
551 "${SeparatorBackground.CantoUrl.getData()!}"
552 ],
553 "posters":{
554 "desktop":"${slideImg.desktop!}",
555 "tabletLandscape":"${slideImg.tablet_landscape!}",
556 "tabletPortrait":"${slideImg.tablet_portrait!}",
557 "mobile":"${slideImg.mobile!}"
558 },
559 "content":{
560 "heading":"<@leonardo.escapeTitle title=(Title.getData()!"")?html/>",
561 "descriptions":["${((Title.DescriptionLeft.getData())!"")?html?html}", "${((Title.DescriptionRight.getData())!"")?html?html}"],
562 "cta":{
563 "url":"${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}",
564 "title":"${(LinkTitle.getData()!"")?html?html}",
565 "target":"${leonardo.getTarget(LinkTitle.OpenLink!)}"
566 }
567 <#if (CountdownDate.data)?has_content >
568 <#assign currentDate = .now?long>
569 <#assign eventDate = CountdownDate.data?datetime("yyyy-MM-dd")?long>
570 <#if (CountdownDate.Hours)?has_content && (CountdownDate.Minutes)?has_content >
571 <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Hours.getData())*60*60*1000))?long>
572 <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Minutes.getData())*60*1000))?long>
573 </#if>
574 <#assign countdown = ((eventDate - currentDate)/(1000))?int >
575 <#if countdown gte 0 >
576 ,"countdown":{
577 "countdown":"${countdown}",
578 "title":"<@leonardo.escapeTitle title=(CountdownDate.Text.data!)?html/>",
579 "days":"${languageUtil.get(locale, "days")}",
580 "hours":"${languageUtil.get(locale, "hours")}",
581 "minutes":"${languageUtil.get(locale, "minutes")}",
582 "seconds":"${languageUtil.get(locale, "seconds")}",
583 "showSeconds":${((CountdownDate.ShowSeconds)?has_content && getterUtil.getBoolean(CountdownDate.ShowSeconds.getData()))?then("1","0")}
584 }
585 </#if>
586 </#if>
587 }
588 }'
589 <#if (SeparatorBackground.CantoUrl.CantoAutoPlay.getData())?has_content>
590 data-autoplay="${(getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoAutoPlay.getData()))?then('1','0')}",
591 </#if>
592 <#if (SeparatorBackground.CantoUrl.CantoLoop.getData())?has_content>
593 data-loop="${(getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoLoop.getData()))?then('1','0')}",
594 </#if>
595 data-playsinline="1",
596 data-title-tag="div">
597
598 </div>
599 <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) >
600 <@leonardo.shareLinkHero/>
601 </#if>
602 </div>
603 <#elseif (SeparatorBackground.YoutubeId.getData())?has_content >
604 <!-- YT Video Banner -->
605 <div class="hero">
606 <div class="hero-slide">
607 <div class="youtube-player-container"
608 data-img-url-d="${(slideImg.desktop)!}"
609 data-img-url-tl="${(slideImg.tablet_landscape)!}"
610 data-img-url-tp="${(slideImg.tablet_portrait)!}"
611 data-img-url-m="${(slideImg.mobile)!}"
612 data-div-id="${randomNamespace}${SeparatorBackground.YoutubeId.getData()!}"
613 data-video-id="${SeparatorBackground.YoutubeId.getData()!}"
614 <#if (SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())?has_content>
615 data-video-autoplay="${(getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData()))?then('1','0')}"
616 </#if>
617 <#if (SeparatorBackground.YoutubeId.YoutubeMute.getData())?has_content>
618 data-video-mute="${(getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeMute.getData()))?then('1','0')}"
619 </#if>
620 data-use-no-cookie-domain="true">
621 <div class="youtube-player" id="${randomNamespace}${SeparatorBackground.YoutubeId.getData()!}" data-use-no-cookie-domain="true"></div>
622 </div>
623 <#if isDarkTheme>
624 <#if Title.preTitle ?? && Title.preTitle.getData() != "">
625 <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div>
626 </#if>
627 </#if>
628 <#if Title.getData() != "">
629 <div class="hero-slide--content">
630 <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())>
631 <h1 class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></h1>
632 <#else>
633 <div class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></div>
634 </#if>
635 </div>
636 </#if>
637 </div>
638 <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) >
639 <@leonardo.shareLinkHero/>
640 </#if>
641 </div>
642
643 <#elseif SeparatorBackground.Video.getData() != "">
644 <!-- Internal Video Banner -->
645 <#assign scalingDetails = {
646 "desktop": {"alternateImage": {}, "key": "w_1440"},
647 "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_703"},
648 "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_959"},
649 "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_602"}
650 }>
651 <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )>
652
653 <#if SeparatorBackground.Video.getSiblings()?has_content>
654 <#assign videoStr = "">
655 <#list SeparatorBackground.Video.getSiblings() as cur_Video>
656 <#assign videoFile = cur_Video.getData()>
657 <#assign videoFileType = cur_Video.VideoType.getData()>
658 <#if videoStr?? && videoStr != "">
659 <#assign videoStr = videoStr + ",">
660 </#if>
661 <#assign videoStr = videoStr + "{"src":"" + videoFile + "","type":"" + videoFileType + ""}">
662 </#list>
663 </#if>
664
665 <div class="hero">
666 <div class="leo-video ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('video-little-size','')}"
667 data-video-data="{
668 "type":"video",
669 "showControls":false,
670 "videoSources":[
671 ${videoStr}
672 ],
673 "posters":{
674 "desktop":"${slideImg.desktop!}",
675 "tabletLandscape":"${slideImg.tablet_landscape!}",
676 "tabletPortrait":"${slideImg.tablet_portrait!}",
677 "mobile":"${slideImg.mobile!}"
678 },
679 "content":{
680 "heading":"<@leonardo.escapeTitle title=(Title.getData()!"")?html/>"
681 }}"
682
683 <#if (SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())?has_content>
684 data-autoplay="true"
685 </#if>
686 data-title-tag="div">
687
688 </div>
689 <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) >
690 <@leonardo.shareLinkHero/>
691 </#if>
692 </div>
693 <#else>
694 <!-- Black Banner -->
695 <div class="hero">
696 <div class="hero-slide ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('hero-slide--internal','')}"
697 style='background-color:#000000;'>
698 <#if Title.getData() != "" || LinkTitle.getData() != "" || (CountdownDate.data)?has_content>
699 <div class="hero-slide--content">
700 <#if isDarkTheme>
701 <#if Title.preTitle ?? && Title.preTitle.getData() != "">
702 <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div>
703 </#if>
704 </#if>
705 <#if Title.getData() != "">
706 <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())>
707 <h1 class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></h1>
708 <#else>
709 <div class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></div>
710 </#if>
711 <#if Title.DescriptionLeft.getData() != "" || Title.DescriptionRight.getData() != "">
712 <div class="hero-slide--content--descriptions">
713 <#if Title.DescriptionLeft.getData() != "">
714 <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/></div>
715 </#if>
716 <#if Title.DescriptionRight.getData() != "">
717 <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionRight.getData()/></div>
718 </#if>
719 </div>
720 </#if>
721 </#if>
722 <#if LinkTitle.getData() != "" >
723 <div class="hero-slide--content--cta">
724 <a class="btn btn-leo btn-leo-transparent"
725 href="${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}"
726 title="${LinkTitle.getData()}"
727 target="${leonardo.getTarget(LinkTitle.OpenLink!)}"
728 >
729 ${LinkTitle.getData()}
730 </a>
731 </div>
732 </#if>
733 </div>
734 </#if>
735 </div>
736 <#if (CountdownDate.data)?has_content >
737 <#assign currentDate = .now?long>
738 <#assign eventDate = CountdownDate.data?datetime("yyyy-MM-dd")?long>
739 <#if (CountdownDate.Hours)?has_content && (CountdownDate.Minutes)?has_content >
740 <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Hours.getData())*60*60*1000))?long>
741 <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Minutes.getData())*60*1000))?long>
742 </#if>
743 <#assign countdown = ((eventDate - currentDate)/(1000))?int >
744 <#if countdown gte 0 >
745 <div class="countdown-widget hidden" data-time-left="${countdown}">
746 <div class="section-container section-container--fluid">
747 <div class="countdown-widget--wrap">
748 <div class="countdown-widget--title"><@leonardo.escapeTitle title=CountdownDate.Text.data!/></div>
749 <div class="countdown-widget--counters">
750 <div class="countdown-widget--counters--counter days">
751 <div class="countdown-widget--counters--counter--val"> </div>
752 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "days")}</div>
753 </div>
754 <div class="countdown-widget--counters--counter hours">
755 <div class="countdown-widget--counters--counter--val"> </div>
756 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "hours")}</div>
757 </div>
758 <div class="countdown-widget--counters--counter minutes">
759 <div class="countdown-widget--counters--counter--val"> </div>
760 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "minutes")}</div>
761 </div>
762 <#if (CountdownDate.ShowSeconds)?has_content && getterUtil.getBoolean(CountdownDate.ShowSeconds.getData()) >
763 <div class="countdown-widget--counters--counter seconds">
764 <div class="countdown-widget--counters--counter--val"> </div>
765 <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "seconds")}</div>
766 </div>
767 </#if>
768 </div>
769 </div>
770 </div>
771 </div>
772 </#if>
773 </#if>
774 <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) >
775 <@leonardo.shareLinkHero/>
776 </#if>
777 </div>
778 </#if>
779 </div>
780
781 <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) >
782 <!-- Social Sharing -->
783 <#assign imageFileName = (slideImg.desktop)!"" >
784 <#assign shareTitle = (Title.getData())!"">
785 <#assign shareDescription = ((Title.DescriptionLeft.getData())!"") + " " + ((Title.DescriptionRight.getData() )!"")>
786 <#assign ogType='article'>
787 <@leonardo.socialShareMetaAndLinks shareTitle=shareTitle shareDescription=shareDescription?trim imageFileName=imageFileName ogType=ogType />
788 </#if>
789</#if>
Mare, aria, terra, spazio e cyberspazio, la cosidetta "quinta dimensione", nuova frontiera tecnologica e teatro di confronto tra potenze mondiali. Sempre più integrata al mondo reale, la dimensione digitale è il nuovo ecosistema da proteggere con sistemi e soluzioni connessi e multidominio.
Asset propulsivo dell’economia del Paese, Leonardo si avvia a diventare “un’industria 4.0” in cui convergono manifattura e digitale. È l’inizio di una nuova fase storica che si basa sulla razionalizzazione e sulla valorizzazione dei business consolidati del Gruppo con l’obiettivo di accelerare l’innovazione, incrementare la competitività, perseguire l’internazionalizzazione sul mercato e rispondere efficacemente alle esigenze del cliente con un’offerta service-based. Nel 2018, nascono le due aree di business Cyber & Security Solutions ed Elettronica; in quest’ultima confluiscono le attività dei sistemi avionici e spaziali e l’elettronica per la difesa terrestre e navale.
Leonardo, oggi, si muove sulle frontiere tecnologiche del futuro - attraverso intelligenza artificiale, digital twin e tecnologie quantistiche - realizzando sistemi interconnessi e multi-dominio, nuove piattaforme e servizi basati su big data e su elevati livelli di analisi e integrabilità delle informazioni, grazie alle capacità di supercalcolo dell’HPC davinci-1.
Open Innovation, formazione e continuo aggiornamento delle competenze sono i comuni denominatori che attivano nel Gruppo nuovi investimenti: l’International Flight Training School (IFTS), i Leonardo Labs, la Cyber & Security Academy.
L’innovazione e la corsa alle nuove frontiere della tecnologia in Leonardo seguono il passo delle nuove sfide legate a un modello di economia sostenibile e circolare, per contribuire al benessere delle persone e del Pianeta anche per le future generazioni.
Nata da un accordo di cooperazione con l’Aeronautica Militare Italiana, l’International Flight Training School (IFTS) è un centro internazionale di addestramento per i piloti militari delle forze aeree di tutto il mondo. Un sistema di training avanzato basato sull’M-346, jet da addestramento dotato dell’Embedded Tactical Training System (ETTS), che consente ai velivoli di emulare sensori, armamenti e Computer Generated Forces (CGF) e ai piloti di operare simultaneamente e in modo combinato nella modalità Live, Virtual, Constructive (LVC), anche attraverso l’integrazione del Ground Based Training System (GBTS), composto dai vari sistemi di simulazione di volo e di missione. Inizialmente operativa presso la base dell’Aeronautica militare di Galatina (Lecce), oggi l’IFTS ha sede presso il nuovo campus di Decimomannu, a Cagliari.
Guarda il video di presentazione dell'IFTS a Decimomannu (Cagliari)
Si tratta del più importante bando di gara europeo nel settore della difesa sulle tecnologie per la sicurezza marittima. Ocean2020 (Open Cooperation for European mAritime awareNess) è un programma di ricerca militare, promosso dal Fondo Europeo per la Difesa con Leonardo capofila, a cui partecipano 15 Paesi e 42 partner.
Il progetto consente di integrare nelle missioni di sorveglianza e interdizione marittima, piattaforme uncrewed di diverso tipo (ala fissa, ala rotante, di superficie e subacquee) con il centro di comando e controllo delle unità navali, prevedendo lo scambio dati via satellite con i centri di comando e controllo a terra. La prima dimostrazione avverrà nel 2019, nel Mediterraneo, e coinvolgerà anche l’elicottero a pilotaggio remoto AWHERO.
Il 21 dicembre dall’aeroporto di Venegono Superiore (Varese) si alza in volo il primo M-345 High Efficiency Trainer (HET), pilotato dai Project Test Pilot Trainer, Quirino Bucci e Giacomo Iannelli. L’M-345 è il velivolo da addestramento basico e basico-avanzato prodotto da Leonardo per sostituire progressivamente i velivoli MB-339 e integrare la flotta degli M-346, impiegati per la fase avanzata dell’addestramento dei piloti dell’Aeronautica Militare Italiana.
Una nuova realtà che si muove nel panorama culturale italiano all’insegna di un “Umanesimo Digitale”. Costituita a novembre del 2018 in occasione delle celebrazioni per il 70° anniversario del Gruppo, Fondazione Leonardo-Civiltà delle Macchine sarà presentata ufficialmente a Roma, a maggio del 2019. Attraverso la condivisione di competenze e saperi sul patrimonio industriale e tecnologico aziendale, la Fondazione promuove la conoscenza della cultura d’impresa e contribuisce al progresso della società civile e allo sviluppo dei territori, alimentando uno scambio culturale che ha come protagonisti l’industria, le tecnologie e le scienze.
Con la nascita dell’omonima Fondazione, il 5 giugno 2019 al Museo Nazionale della Scienza e della Tecnologia Leonardo da Vinci di Milano, viene presentato il primo numero della nuova edizione di “Civiltà delle Macchine”. Fondata da Sinisgalli nel 1953, la storica rivista, “pensatoio di una modernità” che sosteneva il ruolo delle “macchine” e il progresso industriale, oggi è l’house organ di Leonardo che accoglie le firme del panorama contemporaneo, continuando ad alimentare il dibattito tra scienze, nuove tecnologie e arti.
Leggi il primo numero della nuova edizione di "Civiltà delle Macchine"
Il nuovo velivolo a pilotaggio remoto viene presentato nel 2019, in occasione del Salone Internazionale del settore Aeronautico e Spaziale di Le Bourget, a Parigi. Progettato per svolgere missioni militari e civili, è stato completamente realizzato da Leonardo: dal velivolo alla suite di sensori, dal sistema di gestione della missione alla stazione di controllo di terra. Si tratta dell’ultima evoluzione della famiglia FALCO di sistemi a pilotaggio remoto (Remotely Piloted Air Systems – RPAS) con le seguenti caratteristiche: una capacità di carico fino a 350 kg, oltre 24 ore di autonomia, una tangenza di 30.000 piedi e un collegamento dati satellitare per operazioni fuori dalla copertura radio terrestre, il tutto con un peso massimo al decollo di 1,3 tonnellate.
Lanciato il 22 marzo del 2019, dallo spazioporto europeo di Kourou (Guyana francese) con un vettore VEGA, PRISMA (PRecursore IperSpettrale della Missione Applicativa) è un satellite che guarda la Terra tramite un sensore iperspettrale - il più potente al mondo - con una macchina fotografica di media risoluzione pancromatica (ovvero sensibile a tutti i colori). Tale tecnologia è in grado di distinguere le caratteristiche geometriche degli oggetti osservati e fornire dati sulla composizione chimico-fisica della superficie terrestre. Il satellite è stato realizzato da un Raggruppamento Temporaneo di Imprese (RTI), guidato da OHB Italia, responsabile della missione, e Leonardo che, oltre allo strumento elettro-ottico, ha prodotto anche il pannello solare, la bussola stellare, e il segmento di terra della missione, attraverso Telespazio. Thales Alenia Space ha realizzato il sistema di trasmissione dei dati a bordo del satellite. La missione, coordinata dall’Agenzia Spaziale Italiana, permette di monitorare la salute del Pianeta, studiare gli effetti del cambiamento climatico e le conseguenze delle attività antropiche sull’ecosistema terrestre.
Si tratta di un programma internazionale promosso dal Regno Unito nel 2018, a cui aderiranno successivamente l’Italia (nel 2019) e il Giappone (nel 2022), incentrato sulla progettazione e sulla realizzazione di un sistema aereo di nuova generazione che diventerà operativo entro il 2035, per missioni multidominio. È il futuro sistema di combattimento aereo: una “core platform” connessa con altri sistemi periferici, pilotati e non, in grado di elaborare, analizzare, prioritizzare e rendere disponibili, grazie a un’architettura cloud e potenti datalink, enormi quantità di dati.
Una rete di incubatori tecnologici, avviata nel 2020, che supporta trasversalmente le varie aree di business di Leonardo nella ricerca e nello sviluppo delle tecnologie di frontiera.
Vero “motore” dell’innovazione, i Labs hanno l’obiettivo di indagare le tecnologie emergenti, anticipando le future richieste del mercato.
Integrati con Università, Centri di ricerca, imprese e partner, costituiscono una risorsa per l’Azienda e per l’intero sistema Paese, confrontandosi con i settori più avanzati a livello tecnologico e industriale: intelligenza artificiale, HPC, cloud, big data, optronics e applicazioni robotiche.
In questi hub, ogni giorno, giovani research fellows insieme a esperti e tecnici di Leonardo lavorano per assicurare l’innovazione di domani.
Parte dell’ecosistema dei Leonardo Labs, l’Aerotech Academy è un bacino strategico per lo sviluppo delle competenze professionali, nato dalla collaborazione con l’Università di Napoli Federico II. Con sede nel sito aziendale di Pomigliano d'Arco (Napoli), questa realtà offre percorsi di alta formazione su tematiche di frontiera dell’ingegneria, quali la digitalizzazione, l’industria 4.0 e i velivoli di nuova generazione.
La famiglia di radar di sorveglianza a scansione meccanica Gabbiano festeggia la consegna del centesimo esemplare. Realizzato da Leonardo, nello stabilimento di Nerviano (Milano), questo radar vanta una lunga storia di eccellenza iniziata con il primo esemplare per il velivolo ATR-42. Tale tecnologia è in grado di soddisfare i requisiti di pattugliamento e sorveglianza, in qualsiasi condizione meteorologica, a terra, in mare e in aria, fornendo una serie completa di modalità operative. I radar Gabbiano vengono impiegati soprattutto in missioni di Search and Rescue, sicurezza nazionale e controllo dei confini.
Cuore dei processi di trasformazione digitale di Leonardo, il davinci-1 sta componendo una “nuova grammatica” del sapere scientifico e tecnologico.
Questo supercomputer è un acceleratore di conoscenza dotato di 100 unità di supercalcolo, una potenza complessiva superiore a 5PFlops (5 milioni di miliardi di operazioni in virgola mobile al secondo), una rete ad alte prestazioni, e un sistema di archiviazione in cloud che si avvale delle più recenti tecnologie hardware e software per una capacità di memorizzazione nell’ordine dei 20 milioni di Gigabyte. Con davinci-1 Leonardo potrà accelerare sulle tecnologie disruptive che rappresentano il presente e il futuro dell’innovazione, attraverso Intelligenza Artificiale, Big Data Analytics, High Performance Computing (HPC) e tecnologie quantistiche.
Su iniziativa di Leonardo, viene costituita nel 2021 la Fondazione Med-Or con l’obiettivo di promuovere attività culturali, di ricerca e formazione scientifica per rafforzare i legami, gli scambi e i rapporti internazionali tra l’Italia e i Paesi dell’area del Mediterraneo allargato fino al Sahel, Corno d’Africa e Mar Rosso (“Med”) e del Medio ed Estremo Oriente (“Or”). Nuova nel suo genere, globale e collaborativa, la Fondazione unisce le competenze e le capacità dell’industria con il mondo accademico, favorendo lo sviluppo del partenariato geo-economico e socio-culturale.
Il convertiplano AW609 è un concentrato di innovazione tecnologica capace di superare i requisiti dell’ala fissa e le prestazioni dell’ala rotante. Ha una velocità massima di oltre 500 Km/h, un raggio d’azione di quasi 1.400 Km estendibile a oltre 2.000 con i serbatoi ausiliari e, grazie alla capacità di modificare la posizione dei suoi due rotori in meno di 60 secondi, è in grado di decollare verticalmente come un elicottero e volare come un aereo. L’AW609 può svolgere diversi tipi di missione: trasporto passeggeri, assistenza sanitaria, protezione civile, ricerca e soccorso. Giunge all’Expo di Dubai insieme all’innovativo terminal “Casa Agusta”, realizzato per il rilancio del noto brand parte di Leonardo.
Per la prima volta al mondo, un elicottero a pilotaggio remoto ottiene dalla Direzione Armamenti Aeronautici Aeronavigabilità (DAAA) la certificazione militare basica che comprende la possibilità per il mezzo di operare a bordo di unità navali. Con questa prima certificazione, l’AWHERO apre la strada allo sviluppo, integrazione e validazione di ulteriori capacità già progettate e previste per questo sistema.
Le tecnologie più all’avanguardia del Gruppo, integrano - all’interno di un'unica piattaforma - i dati provenienti da satelliti (Copernicus e PRISMA), sistemi di telecomunicazioni (Athena Fidus), droni, sistemi antincendio ad alta risoluzione, sensori video-acustici, Intelligenza Artificiale, reti 5G e Big Data Analytics. È l’esordio di X-2030, una soluzione cosiddetta C5I, ovvero di «comando, controllo, comunicazione, computer, cyber e intelligence», in grado di correlare in tempo reale ingenti quantità di dati provenienti da sorgenti eterogenee, per abilitare la situational awareness (necessaria per la gestione di grandi eventi), la tutela di un’area a rischio, la sicurezza del territorio.
Nell’era della data-driven economy, nasce a Genova il Polo di competenza nazionale per la digitalizzazione industriale per contribuire alla trasformazione digitale del Paese. Ospiterà una Cyber Security Academy e i Leonardo Labs, laboratori di ricerca sull'innovazione tecnologica nell’ambito difesa, sicurezza e aerospazio, che dialogheranno con l’Università di Genova e l’Istituto Nazionale di Tecnologia.
Un polo di alta formazione, studio e integrazione delle competenze in materia di cyber-sicurezza per supportare la transizione digitale: è questa la Cyber & Security Academy di Leonardo, con sede a Genova. Un’offerta didattica orientata a colmare quel gap formativo - di imprese, istituzioni e cittadinanza - relativo alle capacità necessarie per fronteggiare le sfide e le minacce in ambiente cyber. “Cuore tecnologico” dell’Academy sono le piattaforme Cyber Range e Cyber Trainer che fanno leva su virtualizzazione e interoperabilità per simulare scenari operativi immersivi e complessi, attraverso la realizzazione di gemelli digitali (digital twin) di reti, sistemi e applicazioni da proteggere, oltre che di minacce e tool per attacco e difesa.
Un innovativo cockpit navale richiesto dalla Marina Militare Italiana, nell’ambito del programma di ammodernamento della flotta dei Pattugliatori Polivalenti d’Altura (PPA).
La postazione integrata, co-prodotta da Leonardo e Fincantieri NexTech, permette la condotta della nave e delle operazioni aereonavali da parte di soli due operatori che possono gestire sia le macchine, i timoni e gli impianti di piattaforma, sia alcune funzioni del sistema di gestione del combattimento (Combat Management System, CMS).
Oltre a una radicale riduzione del personale previsto in plancia, il cockpit permette di mantenere la nave in alto stato di approntamento in caso di eventuali minacce improvvise, e di avere accesso – da un’unica postazione – a tutti i sensori ottici della nave, ognuno dei quali garantisce una visione a 360° attraverso telecamere diurne, notturne e infrarosse.
Una missione per tornare nuovamente sulla Luna e, per la prima volta, con una donna. Con Artemis, l’Italia avrà un ruolo in primo piano con le capacità e la tecnologia di Leonardo. Orion, il veicolo spaziale, trasporterà la capsula che ospiterà gli astronauti durante il viaggio, e l’European Service Module (ESM) fornirà elettricità, propulsione, controllo termico, aria e acqua. Leonardo, presso lo stabilimento di Nerviano (Milano) costruirà i pannelli fotovoltaici (PVA) che compongono le quattro “ali” del modulo di servizio e le unità elettroniche (PCDU) per il controllo e la distribuzione di energia nel veicolo spaziale. Attraverso Thales Alenia Space sarà realizzata la struttura del modulo ESM e dei sottosistemi critici, compreso il sistema per la protezione dai micrometeoriti e il controllo termico. Orion sarà lanciato il 16 novembre 2022 (senza astronauti a bordo) per una fase di test dal Kennedy Space Center di Cape Canaveral, in Florida.
Athena MK2/U è il risultato di quell’innovazione tecnologica che interessa in maniera crescente il settore del subacqueo. Il nuovo Combat Management System (CMS) con funzionalità underwater equipaggerà i sommergibili U212 Near Future Submarine (NFS) della Marina Militare Italiana. Oltre alle caratteristiche del precedente ATHENA MK2, come la gestione della situazione tattica e dei sensori organici (adattata ai sistemi sonar), l’acquisizione della situational awareness, l’interoperabilità, la registrazione e l’analisi dei dati, si aggiungono ulteriori specificità (Underwater Extended Capabilities): la Target Motion Analysis (TMA) per capire la posizione nello spazio sottomarino, e il Video Processing, per fornire una situazione tattica più complessa, elaborata grazie a intelligenza artificiale e algoritmi. Le consolle multifunzionali che costituiscono l’interfaccia uomo-macchina permetteranno, tramite la realtà aumentata, una migliore visualizzazione dei dati e resa dello scenario tattico.
Nell’ambito del contratto per il completamento dello sviluppo e l’integrazione del nuovo European Common Radar System Mk2, destinato alla flotta dei Typhoon della Royal Air Force, viene consegnato ad aprile il primo radar.
Progettato e prodotto da Leonardo UK, negli stabilimenti di Edimburgo e Luton, il nuovo sensore trasformerà la capacità di pattugliamento dello spazio aereo garantendo ai velivoli di rilevare, identificare e tracciare simultaneamente diversi bersagli a terra e in mare, potenziando le capacità di difesa e le funzionalità di autoprotezione dei cieli.
Sviluppata presso la sede di Leonardo Electronics US in Arizona, il sistema a diodi laser ad alta potenza è una nuova tecnologia per la ricerca sulla fotonica avanzata. Installato presso il Centro Nazionale di Ricerca Science and Technology Facilities Council (STFC) dell’Oxfordshire, in Gran Bretagna, permetterà alla comunità scientifica di accelerare progetti di ricerca condotti in diversi ambiti, dal campo medico (nelle terapie antitumorali), alla diagnostica per immagini, fino alla produzione di energia verde.
Due strumenti ottici saranno il cuore tecnologico di PLATiNO (mini Piattaforma spaziaLe ad Alta TecNOlogia), programma dell’Agenzia Spaziale Italiana, per supportare, mediante l’utilizzo di minisatelliti, un’ampia gamma di missioni nei settori dell’osservazione della Terra, delle telecomunicazioni e della scienza. Per PLATiNO 3 Leonardo produrrà una camera ottica ultracompatta, ad altissima risoluzione, con un livello di dettaglio a terra (risoluzione spaziale) di almeno di 50 cm. Per PLATiNO 4, l’Azienda fornirà - su modello di PRISMA, con le medesime prestazioni ma metà delle dimensioni e della massa - una camera iperspettrale compatta, leggera e di ultima generazione, che sarà utilizzata per effettuare l’analisi chimico-fisica delle superfici terrestri osservate e per il rilevamento di informazioni a supporto delle attività di prevenzione dai rischi naturali e antropici.
Banner video: Stabilimenti Compagnia Generale di Elettricità Milano, 1955 - 1956,
Courtesy Fondazione Ansaldo
2026-06-01T18:47:37Z
cookie_disclaimer:true
page_disclaimer :false