This is because the values from the rover's RC are written directly to the PWM output, this simply can't be done with the copter as pushing the throttle up doesn't affect just one motor. The RC inputs in the copter are all taken into account, go through modifications (ie. stabilization), then distributed to the 4 outputs.
RCOverride lets you simulate RC input. You can use this to control the copter through the used channels and take an unused one for other uses. For example you could have your Arduino listen in to that mavros topic and only take into account a (by default) unused channel where you send custom data. To answer your question, yes, with RCOverride the first four channels let you simulate the RC controller's four joystick axis to control the copter (not only the joysticks but you get what I mean).
Any chance you are missing a dependency? A quick search in google spits out that the serial python package is not included in the python's base packages, so installing it should solve that issue. Depending on what python version you are working with you'll have to install it for python 2 or 3. By default you can install it with either:
- sudo apt-get install python-serial
- sudo pip install pyserial
And try again. If that doesn't solve the issue maybe the package uses python3 then the commands would be either of:
- sudo apt-get install python3-serial
- sudo pip3 install pyserial
Running one of the two commands in each case should be enough. If you run into the same/a different problem after running those please write again.
I'd say the same way as you would with any other removable device, list all devices (on the EB) with the Arduino connected and disconnected and the one that disappears is the one you want.