반응형

요즘에는 마이크로소프트 플라이트 시뮬레이터2020 게임 (이하 플심)에 잠시 몰두해 있다.

대략 2000년도에 나온 버전부터 X까지 쭉 해오다 한참 접었는데 이 플심2020이 나오면서 다시 시작하게 되었다.

특히 오큘러스 퀘스트가 나오면서 VFR이 아주 대박이다.

이 게임에서는 단순히 비행을 즐기는것 뿐 아니라 본격적으로 비행을 배울 수 있는 다양한 도구들을 제공하는데

랜딩 첼린지도 그 중 하나이다.

난이도에 따라 Famous, Epic 그리고 Strong Wind으로 나뉜다

다양한 착륙 도전을 수행할 수 있는데 가장 유명한 공항부터 난이도 높기로 악명높은 공항들, 그리고 악기상을 재현하고 있다.

악명높은 공항으로 네팔의 LUKLA나 네덜란드령 SABA 공항에 착륙하기도 있다.

왜 악명높은지는 이영상을 확인하자

https://youtu.be/nRyHHf6pP0A

이 비행이 랜딩이 아니라 랜딩 첼린지인 이유는 착륙의 정확도(좌/우, 접지 거리)와 접지 속도를 기준으로 평가를 해주기 때문이다.

이렇게 말이다.

부드럽게 내려도 위치가 엉망이면 여지없이 C다

공항 활주로에 표시된 접지 위치에 정확하게 그리고 부드럽게 내려야 A를 받을 수 있다.

플심의 또다른 매력은 착륙 공항과 활주로를 선택하여 나만의 랜딩 첼린지를 만들 수 있다는 점이다.

 

예를들어 악명높은(?) 김해공항의 18활주로 써클링 랜딩이라던지...

김해공항

일단 먼저 김해공항 써클링 어프로치를 설명하기 전에 공항의 위치에 대해 알아보자.

김해공항은 정남과 정북으로 향한 2개의 활주로를 가지고 있는데 남쪽방향은 바다라서 아무런 지형 장애물이 없다. 반면 북쪽으로는 활주로 시단 기준으로 3.6마일 지점에 높이 200미터 또는 700피트가 넘는 산(돗대산)이 있고 그 바로 뒤에는 300미터가 넘는 신어산이 있다. 에어차이나 129편이 추락한 곳이 바로 앞에 있는 돗대산이다.

남북으로 향한 김해공항 활주로 방향

아래는 남쪽에서의 접근 절차이다.

매우 평범하고 일반적인 ILS 절차이다. CAT II 장비를 보유하여 MDA가 100피트밖에 안된다. 100피트 안에서 활주로가 보이기만 하면 착륙할 수 있다.

다음은 활주로의 반대쪽 방향(북에서 남쪽방향으로 착륙)으로 착륙하는 경우의 차트이다.

기존에는 36활주로 접근 방향으로 오다가 중간에 좌선회 하여 써클링 하는것으로 되어있었으나 이륙 항공기와의 분리를 위해 현재 차트로 변경되었다.

KMH VOR기준 45도 래디얼 D15 지점에서 공항 방향으로 오다가 D3 (공항 옆 강이 시작되는 부분)에서 좌선회 하여 활주로 Downwind로 진입하여 활주로 시단에서 Base 턴하여 착륙하라고만 되어있다. 

 

가장 중요한 어떻게? 가 빠진 계획서의 전형이랄까..

 

접근 고도에 대한 절차를 보자. KMH D7까지는 고도가 명시되어있지만 그 이후부터는 알아서 이다.

때문에 미니멈 고도도 1700피트이다. D3까지 오다가 여기서 활주로 안보이면 무조건 복행해서 기다리던지 하라는 이야기다. 

D3에서 활주로가 잘 보이고 시정이 좋아도 그 다음이 문제이다. 737이나 A320급의 항공기를 가지고 거의 U턴이나 다름없는 급회전 기동을 수행해야 하는데 이때 북쪽의 산도 신경 써야 하고 남해 고속도로 위로 넘어가지 않도록 베이스 턴을 수행한 다음 활주로에 정대해야 하는게 문제다. 

 

