Skip to content

Commit

Permalink
migrate to md syntax
Browse files Browse the repository at this point in the history
  • Loading branch information
gaschler committed Jun 29, 2015
1 parent 663608f commit f75d521
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 39 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
![pics/TIY_screenshot.jpg](pics/TIY_screenshot.jpg)

The TIY library ([Downloads](releases)) enables you to easily build your own 3D marker (object) tracking system.
The TIY library ([Downloads](../../releases)) enables you to easily build your own 3D marker (object) tracking system.

* **Open-source** (with documentation)
* **Windows** and **Linux** supported
Expand All @@ -21,7 +21,7 @@ After camera calibration ([CameraSetUp](wiki/CameraSetUp.md)), any objects can b

Therefore the system can, for instance, be used in form of a **3D input device**. It is already used in an application of controlling a robot and interacting with a 2D user interface projected on a tracked surface.

Some features of TIY, used in the available _tiy`_`client_ and _tiy`_`server_ examples are:
Some features of TIY, used in the available tiy_client and tiy_server examples are:
* OpenCV and Aravis GigE (Linux) camera support
* Send data over network to multiple other computers
* Log data, capture image frames and record videos
Expand Down
16 changes: 8 additions & 8 deletions wiki/CameraSetUp.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ In the following, a small selection of components is listed.
If not a very wide setup of more than a few meters is used or not very high precission is needed, cheap "all-in-on" USB infrared webcams can be used such as the [Sabrent WCM-6LNV](http://www.amazon.com/Sabrent-Night-Vision-Webcam-WCM-6LNV/dp/B000BEZVEA/ref=sr_1_1?ie=UTF8&qid=1359396564&sr=8-1&keywords=infrared+webcam) or [Genius ISlim 321R](http://www.geniusnet.com/wSite/ct?xItem=16756&ctNode=160). Then you can skip the following parts until "Set up the cameras for TIY".

### Gigabit Ethernet cameras (Linux) ###
GigE cameras working with the used Aravis library on linux can be seen here: https://live.gnome.org/AravisTestedCameras.
GigE cameras working with the used Aravis library on linux can be seen here: https://wiki.gnome.org/Projects/Aravis/TestedCameras.

They have high resolutions, provide many different settings and have small distortions.

Expand Down Expand Up @@ -44,14 +44,14 @@ To use the two cameras as one stereo camera, you need both the intrinsic and ext

They can easily get from the MATLAB camera calibration toolbox (http://www.vision.caltech.edu/bouguetj/calib_doc/). The toolbox can also be used with OCTAVE (see http://www.sparetimelabs.com/cameracalib/index.html).

1. Download and unzip the _tiy`_`calibration_ _.zip_ file from the [Releases](../releases) section
1. Download and unzip the _tiy_calibration_ _.zip_ file from the [Releases](../releases) section
1. Download and unzip the toolbox from http://www.vision.caltech.edu/bouguetj/calib_doc/download/toolbox_calib.zip
1. Put all the MAT-files from the extracted toolbox into the extracted _tiy`_`calibration/camera`_`calibration/toolbox\_calib_ folder
1. Print out the _tiy`_`calibration/camera`_`calibration/pattern.pdf_ as large as possible and fix it completely flat onto an as inflexible as possible plate.
1. Put all the MAT-files from the extracted toolbox into the extracted _tiy_calibration/camera_calibration/toolbox\_calib_ folder
1. Print out the _tiy_calibration/camera_calibration/pattern.pdf_ as large as possible and fix it completely flat onto an as inflexible as possible plate.
1. Make at least 10-15 snapshots of the checkerboard pattern filling the screen in different angles like these http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/calib_example/index.html for the left and then for the right camera.
> > (Stereo) snapshots can be taken by the TIY _server_ example when activating the _<do`_`log`_`frame>_ option in the _config`_`run`_`parameters.xml_ configuration file and pressing the SPACE key for each snapshot. Perhaps the gain and exposure need to be highly increased to see the chessboard. The files are stored in the _tiy`_`log_ folder in the TIY bin or home directory. Warning: snapshots are overwritten after restarting the _server_ program!
1. (Stereo) snapshots can be taken by the TIY _server_ example when activating the _<do_log_frame>_ option in the _config_run_parameters.xml_ configuration file and pressing the SPACE key for each snapshot. Perhaps the gain and exposure need to be highly increased to see the chessboard. The files are stored in the _tiy_log_ folder in the TIY bin or home directory. Warning: snapshots are overwritten after restarting the _server_ program!
1. Make one stereo snapshot of the checkboard pattern lying preferably flat on a defined reproducible position in the sight of both cameras.
1. With this image data do the complete intrinsic and extrinsic calibration as explained here http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example.html.
> > After each intrinsic calibration, replace the _Calib`_`Results.m_ and _Calib`_`Results.mat_ files in the specific _tiy`_`calibration/camera`_`calibration/left_ or right folder. At the end of the extrinsic calibrations, replace the data in the _Calib`_`Results`_`extrinsic.m_ files.
1. Replace the _config`_`camera.xml_ file in the _tiy`_`calibration/camera`_`calibration_ folder with your file from the TIY folder. Run the _make`_`camera`_`parameters.m_ script to write the calibration data into the _config`_`camera.xml_ file and copy the changed configuration file back to the TIY folder.
> > Important: If you use Octave instead of Matlab, the complete file is overwritten and all camera settings like frame rate, width, height,... are set to default (see _write`_`XML`_`octave`_`camera.m_ in the _fcn_ subfolder). Therefore backup your _config`_`camera.xml_ file before running the script to be able to change these setting back to your choice.
1. After each intrinsic calibration, replace the _Calib_Results.m_ and _Calib_Results.mat_ files in the specific _tiy_calibration/camera_calibration/left_ or right folder. At the end of the extrinsic calibrations, replace the data in the _Calib_Results_extrinsic.m_ files.
1. Replace the _config_camera.xml_ file in the _tiy_calibration/camera_calibration_ folder with your file from the TIY folder. Run the _make_camera_parameters.m_ script to write the calibration data into the _config_camera.xml_ file and copy the changed configuration file back to the TIY folder.
1. Important: If you use Octave instead of Matlab, the complete file is overwritten and all camera settings like frame rate, width, height,... are set to default (see _write_XML_octave_camera.m_ in the _fcn_ subfolder). Therefore backup your _config_camera.xml_ file before running the script to be able to change these setting back to your choice.
21 changes: 12 additions & 9 deletions wiki/InstallationOnLinux.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,15 @@ Tested on Ubuntu 11.10, 12.04 and 12.10 all in 64-bit.
```
$ sudo apt-get install libglib2.0-dev libgtk-3-dev intltool libgtk2.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
```
1. download and extract the newest Aravis library from http://ftp.gnome.org/pub/gnome/sources/aravis/
1. go into the extracted directory and _configure_ (see _./configure --help_ for more information):

1. download and extract the newest Aravis library from http://ftp.gnome.org/pub/gnome/sources/aravis/
1. go into the extracted directory and _configure_ (see _./configure --help_ for more information):

```
$ ./configure --enable-gst-plugin --enable-viewer --enable-gtk3
```
1. _make_ and _make install_ the library

1. _make_ and _make install_ the library


# TIY library (and examples) #
Expand All @@ -34,9 +37,9 @@ Two options are available for installation:

## A. Pre-build package ##

The _tiy`_`client_ example can be downloaded and installed without the TIY library and on all PCs in the same network.
The _tiy_client_ example can be downloaded and installed without the TIY library and on all PCs in the same network.

TIY _.deb_ packages for 64-bit (_amd64_) and 32-bit (_i386_) are available in the [Releases](../releases) section. The TIY library with the _tiy`_`server_ and _tiy`_`client_ example will be installed.
TIY _.deb_ packages for 64-bit (_amd64_) and 32-bit (_i386_) are available in the [Releases](../releases) section. The TIY library with the _tiy_server_ and _tiy_client_ example will be installed.

For Aravis camera support, please build from source.

Expand All @@ -45,7 +48,7 @@ For Aravis camera support, please build from source.
```
sudo dpkg -i tiy-0.1.-linux-amd64.deb
```
> removal by:
removal by:
```
sudo dpkg -r tiy
```
Expand All @@ -57,13 +60,13 @@ For Aravis camera support, please build from source.
```
$ ccmake ../src
```
> Press the _C_ key, change the options as you want to
1. Press the _C_ key, change the options as you want to
* _BUILD`_`client_ _ON_: the client example will also be build
* _BUILD`_`server_ _ON_: the server example will also be build
* _USE`_`ARAVIS_ _ON_: build with the Aravis camera interface
* (advanced option:) _BUILD`_`x64_: build in 64-Bit or not
> and set the option _CMAKE`_`BUILD`_`TYPE_ to _Release_.
> Press the _C_ key a few times and then the _G_ key.
and set the option _CMAKE`_`BUILD`_`TYPE_ to _Release_.
Press the _C_ key a few times and then the _G_ key.
1. _make_ the project:
```
$ make
Expand Down
20 changes: 10 additions & 10 deletions wiki/InstallationOnWindows.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ Tested on Windows 7 64-bit.

# Dependencies #
* **Visual Studio 2010 / Visual C++ 10.0** from http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express
> > For 64-bit use, download and install the Windows SDK (e.g. 7.1. for Windows 7 http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx)
For 64-bit use, download and install the Windows SDK (e.g. 7.1. for Windows 7 http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx)


> (for other compilers some of the following steps could be different)
(for other compilers some of the following steps could be different)
* **OpenCV** (>= 2.3):
1. Download the newest Version from http://sourceforge.net/projects/opencvlibrary/files/opencv-win/
1. Run the _.exe_ file and extract
Expand All @@ -15,7 +15,7 @@ Tested on Windows 7 64-bit.
1. Copy the files _tbb.dll_ and _tbb\_debug.dll_ from _C:\OpenCV2.4\build\common\tbb\intel64\vc10\_ to _C:\OpenCV2.4\build\x64\vc10\bin_ for 64-bit and/or from _C:\OpenCV2.4\build\common\tbb\ia32\vc10\_ to _C:\OpenCV2.4\build\x86\vc10\bin_ for 32-bit
* (Build) **Boost** (>= 1.46):
1. Download the newest version from http://sourceforge.net/projects/boost/files/boost/
1. Unzip the folder (to e.g. _C:\boost`_`1`_`53`_`0_, but NOT into _C:\boost\boost`_`1`_`53`_`0_)
1. Unzip the folder (to e.g. _C:\boost_1_53_0_, but NOT into _C:\boost\boost_1_53_0_)
1. For 32-bit, start a MSVC command prompt (_Start_->_ALL Programms_->_Microsoft Visual Studio 2010 Express_), for 64-Bit (or also 32-Bit), start a SDK command prompt instead (_Start_->_ALL Programms_->_Microsoft Windows SDK v7.1_)
1. Navigate to the directory where Boost was unzipped to:
```
Expand All @@ -32,7 +32,7 @@ bootstrap
```
b2 --toolset=msvc-10.0 --build-type=complete install --libdir=C:\boost\lib\ --includedir=C:\boost\include\ --with-thread --with-chrono --with-regex --with-date_time --with-filesystem --with-system
```
> > or for 64-Bit
or, for 64-Bit
```
setenv /x64 /Release
```
Expand All @@ -44,7 +44,7 @@ b2 --toolset=msvc-10.0 --build-type=complete install --libdir=C:\boost\lib\ --in
1. Run the command prompt as admin (see point 4. under OpenCV), navigate to the directory, where the downloaded _install-interception.exe_ is located and type _install-interception.exe /install_
1. Reboot your system before the first use of the TIY library
* **CMake** (optional - only when building TIY yourself):
> > Downloadable from http://www.cmake.org/cmake/resources/software.html
Downloadable from http://www.cmake.org/cmake/resources/software.html

# TIY library (and examples) #

Expand All @@ -54,18 +54,18 @@ Two options are available for installation:

## A. Pre-build installers ##

The _tiy`_`client_ example can be downloaded and installed without the TIY library and on all PCs in the same network.
The _tiy_client_ example can be downloaded and installed without the TIY library and on all PCs in the same network.

For TIY, download and install the newest _tiy-X.X.-win_ _.exe_ version from the [Releases](../releases) area for 64-bit (_amd64_) or 32-bit (_i386_) systems. The TIY library with the _tiy`_`server_ and _tiy`_`client_ example will be installed.
For TIY, download and install the newest _tiy-X.X.-win.exe_ version from the [Releases](../releases) area for 64-bit (_amd64_) or 32-bit (_i386_) systems. The TIY library with the _tiy_server_ and _tiy_client_ example will be installed.

## B. Build from source ##

1. Download and unzip the newest _tiy-X.X..zip_ (or the _tiy`_`client_ example) file from the [Releases](../releases) section
1. Download and unzip the newest _tiy-X.X..zip_ (or the _tiy_client_ example) file from the [Releases](../releases) section
1. Start _CMake_ (_cmake-gui_) and select the _src_ directory as source and the _build_ directory as build
1. Click _Configure_ and choose _Visual Studio 10_ (or Win64 version for 64-bit) as generator
1. Change the options as you want to
* _BUILD`_`client_: the client example will also be build
* _BUILD`_`server_: the server example will also be build
* _BUILD_client_: the client example will also be build
* _BUILD_server_: the server example will also be build
1. Click _Configure_ and then _Generate_
1. Go into the _build_ directory and open the Visual Studio project by opening _tiy.sln_
1. Change the build configuration from _Debug_ to _Release_ and build the project _PACKAGE_ (right click on it and select _Build_)
Expand Down
13 changes: 6 additions & 7 deletions wiki/ObjectSetUp.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Building the targets #
If you do not want to build the targets by yourself, look at http://www.ar-tracking.com/products/markers-targets/targets/passive/ or http://www.iotracker.com/index.php?q=rigid_body_targets. Otherwise you can build the targets from objects and markers by yourself as explained in the following.
If you do not want to build the targets by yourself, look at http://www.ar-tracking.com/products/markers-targets/targets/passive/ or http://iotracker.com/indexfe2b.html?q=rigid_body_targets . Otherwise you can build the targets from objects and markers by yourself as explained in the following.

## Passive spherical markers ##
The most important parts are the reflecting marker balls.

Some manufacturers are ART (http://www.ar-tracking.com/products/markers-targets/markers/passive/), Qualisys (http://www.qualisys.com/products/accessories/passive-markers/) and NDI (http://www.ndigital.com/medical/ndi-passive-reflective-marker-spheres.php)

## Fixation ##
An easy way to attach the markers to an object is to use polymorph granules. It is a plastic that can be melt in water or by a hot air blower to (re-)shape it as (as often as) you want to (see http://www.maplin.co.uk/media/pdfs/N58CH.pdf).
An easy way to attach the markers to an object is to use polymorph granules. It is a plastic that can be melt in water or by a hot air blower to (re-)shape it as (as often as) you want to (see http://www.gyroscope.com/images/polymorph/polymorph.pdf).

By putting screws in the screw threads of the markers and perhaps also into the object itself, the connection is more robust.

Expand All @@ -20,8 +20,7 @@ Important to know is, that the number and arrangement of the markers should be s
# Object calibration #
In order to track the targets, TIY needs to know the exact arrangement of the markers attached it. This can easily be done by the following steps:

1. For each object, log the 3D points of at least 10-15 different positions and orientations of the markers attached to one object. This can be done with the TIY _server_ example by activating the _<do`_`log`_`3D>_ option in the _config`_`run`_`parameters.xml_ configuration file and pressing the SPACE key (or left mouse click if mouse used) at each pose. The log file, defined by _<log`_`points`_`3D>_, is stored in the _tiy`_`log_ folder in the home or TIY bin directory. For each object, rename the log file to _capture`_`template`_`X.dat_ (replace X by 1,2,...) before restarting the _server_ program for the next object.
> > Important: During the logs only the 3D points of one object are allowed to be detected by the system.
1. Move the log files to the _tiy`_`calibration/marker`_`object`_`calibration_ folder.
1. Replace the _config`_`object.xml_ file there with your file from the TIY folder. Run the _make`_`templates`_`from`_`3dpoints.m_ script (takes some time when using octave) to write the calibration data into the _config`_`object.xml_ file and copy the changed configuration file back to the TIY folder.
1. If you also need to define a virtual point (a point fixed to the object without a marker that you want to track; e.g. the peak of the 3D device in the figure above), do all the steps again, except for turning the object around the fixed (in position) virtual point while logging and using _capture`_`virt`_`point`_`X.dat_ and _make`_`virtual`_`point.m_.
1. For each object, log the 3D points of at least 10-15 different positions and orientations of the markers attached to one object. This can be done with the TIY _server_ example by activating the _<do_log_3D>_ option in the _config_run_parameters.xml_ configuration file and pressing the SPACE key (or left mouse click if mouse used) at each pose. The log file, defined by _<log_points_3D>_, is stored in the _tiy_log_ folder in the home or TIY bin directory. For each object, rename the log file to _capture_template_X.dat_ (replace X by 1,2,...) before restarting the _server_ program for the next object. Important: During the logs only the 3D points of one object are allowed to be detected by the system.
1. Move the log files to the _tiy_calibration/marker_object`_`calibration_ folder.
1. Replace the _config_object.xml_ file there with your file from the TIY folder. Run the _make_templates_from_3dpoints.m_ script (takes some time when using octave) to write the calibration data into the _config_object.xml_ file and copy the changed configuration file back to the TIY folder.
1. If you also need to define a virtual point (a point fixed to the object without a marker that you want to track; e.g. the peak of the 3D device in the figure above), do all the steps again, except for turning the object around the fixed (in position) virtual point while logging and using _capture_virt_point_X.dat_ and _make_virtual_point.m_ .
Loading

0 comments on commit f75d521

Please sign in to comment.