Pratik's Blog

Blog related to my Google Summer of Code project at NUIGroup

Video Tutorials!

Below you can find links to video tutorials for setting up CCVMultiplexer as a client and as a server.

Hope these will be useful.

Server setup: http://www.youtube.com/watch?v=2Ym3GYSkk8c

Client setup: http://www.youtube.com/watch?v=b93fY6P3ZsI

 

 

Setup Guide for CCVMultiplexer

We are ready to release the alpha version of CCVMultiplexer. It can be downlaoded from

http://code.google.com/p/ccv-multiplexer/downloads/list

This version is bundled with the existing CCV1.5
That means you can also use the CCV1.5 features if you dont want to use the multiplexer functionality.

I am considering you are well versed with using a normal CCV 1.5, so i’ll straight away point the differences.
In the zip file, you will find a “data/xml”  folder. Two new additions have been made

1)server_settings.xml – this is responsible for server settings, if you are using this CCV instance as a server.
2)client_settings.xml – this is responsible for client settings.

For a particular system, you can have only one server with multiple client nodes! and a computer can act as a server OR a client.

Identify which computers will act as nodes and which one will act as server(the server will run the multitouch application, also it has to combine all the data so choose a powerful computer)

Setting up the server:

In “data/xml/app_settings” turn with value of <IPIMAGE>0<IPIMAGE> to <IPIMAGE>1<IPIMAGE>

IMPORTANT: Do not turn this on if you do not intend to use the multiplexer, as it will result in unnecessary processor usage!

We now look into server_settings.xml.
The layout:

<settings>

<serverinport>11999</serverinport>
<serveroutport>11998</serveroutport>
<numclients>2</numclients>
<fps>10</fps>
<broadcast>192.168.1.255</broadcast>
<protocol>TCP</protocop>

</settings>

  • serverinport – the port on which the server receives the data.
  • serveroutport – the port on which the server sends the frame synchronization data. (frame synchronization is needed so that all the nodes run at the same fps, will write a detailed post on this later)
  • numclients – number of expected clients (very important, as equivalent number of images are drawn by the server)
  • fps – this is the fps at which all the nodes will run
  • broadcast – this is the broadcast address, so that the server sends the data to all the nodes simultaneously
  • protocol – you have a choice of using TCP/UDP. With UDP the system works at a greater fps, but if a single packet is lost the whole system stops!(forcing you to restart any client node)

With TCP the system works on a lower fps, but a packet will never be lost because its TCP!

IMPORTANT: For TCP, the server instance of CCV should be started before any client instance of CCV (because tcp client binds to a socket and not a port number) howere with UDP there is no such restriction

Only these parameters are required to turn CCV into a multiplexer. Each node will be like an image, so its exactly similar to CCV 1.5

Setting up the Client:

Setting up client_settings.xml

The layout:

<settings>

<client_id>0</client_id>
<server>
<ip>192.168.1.3</ip>
<serveroutport>11999</serveroutport>
</server>
<serverinport>11998</serverinport>
<protocol>TCP</protocol>

</settings>

  • client_id – This is very important, each client would have its client_id incremented by 1 starting with 0. That means if you want to use three nodes, node 1 has client_id=0, node 2 has client_id=1 and node 3 has client_id=2. The minimum client_id should always be 0 and no two client should have same client_id.
  • ip – this is the ip address of the server.
  • serveroutport – port on which the client send the data to the server (serveroutport of client = serverinport of server)
  • serverinport – port on which the client listens to the frame synchronization data (serverinport of client = serveroutport of server)
  • protocol – choice of protocol TCP/UDP

Client will start running the multiplexer node, if you turn on the toggle switch named CCVMULTIPLEXER

IMPORTANT: The system will only work when all the clients (equal to numclients in server_settings.xml) have been turned ON.

_______________________________________________________________________

Everything else is common to the existing CCV. you chose which node image to use and in what order they are stitched.

NOTE: For this release the the console is also displayed (for debugging purpose) due to this you will get a low fps, because the application has to print all the data to the console. Future releases will not have this, resulting in a better fps for the sytem.

Any suggestions are appreciated.
Also feel free to point out the bugs.

CCVMultiplexer – My GSoC 2012 project for NUI Group

CCVMultiplexer is my GSoC project for NUI group this year. The need for a network multiplexer arises when building a large Multi-Touch setup.
CCV 1.5 uses multicam approach to do this. With CCVMultiplexer we run multiple instances of CCV on different computers connected over a network. All the instances act as node’s and there blob data is combined by the CCVMultiplexer (the server).


Later posts will discuss how to setup CCVMultiplexer