Reliable WiFi Webcam (or small cam)
-
@Fred thanx for the very detailed descriptions and explanations. there is a true lack of small lightweight possibilities. And i then there will be not much hope that apple ever has a built in camera in a ipod "shuffle"
i think there is some nano ones though. i will check if there is some wifi possibility.best -
iPhone 4S or better, and Airbeam (on device) and Airbeam Pro (on Isadora Mac). Will expose up to 4x iOS devices’ cameras via Syphon to Isadora. Airbeam has proven far more reliable for me than EpochCam, where I’ve had 4x iPhone 4S’s working consistently without issue for up to 2 hours at a time... 2 of those mounted on Motrr Galilleo PTZ mounts, which are separately controlled via motion tracking blobs with processing. The other two tend to be mounted via whatever means to the performers... with material pinned over to disguise where necessary (shirt pocket + judicious application of a cigarette tip works well, then gaffa’d on the inside of the pocket).
I cart a pair of Draytek Vigor 2830N routers around with me, one in each wing... one’s just run as a slave access point to the other, creating a loose WDS WiFi mesh. -
@Marci thanks for the detailed information. If you can recommend the Gallileo i might get one, which could make my life easier in this performance. I will give a try with Airbeam.
And if there is a chance of your help with Processing"and tracking blobs (as i am no real programmer and just started with processing)) this really could do the trick i think.best -
@Marci sorry to bother you again. i finally bought the Motrr Galilleo and i´m quite happy with it. the airbeam delay is ok and seems quite stable. which brings me back to your experience with processing. i probably have 5 camera positions and one following a red dress. is there a way to combine processing with isadora so i can set the position or movement within the scenes?
thanks for your help -
If you’re wanting to pan the Galileo to specific fixed positions, then, with Airbeam up & running on the iPhone and Galileo connected, you just need to fire an http request to:
_ http://ipaddressofiphone/service/galileo/position?absolute='1'&pan=90&tilt=90_...where the values for pan & tilt are in degrees. Experiment with values to get the right ones for your layout. This can be done directly from Isadora with native actors.For blobtracking via processing, see the attached sketch (& read all the comments). This requires Airbeam Pro to be running on the same Mac as Processing, with one camera opened in monitor mode(altho technically it IS also doable without needing Airbeam Pro & Syphon as you can grab image frames from _http://ipaddressofiphone/service/camera/image.jpg_ which reduces CPU & Ram load on the Mac, but introduces latency of transferring the JPG via http request, which tends to be slower & laggier than using AirbeamPro & Syphon)Takes fine tuning for every different situation / location (minimumWeight) and depends on variables: e.g. well lit subject against dark background it should be able to find and track easily enough... the more complex it gets (the more blobs it finds above the minimum weight), the harder it gets.Once the blob is identified, the sketch simply sends the correct pan and tilt degrees to the URL above to move the blob-centre towards screen-centre. -
More Galileo endpoints... we’ll assume Galileo/iPhone IP Address is 192.168.0.28 for sake of demonstration... The following info comes from viewing the source of http://192.168.0.28/js/com.appologics.videography.jsPosition Galileo in camera coordinateshttp://192.168.0.28/service/galileo/position?convert='1'&pan=30&tilt=30Position Galileo at absolute positionhttp://192.168.0.28/service/galileo/position?absolute='1'&pan=90&tilt=90Position Galileo incrementallyhttp://192.168.0.28/service/galileo/position?pan=5&tilt=5Set absolute velocity on both axishttp://192.168.0.28/service/galileo/velocity?convert='1'&pan=40&tilt=40Set velocity on pan axishttp://192.168.0.28/service/galileo/velocity?increment='1'&convert='1'&pan=30Set velocity on tilt axishttp://192.168.0.28/service/galileo/velocity?increment='1'&convert='1'&tilt=30Starts recording video in client devicehttp://192.168.0.28/service/recorder/startStops recording videohttp://192.168.0.28/service/recorder/stopTake a photo on client devicehttp://192.168.0.28/service/recorder/capturephotoConfigures the focus point of interest x=300, y=200 for the iPhone Camerahttp://192.168.0.28/service/camera/configure?focusPOI=300+200Configures the exposure at the point of interest x=300, y=200 for the iPhone Camerahttp://192.168.0.28/service/camera/configure?exposurePOI=300+200Switch Focus Modes of the iPhone Camerahttp://192.168.0.28/service/camera/configure?focusMode=lockedhttp://192.168.0.28/service/camera/configure?focusMode=continuous -
At last two weeks I've tested same solution for Windows.
It very simple. I used two android's smartphones as webcams with [IP Webcam](https://play.google.com/store/apps/details?id=com.pas.webcam&hl=ru) installed. These smartphones connected though Wifi-router to PC.On PC I've installed [ManyCam](https://manycam.com/) which allow me connect to these smartphones and pass their videostream to Isadora as Capture device.Two smartphones works perfctly on single router. Video delay was minimal(it seems as realtime picture) when smartphones didn't move. When I start to move, some freezing appeared, but not so critical.It very simple to use on WIN. Maybe you find analogue for Mac.Best wishes -
@Marci ...thanks for the reply...but " to fire a http request using native isadora actors" ?!? what actors, what request!? I love Isadora, and i truly appreciate the help but
for the pros out there ! keep in mind that some people have no or litte programming background (so what is clear for you for some of us isn´t). i am trying hard to get into the field but it will still take some time.best wishes -
'Isadora send http request' into Google = http://www.dusxproductions.com/blog/web-apis-in-isadora-part-1/ (top result) ... Also see the TCP Send actor in the Isadora manual. Everything I know I've learnt & taught myself via Google and forum searches... ;)
-
@Marci i totally appreciate your help and hints. and i´m really sorry if i insulted you or anyone of the pro´s with my previous message. but we sometimes (designers & coders) do speak a different language. I know i could learn a lot from google and platforms. But sometimes i´m lacking time according to other duties.
bestp. -
Heh - ditto - Am the full-time data manager at a local college, and exams season is upon us...! Isadora’s really just a side-line hobby cash top-up in my spare-time... no way I could make my full-time wage out of it.
-
If there are specifics that you think I should cover in a tutorial, please let me know. I am happy to do so.
recently the TCPI-IP actors have been updated, so there are now additional controls available (giving you better control) But I think that tutorial is still pretty much correct, and should walk you thru some of it. -
@DusX I downloaded printed and worked my way through your Tutorial but far from understanding :( Especially the use of it. What would trigger my parameters (like pan/tilt) of my motor galileo? Or how would i adjust whatever parameter from Isadora with this method?
best wishes -
Okey-dokey. Here goes... this handles panning and tilting. From my post above, the URL to control this via a web browser (ie: copy and paste it into the address bar of a web browser on any machine on the same network as the iPhone, and hit go) is:http://192.168.0.28/service/galileo/position?absolute='1'&pan=90&tilt=90This will set the Galileo to 90 degree clockwise rotation pan, and 90 degrees vertical rotation tilt.In the above URL, the TCP address is 192.168.0.28 _(replace this everywhere in this post with the ip address of your iPhone running Airbeam - this should be displayed on the phone when you first start up the camera in the instructions along the top of the screen - **Browser via: [address]** or something like that)_.As it's a bog standard web address using http, the port is 80 by default._[Bonus info: If the address began with https, then we'd be using port 443 by default. If the web address featured a colon thusly: http://192.168.0.28:8080/ then the device is running it's webserver on a non-standard port - in this case the port would be the value after the colon... 8080]_Armed with those two bits of info, add a **TCP Stream Control** actor... and fill in the **tcp addr** field (your iPhone’s ip address) and **tcp port** field (80).Looking at the rest of the web address, there are 3 variables contained in it... **absolute**, **pan** and **tilt**. We want to manipulate pan and tilt.Add a **TCP Send Data** actor. We need 2 params, one for pan and one for tilt, so set it’s **params** to 2.Make sure you have the information pane open on the righthand side of Isadora (View > Information from menus across top), then when you hover over the TCP Send Data actor, it'll state in the info pane that to set the formatting, double click the TCP icon in the Send Data actor... so let's do that now.We've already dealt with connecting to the http://192.168.0.28 part of the web address with the TCP Stream Control actor. We now need the rest, so, in the editing box of the TCP Send Data actor, referring to the DusX tutorial for making a HTTP request, you want the following..."GET /service/galileo/position?absolute='1'&pan=" **P1** "&tilt=" **P2** " HTTP/1.1\r\nHost: 192.168.0.28\r\n\r\n"From the information pane, you'll have gathered that whatever figure you supply to the first params field of the Send Data actor is accessible via P1, and the next via P2 and so on. Compare what we've put in the TCP Send Data box vs the URL address... we've substituted the fixed pan value of 90 for parameter P1, and the fixed tilt value of 90 for parameter P2.Now, add a **Trigger Delay** actor, and set the Delay to **0.5**. Connect the '_connect_' output of the TCP Stream Control actor to the input of the trigger delay. Connect the output of the trigger delay to the trigger input of the TCP Send Data actor.Finally, add a second **Trigger Delay** actor. Connect the ‘_connect_' output of the TCP Stream Control actor to it's input. Set it's delay to **1.5** seconds. Connect it's output to the '_deactivate_' input of the TCP Stream Control actor.Set **param 1** & **param 2** values of the TCP Send Data actor to a number between 0 & 360 (as we're talking degrees of rotation).Click the '**activate**' input of the TCP Stream Control actor to fire the request off.This will: establish a connection to 192.168.0.28 on port 80 with the TCP Stream Control actor. When the connection is established, it'll send a trigger via the Connect output to the 2x trigger delays, the first of which will wait half a second, then trigger the Send Data actor which will send the HTTP request, and your camera should then move to the pan and tilt position specified. The second trigger delay simply waits a bit longer, then deactivates the connection.Change the param values, hit activate again to send them to the Galileo.Have a look at the other endpoints... and hopefully you should be able to work out how to add Send Data actors for some of the others. You should end up with something looking like the below.You can add a keyboard watcher and connect it to the activate input of the TCP Stream Control actor... or an OSC listener so that you can issue commands to the Galileo from TouchOSC on a second iOS device. You could use eyes++ watchers to manipulate params1 & params2 of the TCP Send Data actor, or take OSC values from a Kinect, to control pan and tilt via the motion of an actors limb... etc etc.Better yet, head to View > Actor/Control split. Add a 2D slider, and a button. You’ll see each item has some numbers in the corner - these are the CtrlIDs. So for the 2D slider, pan is 1 and tilt is 2, and the button would be 3\. Left click once on the word ‘activate’ on the TCP Stream Control actor, and set it’s Ctrl ID link to 3.Left click once on ‘params 1’ in the TCP Send Data actor, set it’s Ctrl ID link to 1, and set ‘params 2’ Ctrl ID link to 2.Dbl click on the 2D Slider, set it’s minimum to 0, maximum to 360, steps to 2, and tick ‘display value’. Click OK.Dbl click on the button, and set ‘Button Text’ to ‘Send to Galileo’. Click OK.Resize the controls as appropriate.Head to Controls > Disable Edit Mode from top menus.Now, as you drag the 2D slider about, you should see the two params of the TCP Send Data actor change. Use the 2D slider to set pan (x axis) and tilt (y axis), then hit the ‘Send to Galileo’ button to issue the new position to the camera. -
Screenshot of the sketch with controls...
-
Thanks for walk thru. Do you have this device? -
Motrr Galileo? Yup... Got 4x iPhone4S dedicated to 4x Galileo 30pin - they started popping up cheap on eBay the day they brought out the Bluetooth version. I prefer the old 30pin as everything can be powered via USB rather than relying on batteries. The iPhone4S's were all grabbed for next to naff all when work upgraded upper management to 5S's... otherwise they were just headed to a skip. They're incredibly useful!
-
@Marci Thanks to your detailed description and support i finally managed to move the galileo and syphon airbag into isadora. works great but only param2 is responding. what did i do wrong. i tried the
motrr app and it take pan and tilt. so the tool is working. i attached my patch and a screenshot. maybe you have an explanation.bestps: already in the browser it moves only in 1 direction! -
If the url in a browser will only move it in one direction, there is a issue with the urlLooking at your patch, everything looks good to me. Except that the single quotes around 1, probably are not needed.I would remove these in the browser and test again. -
Absolute positioning moves in one direction to the specified position. Use camera co-ordinate url or incremental url instead to move relative to the camera centre. Take everything I’ve posted and experiment using the various different URL structures in the post further up til you find the right combination to fit what you want to do.
ie: Take:"GET /service/galileo/position?absolute='1'&pan=" **P1** "&tilt=" **P2** " HTTP/1.1\r\nHost: 192.168.0.28\r\n\r\n”And experiment with replacing absolute=‘1’ with convert=‘1’, or removing absolute=‘1’& altogether so the Stream Control line reads:"GET /service/galileo/position?pan=" P1 "&tilt=" P2 " HTTP/1.1\r\nHost: 192.168.0.28\r\n\r\n”...and experiment with positive and negative values for P1 and P2.The single quotes around absolute=‘1’, convert=‘1’ etc are correct and definitely required. These are all lifted direct from Airbeam’s own web interface JS library.