Synching two or more cameras as master/servant (focus, shutter, exposure)?

Started by Fortuna Wolf, February 17, 2019, 06:52:58 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Fortuna Wolf

Hi,
I've been using ML for a few years now. LOVE IT.
Anyhow, I just picked up a second Canon D6 and I would love to do stereo photography but this feature could have other applications.
I'd like to be able to put both my cameras on a bar and use one camera to change the exposure settings (manual, AV, etc), focus, and activate the shutter, use flash, etc. just as if I were using one camera. I'd like the second camera to be changing its exposure settings and focus and taking a picture to match the first. Ideally I'd be able to capture stereo images off of one flash.
Is there any way to do this? I don't mind writing a custom LUA script for it, but I'm wondering if there are any functions for getting a data connection between the cameras.

Mike Tornado

There is no knowledge that is not power

Fortuna Wolf

Yes.
Since I have D6's I'm wondering if I can connect them via wifi. Second camera may not need anything special on it if the first camera can act like the Canon Camera Connect app.
I think I read that Alex said that wifi is accessible to ML. I haven't had time to see if its been made available to Lua scripting or what the CCC wifi protocol is.
I'm also not sure how fast the synch will be. The ideal would be able to use one flash for all the cameras so that I can capture stereoscopic images of objects in motion.

Fortuna Wolf

I looked through the Lua scripting FAQ and I didn't see any commands related to wifi or usb connectivity in there.

Since ML doesn't have any built in connectivity I think the way to go is for me to write a Lua script that would read the master camera state and use USB Picture-transfer-protocol (PTP) or Wifi to transmit that state and shutter activations to the servant camera(s). If the devs or people who know ML really well and what hooks are available could tell me if they think either option is viable and provide me a development release with the modifications to Lua that's the next step, I think.

I know USB is usually a host-client relationship and the USB chip on the D6 may not be capable of acting as a host. Same with Wifi.

If those don't work then maybe looking at the 3 pin remote release sensor. I imagine having ML on each camera and putting the camera into a mode that intercepts the RRS and uses it as a communication protocol would work.

a1ex

D6 is not yet announced; how did you get it?

D6, in Canon world, is our shortcut for DIGIC 6 (borrowed from CHDK). There's no fully-functional ML for these cameras; just proof of concept code.

Assuming you are talking about 6D...

First, is the request is for:

- exchanging camera or ML parameters as you change them (communication delays don't matter)
- syncing the two cameras for photo capture? (or is this already done externally from e.g. a flash trigger or wired remote or maybe IR?)

USB: host capabilities not explored; I'm not familiar with the protocol.

Networking: 6D/Networking on the old wiki. I can help you sketch some proof of concept code, but... none of my cameras have WiFi, so you'll have to debug it. This looks like a reasonable choice, but only WiFi-enabled cameras will be able to use it.

Remote release port: need to check whether half-shutter presses (including software ones) are visible on the cable. If yes, you can probably imagine some bit-banging, but even if it works... I believe the baud rate is going to be very very small (probably not much more than a few bits per second). The half-shutter is not wired directly to the main CPU; it's only available via MPU. Communication between the two is slow. Need to run tests.

Some sort of audio modulation (e.g. the master camera would "beep" somewhat like a modem, and the other camera would listen): might work, but the math behind it is not trivial. There might be some libraries you can reuse but... not familiar with this topic.

Some signals in the USB/AV connector might be available (not explored). In particular, the audio out pin should work (and you should be able to connect it to the mic input of the second camera).

Some dev board with two USB ports and host capability (RPi?), to sync the two cameras via PTP, but this looks too complicated.

Fortuna Wolf

a1ex,
Yes, I meant 6D and not D6. I keep mixing it up constantly.

If I pick up a another 6D for cheap I'll send it to you (I got my second $100) so you'll have one to develop with.

You're correct on both counts for the request.
I could probably hook them up to use an external trigger but once you've got communications between them for exchanging camera & ML parameters then firing the servant off the master should be trivial and at that point, why have extra hardware?
I definitely want to be able to transmit camera parameters at least, ML parameters would be a bonus (eg: shutter speed, focus step to synch focus, base iso, aperture, and possibly dual-iso state).
So imagine I'm holding two cameras mounted on a bar with the same lens about 6-12" apart, chasing a kid or insect through shade and sun, trying to fiddle with aperture while holding the camera ready to shoot at any moment. I focus with one camera and the second focuses with the first. Since the cameras may not be pointing at the same thing they need to focus on the same plane and not focus at the same time.
Basically I want to lower the bar to action stereo photography but I suppose this would also be useful for photogrammetry.

The idea of using Wifi might be the best. I'm going to read up on that a bit.

The remote release port sounds like a last resort.

Audio modulation sounds very interesting. What's the latency for receiving and acting on an audio signal? I know that sound activated shooting is an option already.

As I'd like this to be available to the wider ML community I think hardware hacks and making custom boards should be a last resort.

Mike Tornado

1) I think it's not a problem using PC with Windows and wrote some sync software.
2) it may be some device on microcontroller or complete board like arduino, but this is more complicated.

You are not considering these options at all ?
There is no knowledge that is not power

Fortuna Wolf

Mike, I'm trying to reduce the amount of extra hardware as much as possible and make it more accessible for ML users. Asking people to buy a RPi and hack some hardware and software together is a big barrier.

I looked into the WiFi options and it seems the 6D and probably most other Canon cameras host a WiFi AP. The 6D can connect to another camera to share pictures, so it can both host and act as a client. I'm not very familiar with TCP/IP so I'm not sure where to start programming it. I think we could have one WiFi enabled ML camera act as an AP (the master) and any servant wifi canon cameras can connect to it so you could do 2+ connected cameras. Probably useful for photogrammetry rigs of up to 250 cameras.

I volunteer my cameras to do testing with, and I'll contribute what I can with programming but I'll need some handholding for that.

DeafEyeJedi

Posting to bookmark this as I dig this project.

Especially the WiFi concept. Should be doable.
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

Fortuna Wolf

Been busy. Finally got my batteries and stereo bar that I ordered. Need to go to the hardware store to get a few parts like L brackets and extra 1/4" thumbscrews and nuts.
Focusing both cameras and then getting lucky with flash on both of them is pain. Best reserved for adults willing to sit for portraits or still life. I could not get my toddlers to sit still long enough to take stereo photos of them.

I'm planning on writing a lua script to address an issue I have with my 100D and then once I'm done I should have time to turn my attention to this.