Additional external camera

Hi everybody,
I need to add an external camera for a photogrammetry project. It must be live and eventually also remotely operated (for taking picture)
here you find my project draft:

The idea is to put the additional camera in a battery enclosure, I would like to connect it to a rasbperry-PI board through a HDMI connection, the rasbperry-pi board will be connected to a Fathom-x module.
My umbilical is connected to the ROV enclosure through a 4 pin seacon, and I have an available twisted pair to connect to the additional fathom-x.
I will provide the correct power supply to the boards.
On the surface the ubilical will be splitted into two fathom-x boards. One will take the usual signal to the rov controller laptop, the other will be used just to take the camera flow to another laptop (the idea is to use the camera as an IP Camera)
I would like to hear your opinion about my project, do you think it can work?
I already had some trial without any success, probably due to gopro issues (I will probably use a sony camera for the job) but I have some doubt:

  • do I have to add a pixawck module?
    -does the raspberry-pi works with hdmi camera?
    -Is it possible to use an hdmi camera with ardusub?
    -How can I find the camera ip? I tried with windows netstat application but it finds several IP and no one of them is read by VLC.
    -The sony camera I would like to use is controllable (for taking pictures) by its software installed in the laptop. Do you think I may convert the ethernet signal in hdmi one in order to control the camera?

I’ll be glad to hear your opinion about the project, please don’t be shy, if I’m totally wrong please tell me!!
many thanks
Davide

Not natively, maybe something like this or this (I’ve used this one before) could be used?

I have seen this used to control a camera remotely via ubiquity radios. Hopefully it works for yours too.

Our camera system currently doesn’t work as a regular IP camera. We are working on an RTSP server that will likely come on the next few releases of companon.

How does this work? via usb or HDMI? Via USB you could use the USB/IP project, via HDMI I’m afraid the data will be lost in the auvidea encoder.

Hi Willian,
many thanks for your reply!
so, the project draft is not crazy but I have to refine it…

First of all I will Add an auvidea encoder to allow the hdmi camera to be read by rasbperry - pi via USB (i would prefer this solution) or CSI-2.

Yet I’m still a little bit confused about the camera live visualization as it still don’t work as an IP camera.

I see 2 choice, please give me your opinion:

  1. To use the USB/ip project.
    will it work without a “real” IP camera? Will it allow me to see the camera as an USB one?

  2. To use a qground control software.
    In this case, do I have to connect the raspberry pi board to a pixhawk?

The camera I would like to use works via HDMI, so I think I will leave the idea to control it. Yet, I may find an appropriate usb controlled camera and go through the choice number 1 (if ok without an IP camera) having all my problem solved!

Many thanks again

Davide

Our current implementation of video uses direct udp connections. The Raspberry sends the video to 192.168.2.1 at port 5600. If you intend to use QGC to watch/record, then that is perfectly fine.
RTSP support should arrive in the next releases of companion, too

Exactly. The idea is that you could connect a camera with usb controls to the raspberry pi, connect the raspberry to the topside computer, and the topside computer would be able to control it as if the camera was connected to it.

QGC allows playing video without a pixhawk, but IIRC you can’t record with no vehicle connected.
You could just use VLC or something like that, though.

Hi willian,
Many thanks indeed! I think your help will be very usefull!
I will be quite busy on another job in the next two week. then I will begin to implement the project and I will let you know how does it works.
many thanks again

Davide

Great!
Get it touch if you run into any issues and please feel free to share your build when it is done!

Is it a native IP camera or are you planning to use a DSLR or similar?

Not a native IP camera, I have a SONY action camera (a good one) available.

If your tether is shorter than 50m, I’d use an HD-SDI camera and send the signal over a twisted pair using Muxlab baluns. You can do all the live processing on the surface.

Many Thanks but I will use a 300m long tether, the target of the hob is at 80m depth.

Interesting! I’ve done more or less the same thing, but using a GoPro 7 Black.

I’m using a Febon video capture card, like this one: USB2.0 FEBON168 UVC driver free HDMI capture card

Using “mjpeg streamer” on a Raspberry pi, the power consumption is very low and the CPU usage on the Rpi is 1-2 %. This means the battery powering the camera and Rpi lasts for several hours. Mjpeg streamer outputs the video stream on a separate network, like you’ve built.

