Some success I think... So far I have been able to:
-
Link the solo and artoo controller over a 4G / zerotier connection. Things like the gimbal angle controls work, and the controller display has the right telemetry, battery readings etc.
- Get
telemetry from
solo <--- over 4G --->
to artoo controller <--- over wifi ---> to
Mission Planner (on PC) - i.e. mavlink works.
- Get live gopro video & telemetry from
solo <--- over 4G --->
artoo controller <--- over wifi ---> to QGroundcontrol (on PC). The video is really good - latency about the same as wifi.
- I can disable the wifi between the solo and artoo controller - and the connection keeps working (over the 4G vpn) , and can see the traffic over the 4G link (i.e. it really is working over the 4G, not the wifi).
- How I did this:
1. As previously mentioned I have 2x Huawei 4G usb dongles - one connected to the solo accessory port, and other to the imx6 board in artoo.
2. I took some of the approach from the uavpal (Parrot Disco and Bebop2) 4G mods, to get the USB dongles working and connected to a zerotier vpn. (as I've outlined in previous posts)
3. I rebuild the artoo and solo's kernel to enable tun, and the cdc_ether usb device (which is how the USB 4G dongles appear to the linux kernel).
4. I modified & recompiled the telem_forward.cpp on the artoo to not reject packets from any IP address (it will just accept them no matter what - which seems to help keep the link up)
5. After trying a number of iptables, proxy arp, and briding ideas (none of which I could get to work), I tried to simply a
ssign the vpn interfaces the same IPs that solo and artoo normally have (Solo = 10.1.1.10, artoo = 10.1.1.1)... I did't expect this to work as normally to don't want 2 interfaces with the same IP address. But amazingly I could then change the IP addresses of the wifi interface of the solo to something random e.g. 10.2.3.4 (or anything), and magically the connection would say up - the linux kernel would automatically just start routing the traffic over the 4g vpn link instead.
6. Having a serial debug console into artoo is vital - it means you can bork the wifi connection to artoo, and still get in to see what's happening and fix it. Eventually it should be possible to write a script eliminate need for the serial console.
What I haven't got working yet is solex... Unlike the PC, although it would still connect to the artoo AP, and get a sensible IP address, it wouldn't connect with telemetry or video. For now that's a nice to have - as I can for now use Qgroundcontrol on a Laptop PC and still get the same telem / map info and telemetry.
I've not actually flown this yet and with the virus lockdown it's hard to when I will properly. I may be able to do a test in the back garden over the weekend, but for now I'm limited to tests 'on the bench'.
Next steps are to:
- I might be able to fix solex if I change the wifi settings as per here
3DR Solo Dev Guide/Dronekit Python on Ubuntu 14.04 - Robotics Computation - NPS Wiki
- The same approach may mean I don't require the usb dongle at the artoo, rather I could possibly tether the artoo to a mobile phone (like the uavpal mod does)
- I need to write this up fully, and post my code modifications somewhere -once I've got it settled in my mind what were the key steps that seemed to be critical.