Record multiple sensor data

Hi all,

I am the newbie. Currently I would like to use BlueROV2 to acquire multi-sensor data in underwater including RGB camera, sonar, underwater GPS, … I already have BlueROV2 with its integrated camera, ping 360 SONAR and also waterlinked underwater GPS. I try to read through some topics related to data collection in this forum but it’s quite unclear. It seems like that pymavlink is used to get the sensor data but it can be used with camera and also sonar. I would like to get these sensors data with the timeline for further calibration and alignment. Since I am the newbie and have no experience. Could you please give me any direction? For example: software need to use, API or ROS? Thanks for helping! If I can acquire underwater camera, it can be a huge contribution to underwater research. I’ll publish it as a public dataset if I can acquire these multi-sensor data.

Hi @phamquandung, welcome to the forum :slight_smile:

Pymavlink is a Python library for interfacing with MAVLink communications. ArduSub (the autopilot firmware running on the BlueROV2) receives commands and outputs telemetry (sensor data, system state, etc) via MAVLink messages, so Pymavlink can be a convenient way of programmatically communicating with and receiving data from the vehicle.

MAVLink is not relevant to the BlueROV2’s video streaming or scanning sonar functionality though. The standard BlueROV2 camera has a H264-encoded output stream that gets sent to the surface via UDP, and can be received by programs like gstreamer, ffmpeg, VLC, and more. Blue Robotics sonar products communicate using the Ping Protocol, which there are C++ and Python library options for.

If it’s of interest I started a data-alignment project last year, but I didn’t get very far into it due to time constraints from other work.

Hi @EliotBR. Thanks for your replay. May I run QGC simultaneously while recording data using MAVLink? I am bit confused.

Yes, but there are some points to note:

  1. QGC already records the MAVLink messages it receives in telemetry log (.tlog) files
    • These aren’t useful for live processing (as far as I’m aware), but are worth knowing about
  2. The standard telemetry connection between the control station computer and the vehicle is a MAVLink Endpoint configured to talk to a particular UDP port
    • UDP ports can often only be used by one program at a time
    • You can set up additional MAVLink endpoints on the vehicle if you want your program to connect and receive telemetry via a different port (at the cost of sending the data twice), or you can get QGC to forward the data (if you’re sure you only want the data while QGC is running)

Hello @EliotBR. Thanks for your kind help. I wonder if I get QGC to forward data, can I still control the BlueROV2 at the same time and also see these data on QGC screen?

Thanks @EliotBR. I’m successful in running QGC and recording video and mavlink simultaneously

1 Like