-
Notifications
You must be signed in to change notification settings - Fork 5
Mobile Platform ↔ Ground Station
📝 Mobile Platform과 Ground Station(s) 모두 VPN server에 접속해 VPN에서 사용할 IP주소를 받는다. Ground Station에서 Mobile Platform의 vpn 주소로 connect하면 Mobile Platform에서 취득된 센서 데이터로 Mobile Platform과 동시에 실시간 시각화가 가능하다.
서로 다른 네트워크 망에 있는 Mobile Platform과 Ground Station을 연결하기 위해 OpenVPN을 사용하여 가상 사설망(Virtual Private Network)를 만들었다.
OpenVPN
: OpenVPN Technologies, Inc. 에서 제작하여 배포하는오픈소스 VPN
OpenVPN설치방법과 서버, 클라이언트 생성은 아래 링크를 참고한다.
-
간단한 설치 : https://www.cyberciti.biz/faq/ubuntu-18-04-lts-set-up-openvpn-server-in-5-minutes/
+) client to client : server.config에 다음을 추가한다.
...
push "route 10.8.0.0 255.255.255.0"
...
- custom 설치 : https://kkastory.tistory.com/13
⇒ VPN server에 접속할 때 password를 입력하게 하는 등 간단한 설치방법보다 다양하게 설정할 수 있다.
- 실행
$ sudo systemctl start openvpn-server@server.service
or
$ sudo systemctl start openvpn@server
- 동작여부 확인
sudo systemctl status openvpn-server@server.service
or
sudo systemctl status openvpn@server
- 종료
$ sudo systemctl stop openvpn-server@server.service
or
$ sudo systemctl stop openvpn@server
sftp등을 이용하여 서버에서 만든 key를 다운받는다.
.ovpn을 다운받은 폴더로 이동 후 아래 명령어를 실행하여 VPN서버에 접속한다.
not permitted ... ⇒ sudo로 실행한다.
$ openvpn --config (your_file_name_here).ovpn
Initialization Sequence Completed
가 뜨면 연결이 완료된 것으로 새로운 터미널을 열어서 사용한다.
-
ifconfig
로 tun0 ip 확인한다. ex) 10.8.0.x -
ping
을 10.8.0.1(server)로 보내 VPN서버와 연결이 잘 되었는지 확인한다. - 인터넷이 되는지 확인한다.
-
ping
을 Ground Station혹은 Mobile Platform에 해당하는 IP주소(10.8.0.x)로 보내 패킷을 받는지 확인한다. -
netcat
으로 클라이언트 간 채팅을 통해 확인할 수도 있다. 이 방법은 VPN서버와도 가능하다.
netcat 서버로 사용할 유저는 아래와 같은 명령어를 실행한다. (1194=port 번호)
$ nc -l 1194
netcat 클라이언트로 사용할 유저는 netcat서버의 IP를 입력하고 실행한다.
$ nc 10.8.0.6 1194
연결이 완료되면 터미널창에서 메세지를 주고받을 수 있다.
Mobile Platform에서 Publish하고있는 센서 데이터를 받아 Ground Station에서 실시간으로 시각화하기 위해서는 Mobile Platform과 연결이 필요하다.
✔️ GroundStation / Visualization 의 다음 5가지 파일에서 connect()의 주소를 VPN서버로 부터 부여된 Mobile Platform의 IP로 수정한 뒤 실행한다.
camthread.cpp
canthread.cpp
gpsthread.cpp
imuthread.cpp
lidarthread.cpp
//gpsthread.cpp
void gpsThread::run() {
zmq::context_t ctx(1);
zmq::socket_t gps_sub(ctx, ZMQ_SUB);
gps_sub.connect("tcp://Mobile_Platform's_IP(VPN)_here:5563"); //ex) 10.8.0.8
...
}
If you have any questions, please email below.
- dazory: 12181851@inha.edu
- yuntreee: lewis45626@gmail.com
- airpod2: 12181774@inha.edu
- ka-yeon: 12181736@inha.edu
-
🚘 Mobile Platform
-
📊 Ground Station