• 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 for sake of demonstration... The following info comes from viewing the source of
    Position Galileo in camera coordinates'1'&pan=30&tilt=30
    Position Galileo at absolute position'1'&pan=90&tilt=90
    Position Galileo incrementally
    Set absolute velocity on both axis'1'&pan=40&tilt=40
    Set velocity on pan axis'1'&convert='1'&pan=30
    Set velocity on tilt axis'1'&convert='1'&tilt=30
    Starts recording video in client device
    Stops recording video
    Take a photo on client device
    Configures the focus point of interest x=300, y=200 for the iPhone Camera
    Configures the exposure at the point of interest x=300, y=200 for the iPhone Camera
    Switch Focus Modes of the iPhone Camera

  • 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.


  • 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.

  • Tech Staff

    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:'1'&pan=90&tilt=90
    This will set the Galileo to 90 degree clockwise rotation pan, and 90 degrees vertical rotation tilt.
    In the above URL, the TCP address is _(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: 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 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:\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 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...6e9fe0-httprequestcontrols.jpg

  • Tech Staff


    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.
    ps: already in the browser it moves only in 1 direction!  

    c1aa09-screen-shot-2016-05-10-at-16.12.31.png 3aff96-galileomove.izz

  • Tech Staff


    If the url in a browser will only move it in one direction, there is a issue with the url
    Looking 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:\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:\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.

  • Hello

    I've just got a Galileo from ebay after discover from this thread.
    Bad news is that it got discontinued after my order, it's not possible to download the Motrr app anymore...
    Anyway, I downloaded Airbeam so I can connect to the galileo through it.
    But I think i've have the same problem than @gapworks . The "tilt" parameter only is responding (but i can move it both direction: clockwise and counterclockwise). Also the "Tilt" function is actually working as a Pan...
    Did you get more lucky with that ?

  • @Maxime Not yet as i am touring, But working on it as soon as i can as i need it for a production. My main goal is where do you get the Information "what to shoot as a http request ;(

    I can `shoot`now but ?!? 

  • @gapworks I had some "improvements" with the situation:
    If I use the incremental version of the position it works fine, even from Isadora, and the commandes appears to be in the good order as in:
     "GET /service/galileo/position?pan=" **P1** "&tilt=" **P2** " HTTP/1.1\r\nHost:\r\n\r\n"
    But still no change for the absolute positioning (which is the feature I would like to use...)
    So to me I would really think there's something with the airbeam version or the Motrr SDK version they are using
    I have  Airbeam v 2.1.4 (build5)
    Since it seems to work properly for you @Marci , I'm curious to know which version you're using