diff --git a/api/index.js b/api/index.js
index 57d5beeb..949b6e81 100644
--- a/api/index.js
+++ b/api/index.js
@@ -163,5 +163,9 @@ app.get("/connect", function (req, res) {
}, 1000);
});
+app.get("/test", function (req, res) {
+ res.render("test");
+});
+
app.listen(8080);
console.log("Server is listening on port 8080");
diff --git a/api/views/test.ejs b/api/views/test.ejs
new file mode 100644
index 00000000..a0aeb509
--- /dev/null
+++ b/api/views/test.ejs
@@ -0,0 +1,37 @@
+
+
+
+
+ Python_Websocket_Live_Streaming
+
+
+
+
+
+ Connection failed. Somebody may be using the socket.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/api_communication/api_communication/api_listener.py b/src/api_communication/api_communication/api_listener.py
index 4b692191..f39b916a 100644
--- a/src/api_communication/api_communication/api_listener.py
+++ b/src/api_communication/api_communication/api_listener.py
@@ -2,6 +2,7 @@ import rclpy
from rclpy.node import Node
from drone_services.msg import DroneStatus
+from drone_services.msg import FailsafeMsg
from drone_services.srv import TakePicture
from drone_services.srv import MovePosition
@@ -39,6 +40,7 @@ class ResponseMessage(Enum):
STATUS = 0
IMAGE = 1
MOVE_DIRECTION_RESULT = 2
+ FAILSAFE = 3
class ApiListener(Node):
@@ -47,6 +49,8 @@ class ApiListener(Node):
self.get_logger().info('ApiListener node started')
self.drone_status_subscriber = self.create_subscription(
DroneStatus, '/drone/status', self.drone_status_callback, 10)
+ self.failsafe_subscriber = self.create_subscription(FailsafeMsg, "/drone/failsafe", self.failsafe_callback, 10)
+
self.timer = self.create_timer(1, self.publish_status)
waiting = 0
self.take_picture_client = self.create_client(
@@ -95,7 +99,14 @@ class ApiListener(Node):
self.status_data['armed'] = msg.armed
self.status_data['control_mode'] = msg.control_mode
self.status_data['route_setpoint'] = msg.route_setpoint
+ self.status_data['velocity'] = msg.velocity
+ self.status_data['position'] = msg.position
+ self.status_data['failsafe'] = msg.failsafe
+ def failsafe_callback(self, msg):
+ self.status_data['failsafe'] = msg.enabled
+ self.message_queue.append(json.dumps(
+ {'type': ResponseMessage.FAILSAFE.name, 'message': msg.msg}))
# def send_video(self):
# self.get_logger().info('Starting video thread')
# vid = cv2.VideoCapture(0)
diff --git a/src/camera/camera/camera_controller.py b/src/camera/camera/camera_controller.py
index 6f723ac6..abed0785 100644
--- a/src/camera/camera/camera_controller.py
+++ b/src/camera/camera/camera_controller.py
@@ -58,7 +58,7 @@ class CameraController(Node):
def handle_video_connection(self):
self.get_logger().info('Starting sending video')
- vid = cv2.VideoCapture(0, cv2.CAP_V4L)
+ vid = cv2.VideoCapture(0, cv2.CAP_DSHOW)
vid.set(cv2.CAP_PROP_FRAME_WIDTH, RES_4K_W)
vid.set(cv2.CAP_PROP_FRAME_HEIGHT, RES_4K_H)
diff --git a/src/drone_services/msg/DroneStatus.msg b/src/drone_services/msg/DroneStatus.msg
index 0489be52..5c4700d7 100644
--- a/src/drone_services/msg/DroneStatus.msg
+++ b/src/drone_services/msg/DroneStatus.msg
@@ -2,4 +2,7 @@ float32 battery_percentage
float32 cpu_usage
int32 route_setpoint # -1 if no route
wstring control_mode
-bool armed
\ No newline at end of file
+bool armed
+float32 velocity[3]
+float32 position[3]
+bool failsafe
\ No newline at end of file