Interfaces ========== x4_interface ------------ Handles communication with the physical drone: - MAVLink protocol implementation - Telemetry data processing - Command conversion - Safety monitoring - Parameter management - User interface User Interface -------------- A graphical keyboard-based teleoperation interface is included to interact with the drone using the defined actions. It is built with `tkinter` and integrated with ROS 2. Features: - **Velocity Control Slider** - Set desired drone velocity in the range `[0.0, 10.0]`. - Affects both linear and angular velocities. - **Keyboard Command Input** - Control the drone using the following keyboard keys: - `W`: Move forward - `A`: Move left - `S`: Move backward - `D`: Move right - `Q`: Rotate left (yaw) - `E`: Rotate right (yaw) - `C`: Stop movement - The latest key command is shown in the GUI. - **ROS 2 Publishing** - Publishes `geometry_msgs/Twist` messages to: ``` /mavros/setpoint_velocity/cmd_vel_unstamped ``` - **Flight Control Buttons** - `Arm`: Arms the drone (calls `/mavros/cmd/arming`) - `Disarm`: Disarms the drone - `Takeoff 15m`: Runs `ros2 run x4_service_scripts mavros_takeoff` - `Land`: Runs `ros2 run x4_service_scripts mavros_landing` - `Guided`: Switches mode to GUIDED via `/mavros/set_mode` - `Loiter`: Switches mode to LOITER via `/mavros/set_mode`