시정이 나빠서 베이스 턴을 늦게 한다거나 활주로에 바짝 붙어서 선회율을 유지하지 못하면 바로 위쪽의 돗대산에 부딪힐 위험이 있다.

아래는 그 전형적인 사고 사례이다.

https://namu.wiki/w/%EC%A4%91%EA%B5%AD%EA%B5%AD%EC%A0%9C%ED%95%AD%EA%B3%B5%20129%ED%8E%B8%20%EC%B6%94%EB%9D%BD%20%EC%82%AC%EA%B3%A0

 

중국국제항공 129편 추락 사고 - 나무위키

이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권

namu.wiki

 

김해에서는 1년중 대부분(약 87%) 기간에 북쪽에서 바람이 불어오므로 큰 문제없이 운용이 가능하다. 하지만 나머지 남풍이 부는 경우가 문제이다.

비행기의 진행방향 뒤에서 부는 바람을 배풍이라 하는데 우리가 주로 이용하는 737이나 A320 항공기의 일반적인 배풍 한계치는 10노트이지만 김해공항은 위와 같은 이유로 15노트까지 허용하기는 한다. 

 

먼저 실제 항공기 조종사의 김해 써클링 절차를 확인해보자.

https://youtu.be/goM9_ZvvQ2w

 

다음은 실제 운용중인 항공기에서 바라본 접근 절차이다.

https://youtu.be/fOudd_KfI6w

시작 위치는 대략 아래와 같다.

45도 래디얼을 따라 쭉 가다보면 공항이 보이고 강이 보이기 시작한다. 이 강을 따라서 다운윈드 구간으로 진입한다.

이 전에 2700까지 내려와서 기어다운을 수행하고 플랩등 모든 착륙 제원을 설정한다.

다운윈드 구간에서 복행 고도를 설정

대략 V/S 700 강하율로 강하하기 시작한다.

활주로 시단을 지나 남해 고속도로가 보이면 베이스 턴을 시작하는데 베이스가 남해고속도로를 침범하면 안된다고 한다.

베이스 턴 중간에 대략 1000피트에 위치

마지막 파이널에 활주로가 눈에 들어오면 자동조종장치를 OFF 하고 수동으로 최종접근을 시도한다.

이때 고도가 상당히 낮기때문에 한번에 활주로에 정대하지 않으면 복행해야 한다.

 

 

활주로에 정대하고 Level off 하였을때 위치가 대략 400피트이다. 

MSFS 2020 랜딩 첼린지

이 절차를 플심의 랜딩 첼린지로 구성해 보았다.

설치 파일은 맨 아래에 있는 링크에서 다운로드 하기 바랍니다.

이 파일을 플심의 Community 폴더에 복사 후 실행시키면 Activities 항목의 Custom Content 에 다음과 같이 랜딩 첼린지 항목이 나타난다.

시작하면 먼저 헤딩을 53도 정도로 맞추고 강하율을 -700 FPM으로 설정한다.

그리고 오토파일럿 On

그리고 2700피트에 다가갈때쯤 랜딩기어도 내리고 플랩3를 설정한다.

다운윈드 구간에 진입하여 활주로 위치를 어께너머로 확인한다.

활주로 끝단 45도에서 남해고속도로가 만나는 지점에서 우선회를 시작한다. 현재 고도가 좀 높은 편이다.

거의 1200피트 정도에서 선회가 되어야 한다.

파이널 구간에 진입후 활주로가 확인되면 오토파일럿 OFF 후 수동 접근 시작

아무리 열심히 연습해도 이정도가 최선이다... 

 

관련 파일은 추가할 예정입니다.

이 랜딩 첼린지는 아래 페이지에서 다운로드 가능합니다!

https://flightsim.to/file/34869/gimhae-vor-dme-rwy18r-landing-challenge

 

Gimhae VOR DME RWY18R landing challenge » Microsoft Flight Simulator

