2‐Localization Set up - LOG795-UAV-Search-and-Rescue/documentation GitHub Wiki
Drone (VOXL) + UGV (Jetson/ESP32) + Laptop System
This section ensures that all devices communicate, and localization works before launching follow behaviors.
| Component | Role |
|---|---|
| VOXL (Drone) | Provides VIO + sends pose + commands |
| UGV Jetson | Receives position commands + runs rover sim/real control |
| ESP32 | Executes wheel motor JSON commands |
| Laptop | Receives VIO, runs control logic, can simulate rover |
Network Requirement:
All devices must be connected to the same network (192.168.8.x VOXL subnet recommended).
VOXL creates Wi-Fi AP:
SSID: voxl
Password: voxl
IP: 192.168.8.1
Laptop & UGV connect to the VOXL network.
| Device | Expected IP |
|---|---|
| VOXL | 192.168.8.1 |
| Laptop |
192.168.8.xx (DHCP) |
| UGV Jetson |
192.168.8.xx (DHCP) |
| Service | Purpose | Status Command |
|---|---|---|
| voxl-camera-server | Camera stream | `voxl-inspect-services |
| voxl-qvio-server | VIO pose | `voxl-inspect-services |
| voxl-vision-px4 | Sends pose over MAVLink | `voxl-inspect-services |
| voxl-mavlink-server | UDP bridge | `voxl-inspect-services |
Enable any missing component:
sudo systemctl enable <service>
sudo systemctl start <service>Run to verify VIO streaming:
sudo voxl-inspect-qvioExpected output:
T_imu_wrt_vio (m) | Roll Pitch Yaw | features | quality | state
-0.05 0.11 0.02 | 5.1 -2.9 0.4 | 27 | 94% | OKAY
If quality stays above 30% when moving → good tracking
If quality drops to ~1% → reset handling will trigger
On VOXL:
ping <Laptop-IP>Laptop listener:
nc -ul 5005Then move drone — you should see values.
To send scripts to VOXL:
scp read_vio_send_udp.py [email protected]:/PFE/code/To SSH:
Password: voxl
| Check | OK? |
|---|---|
| VOXL services running | |
| Laptop & UGV connected to VOXL Wi-Fi | |
voxl-inspect-qvio shows movement & good quality |
|
UDP packets received on laptop (nc test) |
|
| Python control script runs without errors |
Only then run rover control script:
python3 rover_follow_sim.py