I bought a Navio+ awhile ago (before the Navio2) and now i want to put it to use on my current tractor project. I’ve been wading through the documentation and forums. I suspect that there’s a lot that I’m going to have to learn the hard way but I’ll welcome pointers that will speed me along.
My first (23HP) tractor controller was initially an Arduino with local analog joystick, and then a BeagleBone running ROS. I used SwiftNav Piksi RTK GPS for positioning and my own (really bad) code to attempt to control it without an IMU. (I tried using a RAZOR but didn’t isolate it from vibration sufficiently.)
For this (140HP) tractor, I decided to use hardware I can easily run from my laptop for testing. I’m using a LabJack (U3-HV) to control the hydraulic steering and electric clutch. This has been great for quickly trying new algorithms to make steering control more precise. For testing, I’m using a Tinkerforge IMU Brick 2.0 as a compass. I’m running ROS with my own (bad) code again, but it’s been a lot of fun to be able to input a direction and have it turn and track. (The continuously self-calibrated compass output of the IMU Brick 2.0 is incredibly solid. It’s amazing to watch after using the RAZOR.)
The H-bridge I was using for my clutch could not handle the high current. I just received a new one that should handle it easily, and I have a three-day weekend to work on this project. I want to make some major progress but I’d also like to get started with the Navio+, which still intimidates me.
I have a couple of NVS-08C dual RTK GPS receivers. I have not played with them much at all yet. I also have an account with Indiana DOT to receive RTCM.
So…here are the issues I hope to tackle this weekend:
- I don’t want or need servo output. Speed control is simply engaging/disengaging the clutch. (Throttle comes later.) Steering is non-trivial control of the (open-center) hydraulic valve with feedback from a position sensor.
Can I simply ignore the servo outputs and push their values somewhere else? Publishing them to ROS would be easy. Then I could run the clutch and steering nodes on the Navio+ to communicate with the LabJack. It looks like the CCtronics firmware might provide all that I need.
Is there another way to get the speed/steer data without changing the Navio+ code? I suspect I could constantly getPWM() to see what the PCA9685 is doing but that seems horribly inefficient.
If I can’t do this, I might ditch the Labjack and put the control code in an Arduino, controlled by the servo outputs. It’s a reasonable solution but I’d much rather have all my code in the Pi.
Do I have to have a radio control? I do have a FlySky FS-GT2B but it does not appear to have PPM output. It looks like SBUS is the way to go if I buy a new radio but I’d have to toss out my Navio+ and get a Navio2 to handle that. I’d rather just avoid R/C altogether.
Must I use telemetry? I do have a couple of 3DR radios (for the Piksis) but I want to run everything off IP. (And I need miles of range.) It looks like APM can run over UDP (“TCP or UDP can be used instead of serial ports”) so I’m hoping this is straightforward.
Eventually I’ll want to add a bunch more controls: engine start/stop, PTO, hydraulics, etc. And there will be cameras. I’m inclined to run everything through ROS
I have the Navio+ mounted to a Pi 2 but I also have a Pi 3. I got the rainbow screen trying to use the current Emlid image on the Pi 3. Then I found the requests for Pi 3 support in the forum. I trust that it will come soon. I’m tempted to try updating the current image to make it work. I’d like to have the extra power for the other stuff I want to run on the Pi.
Can I easily push data from my own RTK GPS? I want to eventually get a bunch of the REACH receivers but I’d like to use what I have right now. The built-in GPS should be sufficient for my current needs but next year I need centimeter accuracy.
What’s the best overall design for communication? Do I really need to use MAVLink at all (over the air) or should I use ROS for everything (with a MAVLink bridge on the Pi)? I’ll have a lot of other controls (engine start/stop, throttle, transmission, PTO, hydraulics, …). I’d like to handle them consistently. Could MAVLink do it all?
My goals for this weekend:
A. Install my new clutch controller. (I just want to be sure that all of the hardware is working properly.)
B. Fire up the Pi 2 and Navio+ using the Emlid image.
C. Get steering and speed control values somewhere I can use them. (ROS, ideally)
D. Control the Navio+ with MAVProxy over IP.