Why is this file hosted external? There may be several reasons. Mostly, we have not yet been able to contact the owner of this file and ask him or her for permission to host the file on your own servers. Maybe the legitimate author does not like his file t

flightsim.to

 

반응형
반응형

jetson nano의 opencv를 CUDA와 함께 설치하면 속도를 빠르게 할 수 있다.

 

CUDA 설치

jetson nano에 설치 가능한 가장 최신의 CUDA버전은 10.0이다. 

터미널에 다음과 같이 입력한다.

$ sudo apt install -y cuda-core-10-0\
cuda-cublas-dev-10-0\
cuda-cudart-dev-10-0\
cuda-libraries-dev-10-0\
cuda-toolkit-10-0

cudnn 설치

cudnn 버전은 7.0이다.

$ sudo apt install libcudnn7-dev

 

.bashrc 수정

CUDA는 /usr/local/cuda-10.0 경로에 설치되어있다. (/usr/local/cuda 가 아님에 유의)

CUDA 설치가 완료되면 .bashrc 끝에 다음을 추가한다.

$ export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

 

gcc version 수정

jetson nano에는 gcc-9와 g++-9이 설치되어있다. opencv에서는 7.버전으로 빌드해야하므로 다음과 같이 입력한다.

$ sudo apt install gcc-7 g++-7
$ sudo ln -s /usr/bin/gcc-7 /usr/local/cuda-10.0/bin/gcc
$ sudo ln -s /usr/bin/g++-7 /usr/local/cuda-10.0/bin/g++

nvcc 버전 확인

nvcc --version 명령으로 버전 확인 결과

opencv 설치 스크립트

아래 링크에서 opencv 설치를 위한 스크립트를 다운로드 한다.

https://github.com/kyuhyong/buildOpenCV

 

GitHub - kyuhyong/buildOpenCV: Scripts for build OpenCV on the NVIDIA Jetson Nano Developer Kit

Scripts for build OpenCV on the NVIDIA Jetson Nano Developer Kit - GitHub - kyuhyong/buildOpenCV: Scripts for build OpenCV on the NVIDIA Jetson Nano Developer Kit

github.com

 

 

 

정상적으로 설치가 완료되면 다음과 같이 설치된 opencv가 나타난다.

$ python3 -c "import cv2; print(cv2.__version__)"
4.2.0

문제해결

  • 파이썬에서 import cv2 에러가 발생하는 경우
$ python3
Python 3.8.10 (default, Mar 15 2022, 12:22:08)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/cv2/__init__.py", line 89, in <module>
    bootstrap()
  File "/usr/local/lib/python3.8/dist-packages/cv2/__init__.py", line 79, in bootstrap
    import cv2
ImportError: /lib/aarch64-linux-gnu/libGLdispatch.so.0: cannot allocate memory in static TLS block
>>>

~/.bashrc 파일의 끝에 다음 항목을 추가한다.

export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1

그리고나서 source ~/.bashr 수행 후 다시 시도해본다.

  • gcc 컴파일 오류가 발생하는 경우

buildOpenCV 디렉토리에 있는 Example 에서 소스코드를 빌드해본다.

$ cd buildOpenCV/Examples/
$ gcc -std=c++11 `pkg-config --cflags opencv` `pkg-config --libs opencv` gstreamer_view.cpp -o gstreamer_view -lstdc++ -lopencv_core -lopencv_highgui -lopencv_videoio
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
gstreamer_view.cpp:7:10: fatal error: opencv2/opencv.hpp: No such file or directory
 #include <opencv2/opencv.hpp>
          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.

/usr/local/lib/pkgconfig/ 폴더에 opencv.pc 라는 파일을 만들고 다음 내용을 추가한다.

# Package Information for pkg-config

prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir_new=${prefix}/include/opencv4

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.5.0
Libs: -L${libdir} -lopencv_dnn -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_new}

그리고 나서 gcc를 실행하면 gstreamer_view 라는게 생기는걸 확인할 수 있다.

