Navio 2 control a Catamaran

Hy all,

I have a double motored catamaran model so I need to control two motor to the navigating, is possible with Navio 2?


Hi, @Bela_Turak

yes Navio2 can control a catamaran/boat. You would use ardurover with skid steering for a boat with dual motors. The Ardupilot project has no specialized firmware for a boat, yet, but from what I read ardurover should work reasonable well.

1 Like

Thanks your answer!

It means with the navio2 can control the rover, or I don’t need the navio?



Navio2 together with a Raspberry Pi is a flightcontroller that runs the Ardupilot firmware. There are other flightcontrollers of course. They can be sorted in two groups, first the microcontroller based, like APM2.6, Pixhawk, etc. Second, the computer based, where Ardupilot runs as an executable, like the RPi/Navio2. Ardupilot can control copters, planes, rovers and submersibles. Since there is no specialized firmware variant for surface vehicles/boats, ardurover is used for them. Ardurover has two control modes, ackermann steering like normal rc cars have and skid/differential steering like a tank or a wheelchair. With the newest version 3.2, it should be possible to set up a combination of the two, like a dual motor boat with an additional rudder.


So I buy a Pi with Navio and use the ardurover instead the ardupilot?

Yes, you buy the Navio2 set and a Raspberry Pi 3.
The Ardupilot project consists of firmwares for different types of vehicles and ardurover is one of them.


Hi I am trying something similar I have two dc pumps on two sides and one pump in the front. the side pumps are for forward and turning whereas the front one is used for reverse. I don’t need to control the direction of individual pumps ad they only throw out water when rotated in one direction and only control the flow rate of pump which i am doing by changing pwm on the gate of a mosfet.Now I need to control the same with mission planner and navio2 what configuration should I use ? I have connected mission planner with navio2 using udp but from here on i have no clue

I see no way how to make your setup work with ardurover/boat. You might be able to make it work with four pumps. Two for forward, two for backward. That would mean that the two forward pumps run/provide thrust at signals over 1500us and the two backward pumps run/provide thrust at signals below 1500us. Perhaps it is possible to let the pumps run in the wrong direction without destroying them. That would make the setup a lot easier.
The only way I see to make it work with three pumps and how I would do it, is to add a KK 2.1.5 board in between the Navio and the pumps. Load it with openaerovtol and let it do the mixing. That requires additional hardware and knowledge of course.

Would it be possible for me to configure it if I remove the reverse pump altogether and only keept the two side pumps?

You could do that, but then you won’t be able to go backwards.

it would be fine for now maybe I will try getting an extra pump later for reverse and try the four pump configuration.Could you elaborate on how would I have to configure for only the two forward ones in mission planner? A stepwise breakdown would help have. I have never used navio2 before, also do I need to code anything when using mission planner? Also what exactly is meant by above 1500us I have worked with microcontrollers where we generally give PWM signals between 0 and 255 which in turn change the avg voltage on the pin from 0 to 5V hence and in my setup a 0V is used to drive the pumps and a 5V stops the pumps.

Just read through the and There is no coding needed to make ardupilot work, just some setup steps and tuning by changing parameters with Missionplanner.
Rc gear uses PWM with pulses from ca. 1000 to 2000us. For servos and reversible ESCs 1500us is middle position/no throttle. For non-reversible ESCs 1000us is no throttle.
Ardurover expects the vehicle to be able to drive forwards and backwards, so it sets the throttle output(s) to 1500us by default. I never tried to set it up on a vehicle that can only go in one direction. I would say you will get problems with tight turns and speed control, because your only option to steer is to add thrust and therefore speed on one side, which will lead to a overall speed increase.

I went through the docs and started working on it I have currently done the following:-

  1. Started ardurover on navio2+rpi
    2)connected mission planner with navio using 3DR
  2. calibrated compass
  3. calibrated accelerometer
  4. SOme other params were adjusted
  5. Configured a joystick for roll and throttle
  6. servo output setup on 1 and 3
    Still no pulse on rc output which i am reading from arduino also attached a servo for testing no movement whatsoever could you specify what i might be missing

Two things you did not mention:

  1. Did you configure the servo out parameters for outputs 1 and 3?

  2. Did you arm your vehicle?

yes I had configured the servos 1&3 for skid steering and I had armed it too
I feel the joystick calibration seemed a bit of because I had set the servos for right throttle and left throttle but the joypads only one joystick was detected and its x axis was set by me for throttle and y axis for roll
Then i enabled the joystick and moved the joystick i expected a small micro servo connected on pin 1 of the navio2 to move but it didn’t…

To get a servo working you need to power the servorail with a BEC. The servorail does not get power from the powermodule or USB.

what if i power the servo rail with a 5V supply from an arduino just for testing purposes ? i am currently trying to that still no results… Also the position 1 and 3 set by me during servo output correspond to 1 and 3 servo rails right? and how to start a mission ? currently i am starting by action tab -~> Do Action
My servo output on data pin does not depend on the power supply right so i should get the pulse if i read it using a microcontroller right?
Also while the mission is going on the servo output shows changes in range of 1800 to 1900 what do they denote ? is there a way for me to increase the range as I will be mapping it from 1000-200 to 0-255 by readin them in an arduino and giving output to the motor driver.

Got an output from the servo had setup the navio for a copter changed it to the rover and made sure that there was a gps fix. Thanks a lot. Will try testing it in a pool. What is the minimum distance between waypoints that it can handle? Also if I use ROS for the same in the future can I set waypoints using mission planner ?

I tried my first miaaion today a lot of messages for bad aphrs, bad gyro which seemed to be solved after a few calibration steps. isn’t there a way to save the calibration values ?
Also is there a method to know whether the output being recieved is right ? As I cannot test the same in a really huge water body and the pool in which we tested it seemed like rotating in the same direction?
Is it necessary to find tune PID or any other parameter?

All calibration values get saved. You can find them in the full parameter list. I also get the bad AHRS message sometimes. I do not really know what is causing it. Sometimes it seems to be caused by letting the rover be stationary for too long. Or when the GPS fix drops and returns frequently. But I also get it right after power on without moving the rover. The artificial horizon dances around and only a reboot fixes it.
I do not really understand what you mean with your next question. Which output? Being received from where?
And the next question is also a little bit unclear. What rotates in the same direction?
And yes, to get optimal performance, you need to tune some parameters, because every vehicle is different.
You should start in steering mode to tune the basic parameters like cruise speed and cruise throttle and the different steering PID values until you get a good response without weaving while driving straight.

Have a look at the rover wiki. It still needs work in some places, because there were a lot of changes between rover 3.1.2 and 3.2, but it is worth reading.