Help - Omni Vehicle won't move

Hello.

First time poster here, trying to figure out an omni rover I’ve built. I’ve build a functioning quad-copter and rover before so I’m not a stranger to ardupilot but I’m having some trouble getting the omni rover to respond to manual commands.

Here’s a picture of the rover at hand

The rover is running ardurover 4.0 on an RPi with a Navio2 hat. I recycled the brushless motors and ESCs from my drone for the motors - I know its not optimal but I’m just trying to get it working. When I power up all the motors sing hello, so I know they’re wired correctly.

I am connecting to the RPi through the wifi and I have it configured to connect to mission planner (which connects properly). I have configured the software on the RPi to be a rover (frame_class=1) and I used mission planner to configure the frame type as omni-x (frame_type=2). I have also checked that servos 1-4 are configured with functions 33-36 (eg servo1_function=33…) as directed to on this documentation page. I couldn’t find any other documentation for configuring ardurover for omni rovers so forgive me if the problem is obvious but I did try to find the solution my self before asking.

As I mention, the problem I am having is that I am unable to get the rover to respond to commands. I connect through mission planner, arm the drone, set mode to manual, and enable my joystick for commanding the rover through mission planner. However, no matter the commands I give the motors do not respond. I have also tried connecting through MAVLink to issue commands directly to ardurover, which also does not seem to cause the motors to respond.

I had previously spent time getting a standard rover (motor and servo steering) to work and so I don’t think the problem is related to a safety, below is some sample code I sent to the rover to configure its safety settings and attempt to set a manual override to one of the channels:

vehicle.parameters['FS_THR_ENABLE']=0
vehicle.parameters['FS_EKF_THRESH']=0
vehicle.parameters['FS_GCS_ENABLE']=0
vehicle.parameters['FS_CRASH_CHECK']=0
vehicle.parameters['RC_OPTIONS']=1
vehicle.parameters['RC_OVERRIDE_TIME']=1

vehicle.mode = VehicleMode("MANUAL")
vehicle.armed=True

vehicle.channels.overrides['1'] = 1900

This does not get a response from the omni rover but would make the normal rover I built previously move forward.

If theres any logs that would be required to further debug please do let me know. Thanks in advance for your help.

Leon.

Do your ESCs support forward/reverse operation?

Yes I believe so, but even if not - they should respond to either a signal of 1000 or 2000. No?

If the autopilot sends 1500us at startup, the ESCs might not arm themselves. You said they are playing their sounds, but do they really emit the final arming beep?
Anyhow, you will need bidirectional ESCs for a rover/omnivehicle.
I believe your setup will not bring you much joy. You did not mention the specs of the parts you are using, but I guessed 1000kV motors and 60mm wheels. With a 3S lipo you are looking at a topspeed of around 130kph without drag…

This was exactly the problem. Thank you for the help.

I’m now trying to get BLHeli_32 pass through working with an RPi and Navio2 board to program the ESCs to be bi-directional. This is not going well…

I am running an RPi4 with a Navio2 hat with Linux Navio 4.19.83 and ArduRover 4.0.0. I am able to connect to the drone with mission planner, I am able to get the ESC’s (Turnigy Multistar BLheli_32 ARM 21A) to function normally on the drone and the drone responds to commands. ArduRover 4.0.0 documentation suggests I should be able to use pass through, however I notice several of the parameters I would expect are not present in the parameter list in mission planner (eg SERVO_BLH_AUTO) or if I connect through MAVLink which makes me wonder if Navio2 does not support it?

I tried setting MOT_PWM_TYPE=4 and rebooted the controller, but it didnt show the parameters after that.

Any help is appreciated.

The last info I have is that Navio2 does not support BLheli passthrough, or any BLheli specific stuff.
All threads I found on the Emlid forum ended in “misunderstanding” what the OP was talking about, “blheli passthrough” was translated to “ESC calibration” by the ones who answered in the threads.
I may be wrong, perhaps there were some changes recently. I have several Navio boards (original, +, 2) and I really liked the idea at first, but now I do not really use them anymore (not for vehicles).
I rather have a MCU based flightcontroller and a companion computer.

Ok that makes sense. Again I appreciate the help.

Would you mind telling me more about why you prefer and flight controller and companion controller? I’m just interested in why you like that combination.

Thanks.

There are some reasons for it.

  1. I can choose whatever flighcontroller and companion computer combination I like. Navio2 just runs on a Raspberry Pi.

  2. I can plug in a USB cable into a MCU based FC and can upgrade the firmware, do the setup etc. Navio2/RPi requires a bunch of setup before I can even connect to a GCS.

  3. I fried one MCU FC in my RC career, but had a bunch of not booting Navio2/RPis, because the SD-card got corrupted. At the same time, there is no easy way to shutdown the RPi properly. It requires an ssh connection, or a button and a script running on the RPi.

  4. Any MCU FC has plenty of UARTS and perhaps other ports (CAN, SPI, i.e.) to connect things. RPi has one UART and to get more you have to plug in USB to UART adapters. Not a very clean setup and prone to errors.

  5. A side by side indoor test with a M8N GPS connected to a Pixhawk 1 and a Navio2 with its onboard GPS lead to the M8N getting a GPS fix in a few minutes, never loosing it and the Navio2 GPS not showing any satellites at all after 2 hours. Both had the same groundplane and where sitting on the floor a few centimeters from each other.
    Other times I tried to fly a quadcopter wit Navio2, waited for a solid GPS fix, started flying and wondered why the copter would not switch to other flightmodes than “stabilize”. I looked at my GCS and there was no GPS fix anymore and it would not get a fix again. Powercycling, waiting, even changing the antenna did not help.
    Using an external GPS with the Navio2 works without a problem.

  6. Last time I tried to use a Navio2 on a rover, I juggled the 5kgs around without ever being able to pass compass calibration, even on “relaxed”. Replaced the Navio2 with a Pixhawk and had the calibration done on “strict” with one try.

I suspect the RPi affects the Navio2, at least the compass and GPS. I never tried to use a cable to seperate the RPi and Navio2, because that is not very practical on most vehicles.