$ gcc -std=c++11 `pkg-config --cflags opencv` `pkg-config --libs opencv` gstreamer_view.cpp -o gstreamer_view -lstdc++ -lopencv_core -lopencv_highgui -lopencv_videoio
$ ls
cannyDetection.py  gstreamer_view  gstreamer_view.cpp  README.md
반응형
반응형

새로 구입한 노트북에 인텔의 최신 WI-FI 6E AX211 와이파이가 설치되어 있다.

그런데 우분투 20.04에서 인식되지 않는다.

$ lspci -nnk | grep 0280 -A3
0000:00:14.3 Network controller [0280]: Intel Corporation Device [8086:51f0] (rev 01)
    DeviceName: Onboard - Ethernet
    Subsystem: Intel Corporation Device [8086:0094]
    Kernel modules: iwlwifi

lshw 에서 UNCLAIMED 라고 뜬다.

$ sudo lshw -C network
[sudo] password for khyou: 
  *-network UNCLAIMED       
       description: Network controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 14.3
       bus info: pci@0000:00:14.3
       version: 01
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix cap_list
       configuration: latency=0
       resources: iomemory:620-61f memory:622f284000-622f287fff
  *-network
       description: Ethernet interface
       product: RTL8125 2.5GbE Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:2c:00.0
       logical name: enp44s0
       version: 05
       serial: 50:eb:f6:d1:4b:1d
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.13.0-39-generic firmware=rtl8125b-2_0.0.2 07/13/20 latency=0 link=no multicast=yes port=twisted pair
       resources: irq:18 ioport:3000(size=256) memory:60200000-6020ffff memory:60210000-60213fff

해당 드라이버를 설치하려면 인텔에서 배포하는 최신의 dkms를 적용해야하는데 

https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi 의 지원 목록에 따르면 AX211 모델은 커널 버전 5.14에 적용되므로 커널 버전 5.13인 20.04 버전에서는 설치되지 않는다고 한다.

$ uname -r
5.13.0-40-generic

해결 방법은 아래 링크에서

http://archive.ubuntu.com/ubuntu/pool/universe/b/backport-iwlwifi-dkms/

 

Index of /ubuntu/pool/universe/b/backport-iwlwifi-dkms

 

archive.ubuntu.com

가장 최신의 backport-iwlwifi-dkms_9858-0ubuntu2_all.deb 또는 유사한 파일을 다운로드 한 다음

다음 명령어로 설치한다.

$ sudo dpkg -i backport-iwlwifi-dkms_9858-0ubuntu2_all.deb

만약 아래와 같은 에러가 발생하는 경우

Selecting previously unselected package backport-iwlwifi-dkms.
(Reading database ... 178822 files and directories currently installed.)
Preparing to unpack backport-iwlwifi-dkms_9858-0ubuntu6_all.deb ...
Unpacking backport-iwlwifi-dkms (9858-0ubuntu6) ...
dpkg: dependency problems prevent configuration of backport-iwlwifi-dkms:
 backport-iwlwifi-dkms depends on dkms (>= 2.1.0.0); however:
  Package dkms is not installed.
 backport-iwlwifi-dkms depends on libc6-dev | libc-dev; however:
  Package libc6-dev is not installed.
  Package libc-dev is not installed.

dpkg: error processing package backport-iwlwifi-dkms (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 backport-iwlwifi-dkms

문제 해결을 위해 dkms, libc6-dev를 설치하려고 하면 다른 에러가 나타난다.

$ sudo apt install dkms libc6-dev libc-dev-bin 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 dkms : Depends: gcc but it is not going to be installed or
                 c-compiler
        Depends: dpkg-dev but it is not going to be installed
        Depends: make or
                 build-essential but it is not going to be installed
        Depends: dctrl-tools
        Recommends: fakeroot
 libc6-dev : Depends: linux-libc-dev but it is not going to be installed
             Depends: libcrypt-dev but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

해결 방법은 터미널에 아래와 같이 입력하는 것.

$ sudo apt --fix-broken install

그리고나서 다시 dpkg -i 명령으로 설치하면 된다.

이제 리부팅 하면 정상적으로 인식한다.

 

 

반응형

+ Recent posts