Sorry for the persistence, but does that mean that I can give the ROV an estimated position and that it will assume that as a positioning system?
@gilpinheiro, @jwalser is correct. If you want to make BlueRov2 completely autonomous using only the sensors that you said, it’ll be necessary to estimate and provide position information via
One more question, we intend to connect our ROV to an external ODROID. Like this:
I know Raspberry uses mavlink to send and receive data and commands from Ardusub…
But, in this case, can I use python commands or scripts, sent from an odroid to the raspberry, and those commands be applied to the Ardusub?
I am encountering a problem while trying to test using SITL, maybe you can help me.
I need to run the simulator an then run Mavproxy so that it connects to Qgroundcontrol. But by doing this I am not able to send commands using a python script, as it is impossible for me to connect.
The error I get is the following:
“Link timeout, no heartbeat in last 5 seconds”
@patrickelectric @jwalser, I already have the ROV velocity and attitude, but as I am using dronekit python (mainly used for land and air vehicles) I can’t find any command to get the Barometer sensor data.
Do you know any Mavlink command to get IMU data or even barometer data?
Thanks in advance!
Is there any easy workaround or any way to disable the “No IO thread heartbeat” warning? I don’t have access to the interior of the BlueROV2, so it won’t be easy to re-flash the RP3 SD card.
Thanks for your answer!!
Can you please just help on how to implement this: “LOG_BACKEND_TYPE parameter to None (0).”
In QGC, Vehicle Settings (click the gear icon) -> Parameters.
It doesn’t work.
Did you reboot?
I don’t think so! I will have to try it again later, thank you
I was reading and I would like do something similar.
I want start to run this script directly in the RPi from the BlueROV2, without lose the telemetry and video in QGC.
But when I do, the script remains frozen and only I see this result:
pi@raspberrypi:~ $ python test_auv.py
Waiting for APM heartbeat
The script to split the telemetry is for default:
# this starts mavproxy so that the serial link to the companion computer (on /dev/ttyACM0)
# is available to a companion computer and external GCSs via UDP. This broadcasts so that
# multiple IP addresses can receive the telemetry.
# For PixHawk or other connected via USB on Raspberry Pi
–cmd=“set heartbeat 0”
I try change in my code of ‘test mavlink messages’ with:
master = mavutil.mavlink_connection(‘udp:localhost:14550’)
master = mavutil.mavlink_connection(‘udp:192.168.2.1:14550’)
master = mavutil.mavlink_connection(‘udp:192.168.2.2:14550’)
master = mavutil.mavlink_connection(‘udp:localhost:9000’)
But, none works.
Can you help me please?
Thanks a lot!
Hello, it looks like there is some misunderstanding.
master = mavutil.mavlink_connection(‘udp:localhost:14550’) << no one is sending any data here, so if we listen here, we won’t hear anything
master = mavutil.mavlink_connection(‘udp:192.168.2.1:14550’) << we are sending data here by default, but this is an IP for another system (the surface computer), so we can’t listen here because it is not our address
master = mavutil.mavlink_connection(‘udp:192.168.2.2:14550’) << no one is sending any data here, so if we listen here, we won’t hear anything
master = mavutil.mavlink_connection(‘udp:localhost:9000’) << no one is sending any data here, so if we listen here, we won’t hear anything
Your script is waiting for a mavlink heartbeat, but you are not listening in the right spot. The autopilot data comes through the serial port
There is a problem though in that there is an application already running and talking to the autopilot on that port (there is a script
~/companion/.companion.rc to start MAVProxy at boot). If your program tries to talk on the same port at the same time, there will be conflicts.
The solution is to add an output port to mavproxy, and mavproxy will manage the communications between your program and the autopilot. Go to http://192.168.2.2:2770/mavproxy and change the line
udpout:localhost:9000, then you can use localhost:9000 to connect with your program.
To get the video without losing the output in QGC, you will need to add a second output. Check the gstreamer settings and modify the line
! udpsink host=192.168.2.1 port=5600 to
! multiudpsink clients=192.168.2.1:5600,192.168.2.2:5601, where 192.168.2.2:5601 is the ip and port of the raspberry. After that, you’ll be able to run this script after changing the port from 5600 to 5601.
Oh thanks a lot!
Now I can read telemetry without problems!
Now I was reading of the documentation API, because the next step for me is send command to the ROV, up/down/move to right, move servo 1 or 2 or 3, turn on lights.
Then, I did test use the function motors_armed_wait() and to see in QGroundControl if the change works or not, but when I do, again the script is wait for something.
I think, that I can use some command from Here but I can’t found a function like recv_match but with a name like send_match or something there.
Also, I would like know learn more about this use with pymavlink, examples, tutorials, etc…
You can help me again with this?
Why don’t you just use mavros? you will be able to connect to the pi with the pi image br provides without making any changes and its a lot easier to control the rov with mavros. Mavros takes care of getting your telemetry.