Skip to content

Commit 0c60d6e

Browse files
committed
Added Robot Display View for ROS2
1 parent 94c011e commit 0c60d6e

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
from src.manager.manager.launcher.launcher_interface import ILauncher
2+
from src.manager.manager.docker_thread.docker_thread import DockerThread
3+
from src.manager.manager.vnc.vnc_server import Vnc_server
4+
import time
5+
import os
6+
import stat
7+
8+
9+
class LauncherRobotDisplayView(ILauncher):
10+
display: str
11+
internal_port: str
12+
external_port: str
13+
height: int
14+
width: int
15+
running = False
16+
threads = []
17+
18+
def run(self, callback):
19+
DRI_PATH = os.path.join("/dev/dri", os.environ.get("DRI_NAME", "card0"))
20+
ACCELERATION_ENABLED = self.check_device(DRI_PATH)
21+
22+
robot_display_vnc = Vnc_server()
23+
24+
if (ACCELERATION_ENABLED):
25+
robot_display_vnc.start_vnc_gpu(self.display, self.internal_port, self.external_port,DRI_PATH)
26+
# Write display config and start the console
27+
console_cmd = f"export VGL_DISPLAY={DRI_PATH}; export DISPLAY={self.display}; /usr/bin/Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xdummy.log -config ./xorg.conf {self.display}"
28+
else:
29+
robot_display_vnc.start_vnc(self.display, self.internal_port, self.external_port)
30+
# Write display config and start the console
31+
console_cmd = f"export DISPLAY={self.display};/usr/bin/Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xdummy.log -config ./xorg.conf {self.display}"
32+
33+
console_thread = DockerThread(console_cmd)
34+
console_thread.start()
35+
self.threads.append(console_thread)
36+
37+
self.running = True
38+
39+
def check_device(self, device_path):
40+
try:
41+
return stat.S_ISCHR(os.lstat(device_path)[stat.ST_MODE])
42+
except:
43+
return False
44+
45+
def is_running(self):
46+
return self.running
47+
48+
def terminate(self):
49+
for thread in self.threads:
50+
thread.terminate()
51+
thread.join()
52+
self.running = False
53+
54+
def died(self):
55+
pass

0 commit comments

Comments
 (0)