Si è verificato un errore nell'elaborarazione del modello.
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            &quot;type&quot;:&quot;video&quot;, 
549            &quot;showControls&quot;:${(getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData()))?then("1","0")}, 
550            &quot;videoSources&quot;:[ 
551                "${SeparatorBackground.CantoUrl.getData()!}" 
552            ], 
553            &quot;posters&quot;:{ 
554              &quot;desktop&quot;:&quot;${slideImg.desktop!}&quot;, 
555              &quot;tabletLandscape&quot;:&quot;${slideImg.tablet_landscape!}&quot;, 
556              &quot;tabletPortrait&quot;:&quot;${slideImg.tablet_portrait!}&quot;, 
557              &quot;mobile&quot;:&quot;${slideImg.mobile!}&quot; 
558            }, 
559            &quot;content&quot;:{ 
560              &quot;heading&quot;:&quot;<@leonardo.escapeTitle title=(Title.getData()!"")?html/>&quot;, 
561              &quot;descriptions&quot;:[&quot;${((Title.DescriptionLeft.getData())!"")?html?html}&quot;, &quot;${((Title.DescriptionRight.getData())!"")?html?html}&quot;], 
562              &quot;cta&quot;:{ 
563                &quot;url&quot;:&quot;${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}&quot;, 
564                &quot;title&quot;:&quot;${(LinkTitle.getData()!"")?html?html}&quot;, 
565                &quot;target&quot;:&quot;${leonardo.getTarget(LinkTitle.OpenLink!)}&quot; 
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                ,&quot;countdown&quot;:{ 
577                  &quot;countdown&quot;:&quot;${countdown}&quot;, 
578                  &quot;title&quot;:&quot;<@leonardo.escapeTitle title=(CountdownDate.Text.data!)?html/>&quot;, 
579                  &quot;days&quot;:&quot;${languageUtil.get(locale, "days")}&quot;, 
580                  &quot;hours&quot;:&quot;${languageUtil.get(locale, "hours")}&quot;, 
581                  &quot;minutes&quot;:&quot;${languageUtil.get(locale, "minutes")}&quot;, 
582                  &quot;seconds&quot;:&quot;${languageUtil.get(locale, "seconds")}&quot;, 
583                  &quot;showSeconds&quot;:${((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 + "{&quot;src&quot;:&quot;" + videoFile + "&quot;,&quot;type&quot;:&quot;" + videoFileType + "&quot;}"> 
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            &quot;type&quot;:&quot;video&quot;, 
669            &quot;showControls&quot;:false, 
670            &quot;videoSources&quot;:[ 
671              ${videoStr} 
672            ], 
673            &quot;posters&quot;:{ 
674              &quot;desktop&quot;:&quot;${slideImg.desktop!}&quot;, 
675              &quot;tabletLandscape&quot;:&quot;${slideImg.tablet_landscape!}&quot;, 
676              &quot;tabletPortrait&quot;:&quot;${slideImg.tablet_portrait!}&quot;, 
677              &quot;mobile&quot;:&quot;${slideImg.mobile!}&quot; 
678            }, 
679            &quot;content&quot;:{ 
680              &quot;heading&quot;:&quot;<@leonardo.escapeTitle title=(Title.getData()!"")?html/>&quot; 
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> 

2018 - 2023 - Company

L’era digitale
immagine intro_GettyImages-1206094124

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.

M-346 LVC_Full Mission  Simulator_01 copia

2018

Leonardo e l’Aeronautica Militare Italiana lanciano l’"International Flight Training School"

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)

All'interno del Full Mission Simulator, durante l'addestramento, il pilota indossa l'Helmet Mounted Display, un casco con visore integrato su cui vengono proiettati i dati della missione e i parametri di volo
fasan1

2018

Leonardo si aggiudica Ocean2020, bando europeo per la sicurezza marittima

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.

Esercitazione dimostrativa di OCEAN2020 presso il Golfo di Taranto, 20 e 21 novembre 2019, sotto la guida della Marina Militare Italiana. Leonardo, capofila del progetto, ha partecipato con: sistemi di sorveglianza, difesa e comunicazione a bordo delle due fregate della Marina Militare Italiana, Virginio Fasan (in foto) e Federico Martinengo, soluzioni di maritime domain awareness, gli elicotteri pilotati a distanza SW-4 SOLO e AWHERO; l’elicottero SH-90A sulla fregata Martinengo; sensori radar avanzati a scansione elettronica a bordo dei velivoli uncrewed; servizi di telecomunicazione di Athena Fidus (sviluppati da Telespazio) e servizi di osservazione della Terra, erogati attraverso la piattaforma Seonse di E-Geos utilizzando le capacità di COSMO-SkyMed
M345_1st_Flight_Venegono_21_12_18_DSC_0095cut

2018

Vola il primo M-345 HET di serie

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.

L'M-345 HET è la più recente soluzione proposta da Leonardo per la fase basica e basica-avanzata del sillabo addestrativo per piloti militari. In foto il primo volo dell'M-345 HET, 21 dicembre 2018, Venegono Superiore (VA)
fondazione-resize_mini_restyled

2018

L’avvio di Fondazione Leonardo – Civiltà delle Macchine

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.

2019_CdM_Copertina_n1_mod_restyle

2019

La nuova edizione della rivista “Civiltà delle Macchine”

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 primo numero della nuova edizione di "Civiltà delle Macchine", pubblicato a maggio 2019. In copertina "Identikit di Leonardo da Vinci" dell'artista Grit Schüler (Forensisches Institut Zürich). Tra le firme presenti quelle di Luciano Canfora, Pietro Greco e Mariangela Gualtieri
FALCO XPLORER_DI7A1579_

2019

Presentato il FALCO Xplorer

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.

Il drone da ricognizione a media altitudine e lunga durata (Medium Altitude Long Endurance - MALE) effettuerà il suo "maiden flight", ovvero il primo volo assoluto per un prototipo, il 15 gennaio 2020. Partendo dall'Aeroporto di Trapani Birgi, sede del 37° Stormo dell'Aeronautica Militare, il FALCO Xplorer volerà per circa un’ora sopra un'area limitata nello specchio di mare antistante Trapani, scortato da un elicottero HH-139A del 15° Stormo della Forza Azzurra
LEONARDO_iperspettralePRISMA_rev (2)

2019

Una rivoluzione per l’osservazione della Terra, PRISMA

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.

PRISMA è la missione iperspettrale che ha l’obiettivo di mappare la superficie terrestre per la gestione del rischio ambientale. Realizzato da Leonardo, lo strumento iperspettrale è in grado di operare in oltre 200 bande nello spettro visibile e infrarosso a onde corte, permettendo di analizzare la composizione chimico-fisica delle aree osservate
RS79417_BLUE-SKY-IMAGE-01

2019

L’Italia entra nel programma Global Combat Air Programme (GCAP)

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.

Il GCAP è uno dei programmi più sfidanti e avveniristici per l’industria dell’aerospazio che farà da volano per lo sviluppo tecnologico e per la crescita a lungo termine delle economie dei Paesi coinvolti: Gran Bretagna, Italia e Giappone. Leonardo è partner strategico insieme alla britannica BAE Systems e alla giapponese Mitsubishi Heavy Industries
Leon_20211116_Genova_Labs_9423_24MP_JH10

2020

Leonardo al passo con il futuro: nascono i Leonardo Labs

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.

Frutto di costanti investimenti in R&S, i 12 Leonardo Labs, ognuno con un proprio focus tecnologico, operano in diversi centri sia in Italia che all'estero. Nove le aree di ricerca tecnologica interessate: Intelligenza Artificiale (IA), Digital Twin e Simulazione Avanzata, Big Data, High Performance Computing (HPC) e Cloud, Tecnologie Quantistiche, Sistemi Autonomi e Robotici, Elettrificazione, Nuovi Materiali, Sostenibilità
01 850_6501

2020

Al via l’Aerotech Academy a Pomigliano

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.

In foto l'Aerotech Campus, nello stabilimento Leonardo di Pomigliano d'Arco (NA), in cui si trova l'Aerotech Academy
SQT_EVO_Ronchi-193_resize

2021

100 esemplari per il radar Gabbiano

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.

Flessibilità, peso leggero e bassi consumi rendono il radar Gabbiano sempre più competitivo e adatto all’installazione su un’ampia gamma di piattaforme, crewed e uncrewed, sia ad ala fissa che rotante. In foto, il radar Gabbiano in fase di montaggio sul FALCO EVO
IMG_7135-Edit

2021

Debutta il supercalcolatore “davinci-1”

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.

Tra gli HPC più potenti al mondo, rappresenta il cuore di tutte le aree di business di Leonardo e dei Leonardo Labs. Il supercalcolatore davinci-1 è un abilitatore della trasformazione digitale, in grado di migliorare la legacy di prodotto, in chiave digitale, e accelerare l'evoluzione dell'ecosistema delle tecnologie Leonardo
img Med-Or

2021

Una nuova Fondazione: Med-Or

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.

Dubai 1DX36166

2021

Presentato l’AW609 all’Expo di Dubai

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.

In occasione dell'inaugurazione dell'innovativo terminal per elicotteri “Casa Agusta”, realizzato per l’Expo 2020 da Leonardo in collaborazione con Falcon Aviation Services, il 3 ottobre 2021 arriva a Dubai l'AW609
AWHero205_19

2021

L’AWHERO ottiene la certificazione militare dalla DAAA

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.

Fin dal 2019, nell’ambito di Ocean2020, l'AWHERO è stato utilizzato in attività dimostrative di sorveglianza marittima a bordo delle unità navali
OSP2030 Front 1

2021

Al via la piattaforma X-2030

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'ambito delle tecnologie per il global monitoring che contribuiscono allo sviluppo sostenibile del Pianeta, la piattaforma X-2030 è uno strumento strategico impiegato nella prevenzione e nella gestione di rischi ambientali e antropici, nel city management e nella sicurezza urbana.
polo tecnologico genova copia

2021

Nasce il Polo di competenza nazionale sulla digitalizzazione

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.

Il Polo di competenza nazionale per la digitalizzazione industriale di Genova ospita uno dei 100 supercomputer più potenti al mondo, per sviluppare nuove tecnologie e allenare le competenze del futuro
Leonardo_Cyber  Security Academy_4

2022

Nasce la Cyber & Security Academy

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.

La Cyber & Security Academy di Leonardo è il nuovo polo di alta formazione che consente a istituzioni, aziende e infrastrutture strategiche di formarsi e qualificarsi in materia di sicurezza, in ambito tecnologico, normativo, metodologico e di processo. Un centro per condurre l'intero sistema Paese verso una transizione digitale sicura
OQ3A1068

2022

Un nuovo cockpit navale sui Pattugliatori Polivalenti d’Altura

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.

7 mq di spazio occupato, 5 postazioni aggiuntive di controllo, 3 schermi multi-touch e 2 operatori per una visione a 360° della situational awareness. Sono i numeri del cockpit navale per i nuovi Pattugliatori Polivalenti d'Altura (PPA). Questo nuovo sistema prevede una specifica formazione per i futuri ufficiali con un training on the job, sia a bordo, che presso gli enti della Marina Militare Italiana, Leonardo e Fincantieri NexTech
Artemis - Orion

2022

Si avvia la missione Artemis I per tornare sulla Luna

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.

Passando a una distanza di 130 km dalla superficie lunare, Orion ha portato a termine con successo i test pianificati, mettendo alla prova tutti i sistemi in dotazione e verificandone l’affidabilità in preparazione di un prossimo volo con equipaggio. Dopo 25 giorni in missione, la sonda rientrerà a Terra, ammarando nell’Oceano Pacifico, l’11 dicembre 2022
Sommergibile in navigazione_©Marina Militare Italiana copia (1)

2023

Athena MK2/U: il Combat Management System per i sottomarini del futuro

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.

Leonardo è fra i leader mondiali nel settore navale, partner strategico della Marina Militare Italiana. In foto il sommergibile U212, antesignano del futuro U212 NFS (Near Future Submarine) che sarà all’avanguardia per sensoristica, meccanica, energetica e struttura. Presso il Cantiere Integrato Navale Militare Fincantieri, a Muggiano (La Spezia) a gennaio del 2022, è ufficialmente partita l'attività produttiva del primo dei due nuovi U212. Crediti: Marina Militare Italiana
ECRS Mk2 outside Edinburgh test lab [credit Leonardo]

2023

Consegnato il primo radar CAPTOR-E MK2 per i Typhoon della Royal Air Force

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.

Il radar a scansione elettronica European Common Radar System Mk2 è il sensore principale dell'Eurofighter Typhoon che dispone di una suite completa di modalità Aria-Aria e Aria-Superficie. Dotato di un’antenna multi-funzione (multi-functional array - MFA) di nuova concezione è capace di sovrintendere a funzioni radar tradizionali, come ricerca e acquisizione bersagli, e a compiti di electronic warfare. L'Eurofighter Typhoon sarà in grado di localizzare e neutralizzare i radar avversari, grazie alla generazione di un potente disturbo elettronico, restando così fuori dalla portata della minaccia
LaserSystem__HR

2023

Una nuova tecnologia laser per applicazioni nel campo dell’energia e della terapia medica

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.

Il sistema a diodi laser ad alta potenza sviluppato da Leonardo Electronics US permette di generare energia laser creando una minore dispersione di calore e permettendo una successione più rapida di impulsi laser massimizzando l’usabilità dell’energia prodotta
Iperspettrale-clean1

2023

Nuovi strumenti per le missioni PLATiNO 3 e 4 per l’osservazione della Terra

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.

Una riproduzione dello strumento iperspettrale che, insieme alla camera ottica ad alta risoluzione, Leonardo fornirà per le missioni PLATiNO 3 e 4. Prodotti nello stabilimento di Campi Bisenzio, a Firenze, i payload supporteranno il monitoraggio del territorio, delle risorse naturali e dell’atmosfera, per una gestione più sostenibile e sicura dell’ambiente

Banner video: Stabilimenti Compagnia Generale di Elettricità Milano, 1955 - 1956,
Courtesy Fondazione Ansaldo

Search overlay background

Mobile navigation menu