However, I’ve run into some problems:

  • I’ve tried several ways of controlling the camera via the Rpi, but have had no success so far. The GoPro doesn’t seem so willing to connect to the Rpi’s wifi- or bluetooth network, and even if it does, it often breaks connection. Also, finding some software to control the camera wasn’t too easy either.

  • The camera stream has a delay of around 2 seconds. This means it’s almost impossible to use the camera stream for composing shots and flying the ROV in any sensible way. I’ve also run into networking issues, where having the camera-network and the standard ROV-network on the same switch and then connected to the mac I’m using to control the ROV would lead to both networks not working. In other words I was unable to connect to the ROV and couldn’t connect to the camera stream. Having the two networks connected directly to the mac via ethernet to thunderbolt-connectors works, however.

  • Changing the quality in mjpeg streamer on the Rpi (in the hope of lowering video latency and bandwith usage) does nothing. I guess the program just outputs whatever is put in.

Hi,
thank you very much for sharing your project. it will be very useful for me, I’m not able to use the usb/ip project and I will try with the jpeg streamer solution. I will think about control the camera in another occasion.

A pleasure! If you try mjpeg-streamer, please report back how it works. As I said, I’m getting quite a lot of delay, so I’m trying to find another solution. I’ve tried this: Low Latency Raspberry Pi video transmission - Altax US Consultancy - but since I’m not using the rpi-camera, I’ve not succeeded so far — probably because I’m not good enough with the rpi and shell commands.

Oh, and by the way: I said I had som trouble with the dual pair of Fathom X-networking boards not wanting to talk via the same switch: I found this thread which helped with that: Dual Fathom-X Crosstalk

The solution was to have just one Fathom X-board receiving the data from two boards: i.e. two Fathom X-boards in the ROV talking over the same single twisted pair can be read by a single Fathom X-board topside. I didn’t know that.

Just to bring an update to this.

Instead of mjpeg-streamer I tried using Dicaffeine for Raspberry pi: https://dicaffeine.com/

This sets up an NDI stream over a local network, which can be viewed by for instance VLC or NDI Viewer on your control PC — or even another Raspberry Pi connected to a monitor.

This gave me very low latency video when I tested it on my desk, but once I connect it all via the ROV network, the delay is back to 2-2.5 seconds, i.e. not really useable.

… edit…
I then tried with a different camera: the GoPro Hero 8, instead of 7. This gave me more or less delay free video!

In other words there is something about the Hero 7 that makes the video output lag. The trouble is that the Hero 8 needs a cumbersome “media mod” to have HDMI out, which makes it a tight squeeze to fit it in the ROV’s 4’’ tube.

Was stabilization turned off on the Hero 7? The onboard processing adds delay to the video feed (on any of the GoPro cameras with this feature)

Maybe I’m not right person to make twist in project but if you are doing photogrammetry project maybe you should consider 2x gopro with domes and continous video recording.

1 Like

Thanks a lot for the hint on the delay induced by having stabilisation active on the GoPro! We find the stabilisation absolutely crucial for getting usable footage. However, the GoPro 8 seems to work fine even with stabilisation turned on.

As for the media mod, I’ve modded it — so that it is now much smaller. All one needs in the ROV is the HDMI out and USB power in, so one can really get rid of the rest of the plastic.

As for the photogrammetry we haven’t yet had the chance to test this via the ROV. We suspect it might be better using the timelapse mode on the GoPro, especially since this might give faster shutter speeds. However, we’re open to suggestions - and your results look very good, Vectrino!

2 Likes

@Skredfare I’m new to BlueROV2s but I’m interested in using them to film wildlife at 4k, I was wondering what your thoughts were on modifying and using the Hero9, or even mounting something like a GH5S (in a housing) on the skids.

1 Like

Well, seems like we’re in the same business, Ed!

GoPro is just an interim solution for us, to test the best methods of video transfer etc. The Hero 9 seems like a very nice camera, and I’m particularly fond of the pre-roll recording setting, which is very useful for wildlife filming. Since the camera still uses the Media Mod, I guess you’ll be able to do like I’ve done: tear it apart and thereby shrinking the overall size to fit inside the 4’’ tube.

As for the Gh5 or other such cameras I guess a Nauticam housing for the camera can be mounted, but they’re expensive and will, I guess, create a lot of drag. Another solution is to use a 6’’ tube, provided the camera will fit. This is something I’m working on for getting a Blackmagic Design Pocket Cinema 4k camera mounted to the ROV.

1 Like

@Skredfare Thanks for the reply, very much appreciated. You’re not, by chance, working on housing the Blackmagic with a chap called Espen are you?