<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://airwiki.elet.polimi.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndreaRomanoni</id>
		<title>AIRWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://airwiki.elet.polimi.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndreaRomanoni"/>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php/Special:Contributions/AndreaRomanoni"/>
		<updated>2026-04-13T19:10:16Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.6</generator>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=18157</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=18157"/>
				<updated>2016-05-31T09:07:58Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrea.romanoni@polimi.it&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic: 3D reconstruction&lt;br /&gt;
&lt;br /&gt;
[[SLAM: state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov2012-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17305</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17305"/>
				<updated>2014-12-18T14:25:16Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@polimi.it&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic: 3D reconstruction&lt;br /&gt;
&lt;br /&gt;
[[SLAM: state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov2012-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17176</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17176"/>
				<updated>2014-11-11T07:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic: 3D reconstruction&lt;br /&gt;
&lt;br /&gt;
[[SLAM: state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov2012-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17175</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17175"/>
				<updated>2014-11-11T07:44:36Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic: 3D reconstruction&lt;br /&gt;
&lt;br /&gt;
[[SLAM: state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17174</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17174"/>
				<updated>2014-11-11T07:44:00Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|resarea=Robotics,Computer Vision&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic: 3D reconstruction&lt;br /&gt;
&lt;br /&gt;
[[SLAM: state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17173</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=17173"/>
				<updated>2014-11-11T07:43:20Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|resarea=Robotics and Computer Vision&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic: 3D reconstruction&lt;br /&gt;
&lt;br /&gt;
[[SLAM: state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=SLAM:_state_of_the_art_analysis&amp;diff=16043</id>
		<title>SLAM: state of the art analysis</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=SLAM:_state_of_the_art_analysis&amp;diff=16043"/>
				<updated>2013-03-27T15:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Tested systems:=&lt;br /&gt;
&lt;br /&gt;
Bundler [http://phototour.cs.washington.edu/bundler/]&lt;br /&gt;
&lt;br /&gt;
PTAM (Parallel Tracking And Map) [http://www.robots.ox.ac.uk/~gk/PTAM/]&lt;br /&gt;
&lt;br /&gt;
DWO (Double Window Optimization) [https://github.com/strasdat/ScaViSLAM]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Datasets:=&lt;br /&gt;
&lt;br /&gt;
RAWSEEDS [http://www.rawseeds.org/home/]&lt;br /&gt;
&lt;br /&gt;
KITTI [http://www.cvlibs.net/datasets/kitti/index.php]&lt;br /&gt;
&lt;br /&gt;
Computer Vision Group [http://vision.in.tum.de/data/datasets/rgbd-dataset/download]&lt;br /&gt;
&lt;br /&gt;
The New College Dataset [http://www.robots.ox.ac.uk/NewCollegeData/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Open issues/questions=&lt;br /&gt;
These are the main open questions.&lt;br /&gt;
*initialization with EKF (TODO see [http://www.openslam.org/robotvision])&lt;br /&gt;
*BA advantages:&lt;br /&gt;
**accuracy&lt;br /&gt;
**density&lt;br /&gt;
*limits:&lt;br /&gt;
**computational cost;&lt;br /&gt;
**resouces&lt;br /&gt;
&lt;br /&gt;
=To see/check=&lt;br /&gt;
Some useful tools to see or to check at least:&lt;br /&gt;
*g2o [http://openslam.org/g2o.html]&lt;br /&gt;
*MRPT [http://www.mrpt.org/]&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=SLAM:_state_of_the_art_analysis&amp;diff=16042</id>
		<title>SLAM: state of the art analysis</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=SLAM:_state_of_the_art_analysis&amp;diff=16042"/>
				<updated>2013-03-27T14:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: Created page with &amp;quot;=Tested systems:=  Bundler [http://phototour.cs.washington.edu/bundler/]  PTAM (Parallel Tracking And Map) [http://www.robots.ox.ac.uk/~gk/PTAM/]  DWO (Double Window Optimizat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Tested systems:=&lt;br /&gt;
&lt;br /&gt;
Bundler [http://phototour.cs.washington.edu/bundler/]&lt;br /&gt;
&lt;br /&gt;
PTAM (Parallel Tracking And Map) [http://www.robots.ox.ac.uk/~gk/PTAM/]&lt;br /&gt;
&lt;br /&gt;
DWO (Double Window Optimization) [https://github.com/strasdat/ScaViSLAM]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Datasets:=&lt;br /&gt;
&lt;br /&gt;
RAWSEEDS [http://www.rawseeds.org/home/]&lt;br /&gt;
&lt;br /&gt;
KITTI [http://www.cvlibs.net/datasets/kitti/index.php]&lt;br /&gt;
&lt;br /&gt;
Computer Vision Group [http://vision.in.tum.de/data/datasets/rgbd-dataset/download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Open issues/questions=&lt;br /&gt;
These are the main open questions.&lt;br /&gt;
*initialization with EKF (TODO see [http://www.openslam.org/robotvision])&lt;br /&gt;
*BA advantages:&lt;br /&gt;
**accuracy&lt;br /&gt;
**density&lt;br /&gt;
*limits:&lt;br /&gt;
**computational cost;&lt;br /&gt;
**resouces&lt;br /&gt;
&lt;br /&gt;
=To see/check=&lt;br /&gt;
Some useful tools to see or to check at least:&lt;br /&gt;
*g2o [http://openslam.org/g2o.html]&lt;br /&gt;
*MRPT [http://www.mrpt.org/]&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=16041</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=16041"/>
				<updated>2013-03-27T14:15:25Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|resarea=Robotics&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic: SLAM/SfM&lt;br /&gt;
&lt;br /&gt;
[[SLAM: state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=16040</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=16040"/>
				<updated>2013-03-27T14:14:33Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|resarea=Robotics&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic:&lt;br /&gt;
&lt;br /&gt;
SLAM/SfM - [[state of the art analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012, Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=16039</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=16039"/>
				<updated>2013-03-27T14:12:19Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PhD&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|resarea=Robotics&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Current research topic:&lt;br /&gt;
[[SLAM/SfM]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012,Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi;&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Airpaper&amp;diff=15903</id>
		<title>Airpaper</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Airpaper&amp;diff=15903"/>
				<updated>2013-02-13T10:58:35Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://svn.ws.dei.polimi.it/airpaper/ Airpaper] (authentication needed) is the repository of papers written at Airlab.&lt;br /&gt;
&lt;br /&gt;
It is based on [http://subversion.tigris.org/ Subversion]; you can find some help in configuring Subversion in the [[Configuring Subversion]] page.  ''&amp;lt;nowiki&amp;gt;https://svn.ws.dei.polimi.it/airpaper/&amp;lt;/nowiki&amp;gt;'' is the repository Url when you checkout your working copy.  When you have configured Subversion, you can find some information and pointers on how to use the system in the [[Using Subversion]] page.&lt;br /&gt;
&lt;br /&gt;
You have to be added as a user to the project by one of the administrators, even if you already are a user of Dei's Savane.  Administrators/authors currently are: [[User:RossellaBlatt|Rossella Blatt]], [[User:BernardoDalSeno|Bernardo Dal Seno]], [[User:GiulioFontana|Giulio Fontana]], [[User:MatteoMatteucci|Matteo Matteucci]], [[User:SimoneTognetti|Simone Tognetti]].  (New administrators, please add your names here)&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
This is a partial structure of the repository:&lt;br /&gt;
* '''bci''': BCI-related stuff&lt;br /&gt;
* '''benchmarking''': papers related to benchmarking in robotics&lt;br /&gt;
* '''common''': common stuff&lt;br /&gt;
** '''bib''': bibliography (Bibtex files, databases and styles)&lt;br /&gt;
** '''images''': obvious&lt;br /&gt;
* '''emotica''': Affective computing stuff&lt;br /&gt;
* '''slam''': simultaneous localization ans mapping&lt;br /&gt;
* '''tracking''': vehicle tracking&lt;br /&gt;
* '''wheelchair''': Lurch-related stuff&lt;br /&gt;
&lt;br /&gt;
All files related to a paper should be contained in one directory; please use a name that is clear and begins with a year, e.g., ''2009_Science'', ''2010_Nature_Higgs''.&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
If you are interested in finding out your performance in wrinting articles follow this guide the help you to use [[StatSVN]]&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== For administrators ==&lt;br /&gt;
&lt;br /&gt;
Instruction for managing users are on the page [[DEI Subversion Administration]]&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15634</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15634"/>
				<updated>2012-11-21T12:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=PhD&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=inactive&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
lug-ott 2012,Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&amp;lt;br/&amp;gt;&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi; &amp;lt;br/&amp;gt;&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15633</id>
		<title>Cameras, lenses and mirrors</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15633"/>
				<updated>2012-11-21T12:04:40Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* List of Cameras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IMPORTANT NOTES==&lt;br /&gt;
'''Never touch the sensor element (CCD or CMOS) of a camera with anything!''' It can very easily be scratched.&lt;br /&gt;
&lt;br /&gt;
'''Never touch the glass elements of a lens with your hands!''' The oil from human skin will cause damage.&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
In the AIRLab you can find different kind of cameras. These are the main groups:&lt;br /&gt;
*'''Analogue cameras'''. Video output is given as an electrical signal, which needs analogue-to-digital conversion to be processed by a computer; this is done by a specific card called ''frame grabber'' or ''video capture card'' (the latter tend to be the lowest-performance items; see [[Cameras, lenses and mirrors#Frame grabbers]] for details). Analogue video is outdated for computer vision and robotics applications, due to its cost, low performance and complexity; nowadays digital camera systems (such as all the ones listed below) are always preferred.&lt;br /&gt;
*'''USB cameras'''. Usually very cheap, they are suitable for low-performance applications (i.e. those where low frame rate is needed and low image quality can be accepted). Their main advantage (along with cost) is the fact that every modern computer has USB ports. The fact that the USB standard includes 5V DC power supply lines helps simplifying camera design and use.&lt;br /&gt;
*'''FireWire cameras'''. The FireWire (or IEEE1394) bus is generally used for low-end industrial cameras, i.e. devices with technical characteristics much superior to those typical of USB cameras but low-performance according to typical machine vision standards. Industrial cameras usually give to the user a much wider control over the acquisition parameters compared to consumer cameras, and therefore they are usually preferred in robotics; their downside is the higher cost. There are different versions of IEE1394 link (see http://en.wikipedia.org/wiki/Firewire for details), with different bitrates, starting from the 400Mbit/s FireWire 400. Generally they are all considered superior to USB 2.0, even if theoretical bandwidth is lower for FireWire 400. Firewire ports can include power supply lines, but some interfaces (and in particular those on portable computers) omit them. Although the use of FireWire interfaces has expanded in recent years, they are not yet considered a standard feature for motherboards.&lt;br /&gt;
*'''GigE Vision cameras'''. GigE Vision (or Gigabit Ethernet Vision) is a rather new connection standard for machine vision, based upon the established Ethernet protocol in its Gigabit (i.e. 1000Mbps) version. It is very interesting, as complex multiple-camera systems can be easily built using existing (Gigabit) Ethernet hardware, such as cables and switches. Vision data is acquired simply through a generic Ethernet port, commonly found on motherboards or easily added. However, 100Mbps (or ''fast Ethernet'') ports are not guaranteed to work and can sustain only modest video streams; on the other hand, 1000Mbps ports are now standard on motherboards, so this will not be a problem anymore in a few years. It seems that GigE Vision is becoming the most common interface for low- to medium-performance industrial cameras.&lt;br /&gt;
*'''CameraLink cameras'''. Cameralink is a high-speed interface expressly developed for high-performance machine vision applications. It is a point-to-point link, i.e. a CameraLink connection is used to connect a single camera to a digital acquisition card (''frame grabber''). Its diffusion is limited to applications where extreme frame rates ''and'' resolutions are needed, because CameraLink gear is very expensive.&lt;br /&gt;
*'''ST Camera boards'''. Cameras with cell phone sensor and ARM processor for onboard computation.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the cameras available in the AIRLab. (To be precise, it is a list of the cameras that are modern enough to be useful.) For each of them the main specifications (and a link to the full specifications) are given. Details on the different types of lens mount are given below in [[Cameras, lenses and mirrors#Lenses]]. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it.&lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are taking it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of Cameras==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!resolution&lt;br /&gt;
!B/W, color&lt;br /&gt;
!max. frame rate&lt;br /&gt;
!sensor size&lt;br /&gt;
!interface&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!lens mount&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications and/or manuals&lt;br /&gt;
|-&lt;br /&gt;
|1628x1236&lt;br /&gt;
|B/W&lt;br /&gt;
|24fps&lt;br /&gt;
|1/1.8&amp;quot;&lt;br /&gt;
|CameraLink&lt;br /&gt;
|Hitachi&lt;br /&gt;
|KP-F200CL&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|[[media:KP-F200-Op_Manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|752x480&lt;br /&gt;
|color&lt;br /&gt;
|70fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC750C&lt;br /&gt;
|CS-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (2/3), &amp;lt;br/&amp;gt;S05 (1/3)[[User:Andrea Romanoni| Andrea Romanoni]]&lt;br /&gt;
|&lt;br /&gt;
|[http://www.alliedvisiontec.com/us/products/cameras/gigabit-ethernet/prosilica-gc/gc750.html]&lt;br /&gt;
|-&lt;br /&gt;
|659x493&lt;br /&gt;
|color&lt;br /&gt;
|90fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC650C&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|[[http://www.alliedvisiontec.com/us/products/cameras/gigabit-ethernet/prosilica-gc/gc650.html]&lt;br /&gt;
|-&lt;br /&gt;
|1024x768&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC1020C&lt;br /&gt;
|C-mount (una ha l'anello C da spostare, altrimenti non va a fuoco e con attacco C si ROMPE!!!)&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate (1/2) &amp;lt;br&amp;gt;&lt;br /&gt;
in prestito a [[User:Domenicogsorrenti | Domenico G. Sorrenti]]  per demo Monza 19/11/12&lt;br /&gt;
|&lt;br /&gt;
|[http://www.alliedvisiontec.com/us/products/cameras/gigabit-ethernet/prosilica-gc/gc1020.html]&lt;br /&gt;
|-&lt;br /&gt;
|CCIR (625 lines)&lt;br /&gt;
|B/W&lt;br /&gt;
|CCIR (50fps, interlaced)&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|analogue&lt;br /&gt;
|Sony&lt;br /&gt;
|XC-ST70CE&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|DEI (2/2)&lt;br /&gt;
|&lt;br /&gt;
|[[media:XCST70E_manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i 400 industrial&lt;br /&gt;
|C-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (3/3)&lt;br /&gt;
|RAWSEEDS (3/3)&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_400_Industrial.htm&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i board camera&lt;br /&gt;
|proprietary&lt;br /&gt;
|8&lt;br /&gt;
|Lambrate (3/8), Bovisa (2/8), [[User:PaoloCalloni]] (1/8), [[User:DavideMigliore]] (1/8), [[User:CristianoAlessandro]] (1/8),&lt;br /&gt;
&lt;br /&gt;
presa 1 a fine febbraio10 con lente wide (quella di riserva di robocom), montaggio &amp;quot;a la rizzi&amp;quot; con lastrine di plexiglass e pezzo di profilato item [[User:Domenicogsorrenti]] (1/8)&lt;br /&gt;
|RAWSEEDS (2/8), MRT (?/8)&lt;br /&gt;
queste sono quelle &amp;quot;nuove&amp;quot;? se si una e' su rabbiati, portiere di mrt, sin da cuvio, e' nella testa omnidir Domenicogsorrenti 21.04.09&lt;br /&gt;
&lt;br /&gt;
1 nuova e' la frontale di recam&lt;br /&gt;
&lt;br /&gt;
1 nuova sulla testa omnidir di ridan&lt;br /&gt;
&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i digital camera&lt;br /&gt;
|fixed optics (4.3mm, f2.0)&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
1 e' sulla testa omnidir di rigo&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di recam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-03 (armadio domenico@unimib)&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-04 (armadio domenico@unimib)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_DC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480 dual sensor, 9cm baseline&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|STOC stereo-on-a-chip stereo camera&lt;br /&gt;
|C-mount, fitted with two 3.5mm, f1.6, 1/2&amp;quot; lenses&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate =&amp;gt; li lin office =&amp;gt; Domenicogsorrenti 13.01.09 =&amp;gt; giulio fontana 23.01.09&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/stoc.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|60fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|DCSG (associated with STOC)&lt;br /&gt;
|C-mount, fitted with one 3.5mm, f1.6, 1/2&amp;quot; lens&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/dcsg.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST1-Cam + ST2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|2&lt;br /&gt;
|ST1-Cam (STLCam (ST LEGO Camera)) (with Anil until 15.10.2010)[[User:AnilKoyuncu| Anil Koyuncu]], ST2-Cam [[User:LorenzoConsolaro | Lorenzo Consolaro]] and [[User:DarioCecchetto | Dario Cecchetto]]   &lt;br /&gt;
|ST1-Cam [[RunBot: a Robogame Robot]]&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm, ‎[[Media:Cam_pin_map.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|RVS2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|AIRLab Lambrate (armadio prosilica) &lt;br /&gt;
|?&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST4-DC (Demo board)&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|[[User:RaffaelePetta|Raffaele Petta]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 FPS&lt;br /&gt;
|?&lt;br /&gt;
|USB 2&lt;br /&gt;
|?&lt;br /&gt;
|Microsoft Kinect&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|[[User:CristianMandelli|Cristian Mandelli]], [[User:DeborahZamponi|Deborah Zamponi]] July/August 2011&lt;br /&gt;
|[[http://airlab.elet.polimi.it/index.php/E-2%3F_-_A_robot_for_exhibitions E2? A robot for exhibitions]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lenses==&lt;br /&gt;
Be aware that sensor dimension (i.e. its diagonal, measured in fractions of an inch) is  ''not'' the same for all cameras. Therefore one of the key specifications for a lens is the maximum sensor dimension supported. If you use a given lens with too big a sensor, the edges of the image will be black as they lie outside the circle of the projected image. Also beware of the strange convention used for sensor diagonals, i.e. a fraction in the form A/B&amp;quot; where A and B are integer ''or non-integer'' numbers. For instance an 1/2&amp;quot; sensor is smaller than an 1/1.8&amp;quot; one.&lt;br /&gt;
The variability of sensor dimensions has another side effect: the same lens has a different angle of view if you change the sensor size. Therefore the same lens can behave as a wide-angle with a large sensor and as a telephoto with a small sensor.&lt;br /&gt;
&lt;br /&gt;
An useful guide to lenses (in Italian or English) can be found at http://www.rapitron.it/guidaob.htm.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the actual lenses available in the AIRLab. For each of them the main specifications (and a link to the maker's or vendor's page for full specifications) are given. A '?' means an unknown parameter: if you know its value or experimentally find out it when using the lens (e.g. the maximum sensor size), please ''update the table'' before the information is lost again! Lenses having 'M12x0.5' in Column 'mount type' are only usable with Unibrain's Fire-i board cameras. A 'YES' in the 'Mpixel' column indicates a so-called ''Megapixel lens'', i.e. a high quality, low-distortion lens designed for high-resolution industrial cameras (typically having large sensors); please note that some of these are specifically designed for B/W (i.e. black and white) cameras. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it. &lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are bringing it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
===C-mount and CS-mount lenses===&lt;br /&gt;
Industrial cameras usually have interchangeable lenses. This allows for the choice of the lens that is more suitable to the considered application. There are two main standards for industrial camera lenses: '''C-mount''' and '''CS-mount'''. Both are screw-type mounts. CS-mount is simply a modified C-mount where the distance between the back of the lens and the sensor element (CCD or CMOS) is shorter: therefore a CS-mount lens can be mounted on a C-mount camera if an ''adapter ring'' (i.e. a distancing cylinder with suitable threads) is placed between them. It is impossible, though, to use a C-mount lens on a CS-mount camera: if you try you will almost certainly break the sensor, scratch the lens, or both. Just because a lens fits a camera, it doesn't mean it can be actually mounted on it!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|3.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|LURCH&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.0mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV0420&lt;br /&gt;
|YES (B/W only)&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|2.3mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|CS-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|08-gm123142&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Bicocca ([[User:Domenicogsorrenti | Domenico G. Sorrenti]] da 19/11/12)&lt;br /&gt;
|rawseeds&lt;br /&gt;
|datasheet[[http://www.goyooptical.com/products/cctv/manual/GM12314S.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|4.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.8mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|M0518&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|http://www.computar.com/cctvprod/computar/mono/048.html&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (?)&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR26014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|4&lt;br /&gt;
|Lambrate&lt;br /&gt;
|2 nell'armadio + 2 scatole vuote&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR38014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8.5mm&lt;br /&gt;
|f1.3&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|(old model)&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|1 Lambrate + ? DEI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR31214MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|15mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV1520&lt;br /&gt;
|YES&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|6-15mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|12.5-75mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===M12 lenses===&lt;br /&gt;
We also use M12 lenses. These lenses are very simple, with no iris, and very small. Their mounting system is an M12x0.5 metric screw thread. They are commonly used for webcams, and usually do not provide the top optical quality.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|2.1mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2042&lt;br /&gt;
|NO&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
1 e' a bovisa nelle mani di marcello&lt;br /&gt;
&lt;br /&gt;
1 e' a lambrate su un giano riusato come robowii&lt;br /&gt;
&lt;br /&gt;
1 e' a bovisa sulla frontale del triskar recam&lt;br /&gt;
&lt;br /&gt;
1 e' in mano a martino per fare una frontale =&amp;gt; 06.05.09 E' in bovisa montata sul triskar #3&lt;br /&gt;
&lt;br /&gt;
1 l'ha Davide Migliore per acquisizioni monoslam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di rabbiati&lt;br /&gt;
&lt;br /&gt;
Domenicogsorrenti 04.05.09&lt;br /&gt;
|MRT midsize, robowii, monoslam&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm, no IR filter&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2046&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2043&lt;br /&gt;
|NO&lt;br /&gt;
|3&lt;br /&gt;
|Bovisa (1/3), Lambrate (2/3)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2044&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frame grabbers==&lt;br /&gt;
As previously said, a '''frame grabber''' is an electronic board that connects to one or more cameras, and converts the signals from the cameras into a data stream that can be elaborated by a computer. They are usually designed as expansion boards to be fitted into the computer case. Frame grabbers are necessary for ''analogue cameras'' (as they include the analogue/digital converters) or for CameraLink digital cameras (in this case the frame grabber is essentially a high speed dedicated digital interface). Other kinds of digital cameras don't need a frame grabber: this is one of the main advantages of digital cameras over analogue ones in machine vision applications, where the processing is almost always performed by computers.&lt;br /&gt;
In the AIRLab two models of frame grabber are available:&lt;br /&gt;
*a digital frame grabber from Euresys, model Expert 2, having two CameraLink inputs (http://www.euresys.com/Products/grablink/GrablinkSeries.asp). ''Notes: needs a PCI-X slot; one of the inputs is not working due to a fault.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two single-channel analogue frame grabbers from Matrox, models Meteor and Meteor Pro (http://www.matrox.com/imaging/support/old_products/home.cfm).&lt;br /&gt;
All the frame grabbers (except the one on the MO.RO.1) are currently in AIRLab/DEI. If you move one of them, please '''write it down here'''... and do it NOW!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mirrors==&lt;br /&gt;
Much work has been done and is being done at the AIRLab on the topic of '''omnidirectional (machine) vision''' (sometimes referred to as ''omnivision''). Omnidirectional vision systems use special hardware to overcome the limitations of conventional vision systems in terms of field of view. The approach to this problem that we generally adopt is the use of conventional cameras in association with convex '''mirrors''', i.e. the capturing of the image reflected by a suitably-shaped mirror with a camera. The possibility of designing mirrors with specific geometric properties gives a very useful means to control the geometric behaviour of the whole camera+mirror system.&lt;br /&gt;
&lt;br /&gt;
TODO for someone who knows better ;-) : mirror list&lt;br /&gt;
&lt;br /&gt;
==Cable==&lt;br /&gt;
The complete list of cable for camera connection and/or power is under construction. You can partecipate listing below which cables are you using...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!length&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|Bicocca (refer to Domenico G. Sorrenti, 2009-11-11)&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|on LURCH wheelchair&lt;br /&gt;
|LURCH&lt;br /&gt;
|&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15632</id>
		<title>Cameras, lenses and mirrors</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15632"/>
				<updated>2012-11-20T15:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* List of Cameras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IMPORTANT NOTES==&lt;br /&gt;
'''Never touch the sensor element (CCD or CMOS) of a camera with anything!''' It can very easily be scratched.&lt;br /&gt;
&lt;br /&gt;
'''Never touch the glass elements of a lens with your hands!''' The oil from human skin will cause damage.&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
In the AIRLab you can find different kind of cameras. These are the main groups:&lt;br /&gt;
*'''Analogue cameras'''. Video output is given as an electrical signal, which needs analogue-to-digital conversion to be processed by a computer; this is done by a specific card called ''frame grabber'' or ''video capture card'' (the latter tend to be the lowest-performance items; see [[Cameras, lenses and mirrors#Frame grabbers]] for details). Analogue video is outdated for computer vision and robotics applications, due to its cost, low performance and complexity; nowadays digital camera systems (such as all the ones listed below) are always preferred.&lt;br /&gt;
*'''USB cameras'''. Usually very cheap, they are suitable for low-performance applications (i.e. those where low frame rate is needed and low image quality can be accepted). Their main advantage (along with cost) is the fact that every modern computer has USB ports. The fact that the USB standard includes 5V DC power supply lines helps simplifying camera design and use.&lt;br /&gt;
*'''FireWire cameras'''. The FireWire (or IEEE1394) bus is generally used for low-end industrial cameras, i.e. devices with technical characteristics much superior to those typical of USB cameras but low-performance according to typical machine vision standards. Industrial cameras usually give to the user a much wider control over the acquisition parameters compared to consumer cameras, and therefore they are usually preferred in robotics; their downside is the higher cost. There are different versions of IEE1394 link (see http://en.wikipedia.org/wiki/Firewire for details), with different bitrates, starting from the 400Mbit/s FireWire 400. Generally they are all considered superior to USB 2.0, even if theoretical bandwidth is lower for FireWire 400. Firewire ports can include power supply lines, but some interfaces (and in particular those on portable computers) omit them. Although the use of FireWire interfaces has expanded in recent years, they are not yet considered a standard feature for motherboards.&lt;br /&gt;
*'''GigE Vision cameras'''. GigE Vision (or Gigabit Ethernet Vision) is a rather new connection standard for machine vision, based upon the established Ethernet protocol in its Gigabit (i.e. 1000Mbps) version. It is very interesting, as complex multiple-camera systems can be easily built using existing (Gigabit) Ethernet hardware, such as cables and switches. Vision data is acquired simply through a generic Ethernet port, commonly found on motherboards or easily added. However, 100Mbps (or ''fast Ethernet'') ports are not guaranteed to work and can sustain only modest video streams; on the other hand, 1000Mbps ports are now standard on motherboards, so this will not be a problem anymore in a few years. It seems that GigE Vision is becoming the most common interface for low- to medium-performance industrial cameras.&lt;br /&gt;
*'''CameraLink cameras'''. Cameralink is a high-speed interface expressly developed for high-performance machine vision applications. It is a point-to-point link, i.e. a CameraLink connection is used to connect a single camera to a digital acquisition card (''frame grabber''). Its diffusion is limited to applications where extreme frame rates ''and'' resolutions are needed, because CameraLink gear is very expensive.&lt;br /&gt;
*'''ST Camera boards'''. Cameras with cell phone sensor and ARM processor for onboard computation.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the cameras available in the AIRLab. (To be precise, it is a list of the cameras that are modern enough to be useful.) For each of them the main specifications (and a link to the full specifications) are given. Details on the different types of lens mount are given below in [[Cameras, lenses and mirrors#Lenses]]. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it.&lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are taking it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of Cameras==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!resolution&lt;br /&gt;
!B/W, color&lt;br /&gt;
!max. frame rate&lt;br /&gt;
!sensor size&lt;br /&gt;
!interface&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!lens mount&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications and/or manuals&lt;br /&gt;
|-&lt;br /&gt;
|1628x1236&lt;br /&gt;
|B/W&lt;br /&gt;
|24fps&lt;br /&gt;
|1/1.8&amp;quot;&lt;br /&gt;
|CameraLink&lt;br /&gt;
|Hitachi&lt;br /&gt;
|KP-F200CL&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|[[media:KP-F200-Op_Manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|752x480&lt;br /&gt;
|color&lt;br /&gt;
|70fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC750C&lt;br /&gt;
|CS-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (2/3), &amp;lt;br/&amp;gt;S05 (1/3)[[User:Andrea Romanoni| Andrea Romanoni]]&lt;br /&gt;
|&lt;br /&gt;
|[http://www.alliedvisiontec.com/us/products/cameras/gigabit-ethernet/prosilica-gc/gc750.html]&lt;br /&gt;
|-&lt;br /&gt;
|659x493&lt;br /&gt;
|color&lt;br /&gt;
|90fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC650C&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|[[http://www.alliedvisiontec.com/us/products/cameras/gigabit-ethernet/prosilica-gc/gc650.html]&lt;br /&gt;
|-&lt;br /&gt;
|1024x768&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC1020C&lt;br /&gt;
|CS-mount&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate (1/2) &amp;lt;br&amp;gt;&lt;br /&gt;
in prestito a [[User:Domenicogsorrenti | Domenico G. Sorrenti]]  per demo Monza 19/11/12&lt;br /&gt;
|&lt;br /&gt;
|[http://www.alliedvisiontec.com/us/products/cameras/gigabit-ethernet/prosilica-gc/gc1020.html]&lt;br /&gt;
|-&lt;br /&gt;
|CCIR (625 lines)&lt;br /&gt;
|B/W&lt;br /&gt;
|CCIR (50fps, interlaced)&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|analogue&lt;br /&gt;
|Sony&lt;br /&gt;
|XC-ST70CE&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|DEI (2/2)&lt;br /&gt;
|&lt;br /&gt;
|[[media:XCST70E_manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i 400 industrial&lt;br /&gt;
|C-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (3/3)&lt;br /&gt;
|RAWSEEDS (3/3)&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_400_Industrial.htm&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i board camera&lt;br /&gt;
|proprietary&lt;br /&gt;
|8&lt;br /&gt;
|Lambrate (3/8), Bovisa (2/8), [[User:PaoloCalloni]] (1/8), [[User:DavideMigliore]] (1/8), [[User:CristianoAlessandro]] (1/8),&lt;br /&gt;
&lt;br /&gt;
presa 1 a fine febbraio10 con lente wide (quella di riserva di robocom), montaggio &amp;quot;a la rizzi&amp;quot; con lastrine di plexiglass e pezzo di profilato item [[User:Domenicogsorrenti]] (1/8)&lt;br /&gt;
|RAWSEEDS (2/8), MRT (?/8)&lt;br /&gt;
queste sono quelle &amp;quot;nuove&amp;quot;? se si una e' su rabbiati, portiere di mrt, sin da cuvio, e' nella testa omnidir Domenicogsorrenti 21.04.09&lt;br /&gt;
&lt;br /&gt;
1 nuova e' la frontale di recam&lt;br /&gt;
&lt;br /&gt;
1 nuova sulla testa omnidir di ridan&lt;br /&gt;
&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i digital camera&lt;br /&gt;
|fixed optics (4.3mm, f2.0)&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
1 e' sulla testa omnidir di rigo&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di recam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-03 (armadio domenico@unimib)&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-04 (armadio domenico@unimib)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_DC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480 dual sensor, 9cm baseline&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|STOC stereo-on-a-chip stereo camera&lt;br /&gt;
|C-mount, fitted with two 3.5mm, f1.6, 1/2&amp;quot; lenses&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate =&amp;gt; li lin office =&amp;gt; Domenicogsorrenti 13.01.09 =&amp;gt; giulio fontana 23.01.09&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/stoc.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|60fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|DCSG (associated with STOC)&lt;br /&gt;
|C-mount, fitted with one 3.5mm, f1.6, 1/2&amp;quot; lens&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/dcsg.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST1-Cam + ST2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|2&lt;br /&gt;
|ST1-Cam (STLCam (ST LEGO Camera)) (with Anil until 15.10.2010)[[User:AnilKoyuncu| Anil Koyuncu]], ST2-Cam [[User:LorenzoConsolaro | Lorenzo Consolaro]] and [[User:DarioCecchetto | Dario Cecchetto]]   &lt;br /&gt;
|ST1-Cam [[RunBot: a Robogame Robot]]&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm, ‎[[Media:Cam_pin_map.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|RVS2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|AIRLab Lambrate (armadio prosilica) &lt;br /&gt;
|?&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST4-DC (Demo board)&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|[[User:RaffaelePetta|Raffaele Petta]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 FPS&lt;br /&gt;
|?&lt;br /&gt;
|USB 2&lt;br /&gt;
|?&lt;br /&gt;
|Microsoft Kinect&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|[[User:CristianMandelli|Cristian Mandelli]], [[User:DeborahZamponi|Deborah Zamponi]] July/August 2011&lt;br /&gt;
|[[http://airlab.elet.polimi.it/index.php/E-2%3F_-_A_robot_for_exhibitions E2? A robot for exhibitions]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lenses==&lt;br /&gt;
Be aware that sensor dimension (i.e. its diagonal, measured in fractions of an inch) is  ''not'' the same for all cameras. Therefore one of the key specifications for a lens is the maximum sensor dimension supported. If you use a given lens with too big a sensor, the edges of the image will be black as they lie outside the circle of the projected image. Also beware of the strange convention used for sensor diagonals, i.e. a fraction in the form A/B&amp;quot; where A and B are integer ''or non-integer'' numbers. For instance an 1/2&amp;quot; sensor is smaller than an 1/1.8&amp;quot; one.&lt;br /&gt;
The variability of sensor dimensions has another side effect: the same lens has a different angle of view if you change the sensor size. Therefore the same lens can behave as a wide-angle with a large sensor and as a telephoto with a small sensor.&lt;br /&gt;
&lt;br /&gt;
An useful guide to lenses (in Italian or English) can be found at http://www.rapitron.it/guidaob.htm.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the actual lenses available in the AIRLab. For each of them the main specifications (and a link to the maker's or vendor's page for full specifications) are given. A '?' means an unknown parameter: if you know its value or experimentally find out it when using the lens (e.g. the maximum sensor size), please ''update the table'' before the information is lost again! Lenses having 'M12x0.5' in Column 'mount type' are only usable with Unibrain's Fire-i board cameras. A 'YES' in the 'Mpixel' column indicates a so-called ''Megapixel lens'', i.e. a high quality, low-distortion lens designed for high-resolution industrial cameras (typically having large sensors); please note that some of these are specifically designed for B/W (i.e. black and white) cameras. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it. &lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are bringing it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
===C-mount and CS-mount lenses===&lt;br /&gt;
Industrial cameras usually have interchangeable lenses. This allows for the choice of the lens that is more suitable to the considered application. There are two main standards for industrial camera lenses: '''C-mount''' and '''CS-mount'''. Both are screw-type mounts. CS-mount is simply a modified C-mount where the distance between the back of the lens and the sensor element (CCD or CMOS) is shorter: therefore a CS-mount lens can be mounted on a C-mount camera if an ''adapter ring'' (i.e. a distancing cylinder with suitable threads) is placed between them. It is impossible, though, to use a C-mount lens on a CS-mount camera: if you try you will almost certainly break the sensor, scratch the lens, or both. Just because a lens fits a camera, it doesn't mean it can be actually mounted on it!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|3.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|LURCH&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.0mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV0420&lt;br /&gt;
|YES (B/W only)&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|2.3mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|CS-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|08-gm123142&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Bicocca ([[User:Domenicogsorrenti | Domenico G. Sorrenti]] da 19/11/12)&lt;br /&gt;
|rawseeds&lt;br /&gt;
|datasheet[[http://www.goyooptical.com/products/cctv/manual/GM12314S.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|4.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.8mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|M0518&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|http://www.computar.com/cctvprod/computar/mono/048.html&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (?)&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR26014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|4&lt;br /&gt;
|Lambrate&lt;br /&gt;
|2 nell'armadio + 2 scatole vuote&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR38014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8.5mm&lt;br /&gt;
|f1.3&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|(old model)&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|1 Lambrate + ? DEI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR31214MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|15mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV1520&lt;br /&gt;
|YES&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|6-15mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|12.5-75mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===M12 lenses===&lt;br /&gt;
We also use M12 lenses. These lenses are very simple, with no iris, and very small. Their mounting system is an M12x0.5 metric screw thread. They are commonly used for webcams, and usually do not provide the top optical quality.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|2.1mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2042&lt;br /&gt;
|NO&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
1 e' a bovisa nelle mani di marcello&lt;br /&gt;
&lt;br /&gt;
1 e' a lambrate su un giano riusato come robowii&lt;br /&gt;
&lt;br /&gt;
1 e' a bovisa sulla frontale del triskar recam&lt;br /&gt;
&lt;br /&gt;
1 e' in mano a martino per fare una frontale =&amp;gt; 06.05.09 E' in bovisa montata sul triskar #3&lt;br /&gt;
&lt;br /&gt;
1 l'ha Davide Migliore per acquisizioni monoslam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di rabbiati&lt;br /&gt;
&lt;br /&gt;
Domenicogsorrenti 04.05.09&lt;br /&gt;
|MRT midsize, robowii, monoslam&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm, no IR filter&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2046&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2043&lt;br /&gt;
|NO&lt;br /&gt;
|3&lt;br /&gt;
|Bovisa (1/3), Lambrate (2/3)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2044&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frame grabbers==&lt;br /&gt;
As previously said, a '''frame grabber''' is an electronic board that connects to one or more cameras, and converts the signals from the cameras into a data stream that can be elaborated by a computer. They are usually designed as expansion boards to be fitted into the computer case. Frame grabbers are necessary for ''analogue cameras'' (as they include the analogue/digital converters) or for CameraLink digital cameras (in this case the frame grabber is essentially a high speed dedicated digital interface). Other kinds of digital cameras don't need a frame grabber: this is one of the main advantages of digital cameras over analogue ones in machine vision applications, where the processing is almost always performed by computers.&lt;br /&gt;
In the AIRLab two models of frame grabber are available:&lt;br /&gt;
*a digital frame grabber from Euresys, model Expert 2, having two CameraLink inputs (http://www.euresys.com/Products/grablink/GrablinkSeries.asp). ''Notes: needs a PCI-X slot; one of the inputs is not working due to a fault.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two single-channel analogue frame grabbers from Matrox, models Meteor and Meteor Pro (http://www.matrox.com/imaging/support/old_products/home.cfm).&lt;br /&gt;
All the frame grabbers (except the one on the MO.RO.1) are currently in AIRLab/DEI. If you move one of them, please '''write it down here'''... and do it NOW!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mirrors==&lt;br /&gt;
Much work has been done and is being done at the AIRLab on the topic of '''omnidirectional (machine) vision''' (sometimes referred to as ''omnivision''). Omnidirectional vision systems use special hardware to overcome the limitations of conventional vision systems in terms of field of view. The approach to this problem that we generally adopt is the use of conventional cameras in association with convex '''mirrors''', i.e. the capturing of the image reflected by a suitably-shaped mirror with a camera. The possibility of designing mirrors with specific geometric properties gives a very useful means to control the geometric behaviour of the whole camera+mirror system.&lt;br /&gt;
&lt;br /&gt;
TODO for someone who knows better ;-) : mirror list&lt;br /&gt;
&lt;br /&gt;
==Cable==&lt;br /&gt;
The complete list of cable for camera connection and/or power is under construction. You can partecipate listing below which cables are you using...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!length&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|Bicocca (refer to Domenico G. Sorrenti, 2009-11-11)&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|on LURCH wheelchair&lt;br /&gt;
|LURCH&lt;br /&gt;
|&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15631</id>
		<title>Cameras, lenses and mirrors</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15631"/>
				<updated>2012-11-20T14:47:08Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* List of Cameras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IMPORTANT NOTES==&lt;br /&gt;
'''Never touch the sensor element (CCD or CMOS) of a camera with anything!''' It can very easily be scratched.&lt;br /&gt;
&lt;br /&gt;
'''Never touch the glass elements of a lens with your hands!''' The oil from human skin will cause damage.&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
In the AIRLab you can find different kind of cameras. These are the main groups:&lt;br /&gt;
*'''Analogue cameras'''. Video output is given as an electrical signal, which needs analogue-to-digital conversion to be processed by a computer; this is done by a specific card called ''frame grabber'' or ''video capture card'' (the latter tend to be the lowest-performance items; see [[Cameras, lenses and mirrors#Frame grabbers]] for details). Analogue video is outdated for computer vision and robotics applications, due to its cost, low performance and complexity; nowadays digital camera systems (such as all the ones listed below) are always preferred.&lt;br /&gt;
*'''USB cameras'''. Usually very cheap, they are suitable for low-performance applications (i.e. those where low frame rate is needed and low image quality can be accepted). Their main advantage (along with cost) is the fact that every modern computer has USB ports. The fact that the USB standard includes 5V DC power supply lines helps simplifying camera design and use.&lt;br /&gt;
*'''FireWire cameras'''. The FireWire (or IEEE1394) bus is generally used for low-end industrial cameras, i.e. devices with technical characteristics much superior to those typical of USB cameras but low-performance according to typical machine vision standards. Industrial cameras usually give to the user a much wider control over the acquisition parameters compared to consumer cameras, and therefore they are usually preferred in robotics; their downside is the higher cost. There are different versions of IEE1394 link (see http://en.wikipedia.org/wiki/Firewire for details), with different bitrates, starting from the 400Mbit/s FireWire 400. Generally they are all considered superior to USB 2.0, even if theoretical bandwidth is lower for FireWire 400. Firewire ports can include power supply lines, but some interfaces (and in particular those on portable computers) omit them. Although the use of FireWire interfaces has expanded in recent years, they are not yet considered a standard feature for motherboards.&lt;br /&gt;
*'''GigE Vision cameras'''. GigE Vision (or Gigabit Ethernet Vision) is a rather new connection standard for machine vision, based upon the established Ethernet protocol in its Gigabit (i.e. 1000Mbps) version. It is very interesting, as complex multiple-camera systems can be easily built using existing (Gigabit) Ethernet hardware, such as cables and switches. Vision data is acquired simply through a generic Ethernet port, commonly found on motherboards or easily added. However, 100Mbps (or ''fast Ethernet'') ports are not guaranteed to work and can sustain only modest video streams; on the other hand, 1000Mbps ports are now standard on motherboards, so this will not be a problem anymore in a few years. It seems that GigE Vision is becoming the most common interface for low- to medium-performance industrial cameras.&lt;br /&gt;
*'''CameraLink cameras'''. Cameralink is a high-speed interface expressly developed for high-performance machine vision applications. It is a point-to-point link, i.e. a CameraLink connection is used to connect a single camera to a digital acquisition card (''frame grabber''). Its diffusion is limited to applications where extreme frame rates ''and'' resolutions are needed, because CameraLink gear is very expensive.&lt;br /&gt;
*'''ST Camera boards'''. Cameras with cell phone sensor and ARM processor for onboard computation.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the cameras available in the AIRLab. (To be precise, it is a list of the cameras that are modern enough to be useful.) For each of them the main specifications (and a link to the full specifications) are given. Details on the different types of lens mount are given below in [[Cameras, lenses and mirrors#Lenses]]. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it.&lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are taking it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of Cameras==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!resolution&lt;br /&gt;
!B/W, color&lt;br /&gt;
!max. frame rate&lt;br /&gt;
!sensor size&lt;br /&gt;
!interface&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!lens mount&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications and/or manuals&lt;br /&gt;
|-&lt;br /&gt;
|1628x1236&lt;br /&gt;
|B/W&lt;br /&gt;
|24fps&lt;br /&gt;
|1/1.8&amp;quot;&lt;br /&gt;
|CameraLink&lt;br /&gt;
|Hitachi&lt;br /&gt;
|KP-F200CL&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|[[media:KP-F200-Op_Manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|752x480&lt;br /&gt;
|color&lt;br /&gt;
|70fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC750C&lt;br /&gt;
|CS-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (1/3), [[User:SimoneTognetti| Simone Tognetti]](from 19/05/2009, dal 14/12/2009 sono impiegate per esperimenti Affective nell'Airlab del DEI)(2/3)&lt;br /&gt;
|Driving companions (2/3)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|659x493&lt;br /&gt;
|color&lt;br /&gt;
|90fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC650C&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|1024x768&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC1020C&lt;br /&gt;
|CS-mount&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate (1/2) &amp;lt;br&amp;gt;&lt;br /&gt;
in prestito a [[User:Domenicogsorrenti | Domenico G. Sorrenti]]  per demo Monza 19/11/12&lt;br /&gt;
|RAWSEEDS (1/2)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|CCIR (625 lines)&lt;br /&gt;
|B/W&lt;br /&gt;
|CCIR (50fps, interlaced)&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|analogue&lt;br /&gt;
|Sony&lt;br /&gt;
|XC-ST70CE&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|DEI (2/2)&lt;br /&gt;
|&lt;br /&gt;
|[[media:XCST70E_manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i 400 industrial&lt;br /&gt;
|C-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (3/3)&lt;br /&gt;
|RAWSEEDS (3/3)&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_400_Industrial.htm&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i board camera&lt;br /&gt;
|proprietary&lt;br /&gt;
|8&lt;br /&gt;
|Lambrate (3/8), Bovisa (2/8), [[User:PaoloCalloni]] (1/8), [[User:DavideMigliore]] (1/8), [[User:CristianoAlessandro]] (1/8),&lt;br /&gt;
&lt;br /&gt;
presa 1 a fine febbraio10 con lente wide (quella di riserva di robocom), montaggio &amp;quot;a la rizzi&amp;quot; con lastrine di plexiglass e pezzo di profilato item [[User:Domenicogsorrenti]] (1/8)&lt;br /&gt;
|RAWSEEDS (2/8), MRT (?/8)&lt;br /&gt;
queste sono quelle &amp;quot;nuove&amp;quot;? se si una e' su rabbiati, portiere di mrt, sin da cuvio, e' nella testa omnidir Domenicogsorrenti 21.04.09&lt;br /&gt;
&lt;br /&gt;
1 nuova e' la frontale di recam&lt;br /&gt;
&lt;br /&gt;
1 nuova sulla testa omnidir di ridan&lt;br /&gt;
&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i digital camera&lt;br /&gt;
|fixed optics (4.3mm, f2.0)&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
1 e' sulla testa omnidir di rigo&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di recam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-03 (armadio domenico@unimib)&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-04 (armadio domenico@unimib)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_DC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480 dual sensor, 9cm baseline&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|STOC stereo-on-a-chip stereo camera&lt;br /&gt;
|C-mount, fitted with two 3.5mm, f1.6, 1/2&amp;quot; lenses&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate =&amp;gt; li lin office =&amp;gt; Domenicogsorrenti 13.01.09 =&amp;gt; giulio fontana 23.01.09&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/stoc.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|60fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|DCSG (associated with STOC)&lt;br /&gt;
|C-mount, fitted with one 3.5mm, f1.6, 1/2&amp;quot; lens&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/dcsg.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST1-Cam + ST2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|2&lt;br /&gt;
|ST1-Cam (STLCam (ST LEGO Camera)) (with Anil until 15.10.2010)[[User:AnilKoyuncu| Anil Koyuncu]], ST2-Cam [[User:LorenzoConsolaro | Lorenzo Consolaro]] and [[User:DarioCecchetto | Dario Cecchetto]]   &lt;br /&gt;
|ST1-Cam [[RunBot: a Robogame Robot]]&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm, ‎[[Media:Cam_pin_map.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|RVS2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|AIRLab Lambrate (armadio prosilica) &lt;br /&gt;
|?&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST4-DC (Demo board)&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|[[User:RaffaelePetta|Raffaele Petta]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 FPS&lt;br /&gt;
|?&lt;br /&gt;
|USB 2&lt;br /&gt;
|?&lt;br /&gt;
|Microsoft Kinect&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|[[User:CristianMandelli|Cristian Mandelli]], [[User:DeborahZamponi|Deborah Zamponi]] July/August 2011&lt;br /&gt;
|[[http://airlab.elet.polimi.it/index.php/E-2%3F_-_A_robot_for_exhibitions E2? A robot for exhibitions]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lenses==&lt;br /&gt;
Be aware that sensor dimension (i.e. its diagonal, measured in fractions of an inch) is  ''not'' the same for all cameras. Therefore one of the key specifications for a lens is the maximum sensor dimension supported. If you use a given lens with too big a sensor, the edges of the image will be black as they lie outside the circle of the projected image. Also beware of the strange convention used for sensor diagonals, i.e. a fraction in the form A/B&amp;quot; where A and B are integer ''or non-integer'' numbers. For instance an 1/2&amp;quot; sensor is smaller than an 1/1.8&amp;quot; one.&lt;br /&gt;
The variability of sensor dimensions has another side effect: the same lens has a different angle of view if you change the sensor size. Therefore the same lens can behave as a wide-angle with a large sensor and as a telephoto with a small sensor.&lt;br /&gt;
&lt;br /&gt;
An useful guide to lenses (in Italian or English) can be found at http://www.rapitron.it/guidaob.htm.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the actual lenses available in the AIRLab. For each of them the main specifications (and a link to the maker's or vendor's page for full specifications) are given. A '?' means an unknown parameter: if you know its value or experimentally find out it when using the lens (e.g. the maximum sensor size), please ''update the table'' before the information is lost again! Lenses having 'M12x0.5' in Column 'mount type' are only usable with Unibrain's Fire-i board cameras. A 'YES' in the 'Mpixel' column indicates a so-called ''Megapixel lens'', i.e. a high quality, low-distortion lens designed for high-resolution industrial cameras (typically having large sensors); please note that some of these are specifically designed for B/W (i.e. black and white) cameras. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it. &lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are bringing it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
===C-mount and CS-mount lenses===&lt;br /&gt;
Industrial cameras usually have interchangeable lenses. This allows for the choice of the lens that is more suitable to the considered application. There are two main standards for industrial camera lenses: '''C-mount''' and '''CS-mount'''. Both are screw-type mounts. CS-mount is simply a modified C-mount where the distance between the back of the lens and the sensor element (CCD or CMOS) is shorter: therefore a CS-mount lens can be mounted on a C-mount camera if an ''adapter ring'' (i.e. a distancing cylinder with suitable threads) is placed between them. It is impossible, though, to use a C-mount lens on a CS-mount camera: if you try you will almost certainly break the sensor, scratch the lens, or both. Just because a lens fits a camera, it doesn't mean it can be actually mounted on it!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|3.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|LURCH&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.0mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV0420&lt;br /&gt;
|YES (B/W only)&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|2.3mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|CS-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|08-gm123142&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Bicocca ([[User:Domenicogsorrenti | Domenico G. Sorrenti]] da 19/11/12)&lt;br /&gt;
|rawseeds&lt;br /&gt;
|datasheet[[http://www.goyooptical.com/products/cctv/manual/GM12314S.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|4.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.8mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|M0518&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|http://www.computar.com/cctvprod/computar/mono/048.html&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (?)&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR26014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|4&lt;br /&gt;
|Lambrate&lt;br /&gt;
|2 nell'armadio + 2 scatole vuote&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR38014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8.5mm&lt;br /&gt;
|f1.3&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|(old model)&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|1 Lambrate + ? DEI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR31214MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|15mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV1520&lt;br /&gt;
|YES&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|6-15mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|12.5-75mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===M12 lenses===&lt;br /&gt;
We also use M12 lenses. These lenses are very simple, with no iris, and very small. Their mounting system is an M12x0.5 metric screw thread. They are commonly used for webcams, and usually do not provide the top optical quality.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|2.1mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2042&lt;br /&gt;
|NO&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
1 e' a bovisa nelle mani di marcello&lt;br /&gt;
&lt;br /&gt;
1 e' a lambrate su un giano riusato come robowii&lt;br /&gt;
&lt;br /&gt;
1 e' a bovisa sulla frontale del triskar recam&lt;br /&gt;
&lt;br /&gt;
1 e' in mano a martino per fare una frontale =&amp;gt; 06.05.09 E' in bovisa montata sul triskar #3&lt;br /&gt;
&lt;br /&gt;
1 l'ha Davide Migliore per acquisizioni monoslam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di rabbiati&lt;br /&gt;
&lt;br /&gt;
Domenicogsorrenti 04.05.09&lt;br /&gt;
|MRT midsize, robowii, monoslam&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm, no IR filter&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2046&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2043&lt;br /&gt;
|NO&lt;br /&gt;
|3&lt;br /&gt;
|Bovisa (1/3), Lambrate (2/3)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2044&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frame grabbers==&lt;br /&gt;
As previously said, a '''frame grabber''' is an electronic board that connects to one or more cameras, and converts the signals from the cameras into a data stream that can be elaborated by a computer. They are usually designed as expansion boards to be fitted into the computer case. Frame grabbers are necessary for ''analogue cameras'' (as they include the analogue/digital converters) or for CameraLink digital cameras (in this case the frame grabber is essentially a high speed dedicated digital interface). Other kinds of digital cameras don't need a frame grabber: this is one of the main advantages of digital cameras over analogue ones in machine vision applications, where the processing is almost always performed by computers.&lt;br /&gt;
In the AIRLab two models of frame grabber are available:&lt;br /&gt;
*a digital frame grabber from Euresys, model Expert 2, having two CameraLink inputs (http://www.euresys.com/Products/grablink/GrablinkSeries.asp). ''Notes: needs a PCI-X slot; one of the inputs is not working due to a fault.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two single-channel analogue frame grabbers from Matrox, models Meteor and Meteor Pro (http://www.matrox.com/imaging/support/old_products/home.cfm).&lt;br /&gt;
All the frame grabbers (except the one on the MO.RO.1) are currently in AIRLab/DEI. If you move one of them, please '''write it down here'''... and do it NOW!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mirrors==&lt;br /&gt;
Much work has been done and is being done at the AIRLab on the topic of '''omnidirectional (machine) vision''' (sometimes referred to as ''omnivision''). Omnidirectional vision systems use special hardware to overcome the limitations of conventional vision systems in terms of field of view. The approach to this problem that we generally adopt is the use of conventional cameras in association with convex '''mirrors''', i.e. the capturing of the image reflected by a suitably-shaped mirror with a camera. The possibility of designing mirrors with specific geometric properties gives a very useful means to control the geometric behaviour of the whole camera+mirror system.&lt;br /&gt;
&lt;br /&gt;
TODO for someone who knows better ;-) : mirror list&lt;br /&gt;
&lt;br /&gt;
==Cable==&lt;br /&gt;
The complete list of cable for camera connection and/or power is under construction. You can partecipate listing below which cables are you using...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!length&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|Bicocca (refer to Domenico G. Sorrenti, 2009-11-11)&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|on LURCH wheelchair&lt;br /&gt;
|LURCH&lt;br /&gt;
|&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15630</id>
		<title>Cameras, lenses and mirrors</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15630"/>
				<updated>2012-11-19T16:37:15Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IMPORTANT NOTES==&lt;br /&gt;
'''Never touch the sensor element (CCD or CMOS) of a camera with anything!''' It can very easily be scratched.&lt;br /&gt;
&lt;br /&gt;
'''Never touch the glass elements of a lens with your hands!''' The oil from human skin will cause damage.&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
In the AIRLab you can find different kind of cameras. These are the main groups:&lt;br /&gt;
*'''Analogue cameras'''. Video output is given as an electrical signal, which needs analogue-to-digital conversion to be processed by a computer; this is done by a specific card called ''frame grabber'' or ''video capture card'' (the latter tend to be the lowest-performance items; see [[Cameras, lenses and mirrors#Frame grabbers]] for details). Analogue video is outdated for computer vision and robotics applications, due to its cost, low performance and complexity; nowadays digital camera systems (such as all the ones listed below) are always preferred.&lt;br /&gt;
*'''USB cameras'''. Usually very cheap, they are suitable for low-performance applications (i.e. those where low frame rate is needed and low image quality can be accepted). Their main advantage (along with cost) is the fact that every modern computer has USB ports. The fact that the USB standard includes 5V DC power supply lines helps simplifying camera design and use.&lt;br /&gt;
*'''FireWire cameras'''. The FireWire (or IEEE1394) bus is generally used for low-end industrial cameras, i.e. devices with technical characteristics much superior to those typical of USB cameras but low-performance according to typical machine vision standards. Industrial cameras usually give to the user a much wider control over the acquisition parameters compared to consumer cameras, and therefore they are usually preferred in robotics; their downside is the higher cost. There are different versions of IEE1394 link (see http://en.wikipedia.org/wiki/Firewire for details), with different bitrates, starting from the 400Mbit/s FireWire 400. Generally they are all considered superior to USB 2.0, even if theoretical bandwidth is lower for FireWire 400. Firewire ports can include power supply lines, but some interfaces (and in particular those on portable computers) omit them. Although the use of FireWire interfaces has expanded in recent years, they are not yet considered a standard feature for motherboards.&lt;br /&gt;
*'''GigE Vision cameras'''. GigE Vision (or Gigabit Ethernet Vision) is a rather new connection standard for machine vision, based upon the established Ethernet protocol in its Gigabit (i.e. 1000Mbps) version. It is very interesting, as complex multiple-camera systems can be easily built using existing (Gigabit) Ethernet hardware, such as cables and switches. Vision data is acquired simply through a generic Ethernet port, commonly found on motherboards or easily added. However, 100Mbps (or ''fast Ethernet'') ports are not guaranteed to work and can sustain only modest video streams; on the other hand, 1000Mbps ports are now standard on motherboards, so this will not be a problem anymore in a few years. It seems that GigE Vision is becoming the most common interface for low- to medium-performance industrial cameras.&lt;br /&gt;
*'''CameraLink cameras'''. Cameralink is a high-speed interface expressly developed for high-performance machine vision applications. It is a point-to-point link, i.e. a CameraLink connection is used to connect a single camera to a digital acquisition card (''frame grabber''). Its diffusion is limited to applications where extreme frame rates ''and'' resolutions are needed, because CameraLink gear is very expensive.&lt;br /&gt;
*'''ST Camera boards'''. Cameras with cell phone sensor and ARM processor for onboard computation.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the cameras available in the AIRLab. (To be precise, it is a list of the cameras that are modern enough to be useful.) For each of them the main specifications (and a link to the full specifications) are given. Details on the different types of lens mount are given below in [[Cameras, lenses and mirrors#Lenses]]. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it.&lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are taking it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of Cameras==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!resolution&lt;br /&gt;
!B/W, color&lt;br /&gt;
!max. frame rate&lt;br /&gt;
!sensor size&lt;br /&gt;
!interface&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!lens mount&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications and/or manuals&lt;br /&gt;
|-&lt;br /&gt;
|1628x1236&lt;br /&gt;
|B/W&lt;br /&gt;
|24fps&lt;br /&gt;
|1/1.8&amp;quot;&lt;br /&gt;
|CameraLink&lt;br /&gt;
|Hitachi&lt;br /&gt;
|KP-F200CL&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|[[media:KP-F200-Op_Manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|752x480&lt;br /&gt;
|color&lt;br /&gt;
|70fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC750C&lt;br /&gt;
|CS-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (1/3), [[User:SimoneTognetti| Simone Tognetti]](from 19/05/2009, dal 14/12/2009 sono impiegate per esperimenti Affective nell'Airlab del DEI)(2/3)&lt;br /&gt;
|Driving companions (2/3)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|659x493&lt;br /&gt;
|color&lt;br /&gt;
|90fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC650C&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|1024x768&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC1020C&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate (1/2) &amp;lt;br&amp;gt;&lt;br /&gt;
in prestito a [[User:Domenicogsorrenti | Domenico G. Sorrenti]]  per demo Monza 19/11/12&lt;br /&gt;
|RAWSEEDS (1/2)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|CCIR (625 lines)&lt;br /&gt;
|B/W&lt;br /&gt;
|CCIR (50fps, interlaced)&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|analogue&lt;br /&gt;
|Sony&lt;br /&gt;
|XC-ST70CE&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|DEI (2/2)&lt;br /&gt;
|&lt;br /&gt;
|[[media:XCST70E_manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i 400 industrial&lt;br /&gt;
|C-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (3/3)&lt;br /&gt;
|RAWSEEDS (3/3)&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_400_Industrial.htm&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i board camera&lt;br /&gt;
|proprietary&lt;br /&gt;
|8&lt;br /&gt;
|Lambrate (3/8), Bovisa (2/8), [[User:PaoloCalloni]] (1/8), [[User:DavideMigliore]] (1/8), [[User:CristianoAlessandro]] (1/8),&lt;br /&gt;
&lt;br /&gt;
presa 1 a fine febbraio10 con lente wide (quella di riserva di robocom), montaggio &amp;quot;a la rizzi&amp;quot; con lastrine di plexiglass e pezzo di profilato item [[User:Domenicogsorrenti]] (1/8)&lt;br /&gt;
|RAWSEEDS (2/8), MRT (?/8)&lt;br /&gt;
queste sono quelle &amp;quot;nuove&amp;quot;? se si una e' su rabbiati, portiere di mrt, sin da cuvio, e' nella testa omnidir Domenicogsorrenti 21.04.09&lt;br /&gt;
&lt;br /&gt;
1 nuova e' la frontale di recam&lt;br /&gt;
&lt;br /&gt;
1 nuova sulla testa omnidir di ridan&lt;br /&gt;
&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i digital camera&lt;br /&gt;
|fixed optics (4.3mm, f2.0)&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
1 e' sulla testa omnidir di rigo&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di recam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-03 (armadio domenico@unimib)&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-04 (armadio domenico@unimib)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_DC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480 dual sensor, 9cm baseline&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|STOC stereo-on-a-chip stereo camera&lt;br /&gt;
|C-mount, fitted with two 3.5mm, f1.6, 1/2&amp;quot; lenses&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate =&amp;gt; li lin office =&amp;gt; Domenicogsorrenti 13.01.09 =&amp;gt; giulio fontana 23.01.09&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/stoc.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|60fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|DCSG (associated with STOC)&lt;br /&gt;
|C-mount, fitted with one 3.5mm, f1.6, 1/2&amp;quot; lens&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/dcsg.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST1-Cam + ST2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|2&lt;br /&gt;
|ST1-Cam (STLCam (ST LEGO Camera)) (with Anil until 15.10.2010)[[User:AnilKoyuncu| Anil Koyuncu]], ST2-Cam [[User:LorenzoConsolaro | Lorenzo Consolaro]] and [[User:DarioCecchetto | Dario Cecchetto]]   &lt;br /&gt;
|ST1-Cam [[RunBot: a Robogame Robot]]&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm, ‎[[Media:Cam_pin_map.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|RVS2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|AIRLab Lambrate (armadio prosilica) &lt;br /&gt;
|?&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST4-DC (Demo board)&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|[[User:RaffaelePetta|Raffaele Petta]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 FPS&lt;br /&gt;
|?&lt;br /&gt;
|USB 2&lt;br /&gt;
|?&lt;br /&gt;
|Microsoft Kinect&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|[[User:CristianMandelli|Cristian Mandelli]], [[User:DeborahZamponi|Deborah Zamponi]] July/August 2011&lt;br /&gt;
|[[http://airlab.elet.polimi.it/index.php/E-2%3F_-_A_robot_for_exhibitions E2? A robot for exhibitions]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lenses==&lt;br /&gt;
Be aware that sensor dimension (i.e. its diagonal, measured in fractions of an inch) is  ''not'' the same for all cameras. Therefore one of the key specifications for a lens is the maximum sensor dimension supported. If you use a given lens with too big a sensor, the edges of the image will be black as they lie outside the circle of the projected image. Also beware of the strange convention used for sensor diagonals, i.e. a fraction in the form A/B&amp;quot; where A and B are integer ''or non-integer'' numbers. For instance an 1/2&amp;quot; sensor is smaller than an 1/1.8&amp;quot; one.&lt;br /&gt;
The variability of sensor dimensions has another side effect: the same lens has a different angle of view if you change the sensor size. Therefore the same lens can behave as a wide-angle with a large sensor and as a telephoto with a small sensor.&lt;br /&gt;
&lt;br /&gt;
An useful guide to lenses (in Italian or English) can be found at http://www.rapitron.it/guidaob.htm.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the actual lenses available in the AIRLab. For each of them the main specifications (and a link to the maker's or vendor's page for full specifications) are given. A '?' means an unknown parameter: if you know its value or experimentally find out it when using the lens (e.g. the maximum sensor size), please ''update the table'' before the information is lost again! Lenses having 'M12x0.5' in Column 'mount type' are only usable with Unibrain's Fire-i board cameras. A 'YES' in the 'Mpixel' column indicates a so-called ''Megapixel lens'', i.e. a high quality, low-distortion lens designed for high-resolution industrial cameras (typically having large sensors); please note that some of these are specifically designed for B/W (i.e. black and white) cameras. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it. &lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are bringing it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
===C-mount and CS-mount lenses===&lt;br /&gt;
Industrial cameras usually have interchangeable lenses. This allows for the choice of the lens that is more suitable to the considered application. There are two main standards for industrial camera lenses: '''C-mount''' and '''CS-mount'''. Both are screw-type mounts. CS-mount is simply a modified C-mount where the distance between the back of the lens and the sensor element (CCD or CMOS) is shorter: therefore a CS-mount lens can be mounted on a C-mount camera if an ''adapter ring'' (i.e. a distancing cylinder with suitable threads) is placed between them. It is impossible, though, to use a C-mount lens on a CS-mount camera: if you try you will almost certainly break the sensor, scratch the lens, or both. Just because a lens fits a camera, it doesn't mean it can be actually mounted on it!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|3.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|LURCH&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.0mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV0420&lt;br /&gt;
|YES (B/W only)&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|2.3mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|CS-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|08-gm123142&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Bicocca ([[User:Domenicogsorrenti | Domenico G. Sorrenti]] da 19/11/12)&lt;br /&gt;
|rawseeds&lt;br /&gt;
|datasheet[[http://www.goyooptical.com/products/cctv/manual/GM12314S.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|4.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.8mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|M0518&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|http://www.computar.com/cctvprod/computar/mono/048.html&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (?)&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR26014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|4&lt;br /&gt;
|Lambrate&lt;br /&gt;
|2 nell'armadio + 2 scatole vuote&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR38014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8.5mm&lt;br /&gt;
|f1.3&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|(old model)&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|1 Lambrate + ? DEI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR31214MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|15mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV1520&lt;br /&gt;
|YES&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|6-15mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|12.5-75mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===M12 lenses===&lt;br /&gt;
We also use M12 lenses. These lenses are very simple, with no iris, and very small. Their mounting system is an M12x0.5 metric screw thread. They are commonly used for webcams, and usually do not provide the top optical quality.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|2.1mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2042&lt;br /&gt;
|NO&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
1 e' a bovisa nelle mani di marcello&lt;br /&gt;
&lt;br /&gt;
1 e' a lambrate su un giano riusato come robowii&lt;br /&gt;
&lt;br /&gt;
1 e' a bovisa sulla frontale del triskar recam&lt;br /&gt;
&lt;br /&gt;
1 e' in mano a martino per fare una frontale =&amp;gt; 06.05.09 E' in bovisa montata sul triskar #3&lt;br /&gt;
&lt;br /&gt;
1 l'ha Davide Migliore per acquisizioni monoslam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di rabbiati&lt;br /&gt;
&lt;br /&gt;
Domenicogsorrenti 04.05.09&lt;br /&gt;
|MRT midsize, robowii, monoslam&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm, no IR filter&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2046&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2043&lt;br /&gt;
|NO&lt;br /&gt;
|3&lt;br /&gt;
|Bovisa (1/3), Lambrate (2/3)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2044&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frame grabbers==&lt;br /&gt;
As previously said, a '''frame grabber''' is an electronic board that connects to one or more cameras, and converts the signals from the cameras into a data stream that can be elaborated by a computer. They are usually designed as expansion boards to be fitted into the computer case. Frame grabbers are necessary for ''analogue cameras'' (as they include the analogue/digital converters) or for CameraLink digital cameras (in this case the frame grabber is essentially a high speed dedicated digital interface). Other kinds of digital cameras don't need a frame grabber: this is one of the main advantages of digital cameras over analogue ones in machine vision applications, where the processing is almost always performed by computers.&lt;br /&gt;
In the AIRLab two models of frame grabber are available:&lt;br /&gt;
*a digital frame grabber from Euresys, model Expert 2, having two CameraLink inputs (http://www.euresys.com/Products/grablink/GrablinkSeries.asp). ''Notes: needs a PCI-X slot; one of the inputs is not working due to a fault.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two single-channel analogue frame grabbers from Matrox, models Meteor and Meteor Pro (http://www.matrox.com/imaging/support/old_products/home.cfm).&lt;br /&gt;
All the frame grabbers (except the one on the MO.RO.1) are currently in AIRLab/DEI. If you move one of them, please '''write it down here'''... and do it NOW!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mirrors==&lt;br /&gt;
Much work has been done and is being done at the AIRLab on the topic of '''omnidirectional (machine) vision''' (sometimes referred to as ''omnivision''). Omnidirectional vision systems use special hardware to overcome the limitations of conventional vision systems in terms of field of view. The approach to this problem that we generally adopt is the use of conventional cameras in association with convex '''mirrors''', i.e. the capturing of the image reflected by a suitably-shaped mirror with a camera. The possibility of designing mirrors with specific geometric properties gives a very useful means to control the geometric behaviour of the whole camera+mirror system.&lt;br /&gt;
&lt;br /&gt;
TODO for someone who knows better ;-) : mirror list&lt;br /&gt;
&lt;br /&gt;
==Cable==&lt;br /&gt;
The complete list of cable for camera connection and/or power is under construction. You can partecipate listing below which cables are you using...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!length&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|Bicocca (refer to Domenico G. Sorrenti, 2009-11-11)&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|on LURCH wheelchair&lt;br /&gt;
|LURCH&lt;br /&gt;
|&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15629</id>
		<title>Cameras, lenses and mirrors</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15629"/>
				<updated>2012-11-19T16:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IMPORTANT NOTES==&lt;br /&gt;
'''Never touch the sensor element (CCD or CMOS) of a camera with anything!''' It can very easily be scratched.&lt;br /&gt;
&lt;br /&gt;
'''Never touch the glass elements of a lens with your hands!''' The oil from human skin will cause damage.&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
In the AIRLab you can find different kind of cameras. These are the main groups:&lt;br /&gt;
*'''Analogue cameras'''. Video output is given as an electrical signal, which needs analogue-to-digital conversion to be processed by a computer; this is done by a specific card called ''frame grabber'' or ''video capture card'' (the latter tend to be the lowest-performance items; see [[Cameras, lenses and mirrors#Frame grabbers]] for details). Analogue video is outdated for computer vision and robotics applications, due to its cost, low performance and complexity; nowadays digital camera systems (such as all the ones listed below) are always preferred.&lt;br /&gt;
*'''USB cameras'''. Usually very cheap, they are suitable for low-performance applications (i.e. those where low frame rate is needed and low image quality can be accepted). Their main advantage (along with cost) is the fact that every modern computer has USB ports. The fact that the USB standard includes 5V DC power supply lines helps simplifying camera design and use.&lt;br /&gt;
*'''FireWire cameras'''. The FireWire (or IEEE1394) bus is generally used for low-end industrial cameras, i.e. devices with technical characteristics much superior to those typical of USB cameras but low-performance according to typical machine vision standards. Industrial cameras usually give to the user a much wider control over the acquisition parameters compared to consumer cameras, and therefore they are usually preferred in robotics; their downside is the higher cost. There are different versions of IEE1394 link (see http://en.wikipedia.org/wiki/Firewire for details), with different bitrates, starting from the 400Mbit/s FireWire 400. Generally they are all considered superior to USB 2.0, even if theoretical bandwidth is lower for FireWire 400. Firewire ports can include power supply lines, but some interfaces (and in particular those on portable computers) omit them. Although the use of FireWire interfaces has expanded in recent years, they are not yet considered a standard feature for motherboards.&lt;br /&gt;
*'''GigE Vision cameras'''. GigE Vision (or Gigabit Ethernet Vision) is a rather new connection standard for machine vision, based upon the established Ethernet protocol in its Gigabit (i.e. 1000Mbps) version. It is very interesting, as complex multiple-camera systems can be easily built using existing (Gigabit) Ethernet hardware, such as cables and switches. Vision data is acquired simply through a generic Ethernet port, commonly found on motherboards or easily added. However, 100Mbps (or ''fast Ethernet'') ports are not guaranteed to work and can sustain only modest video streams; on the other hand, 1000Mbps ports are now standard on motherboards, so this will not be a problem anymore in a few years. It seems that GigE Vision is becoming the most common interface for low- to medium-performance industrial cameras.&lt;br /&gt;
*'''CameraLink cameras'''. Cameralink is a high-speed interface expressly developed for high-performance machine vision applications. It is a point-to-point link, i.e. a CameraLink connection is used to connect a single camera to a digital acquisition card (''frame grabber''). Its diffusion is limited to applications where extreme frame rates ''and'' resolutions are needed, because CameraLink gear is very expensive.&lt;br /&gt;
*'''ST Camera boards'''. Cameras with cell phone sensor and ARM processor for onboard computation.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the cameras available in the AIRLab. (To be precise, it is a list of the cameras that are modern enough to be useful.) For each of them the main specifications (and a link to the full specifications) are given. Details on the different types of lens mount are given below in [[Cameras, lenses and mirrors#Lenses]]. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it.&lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are taking it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of Cameras==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!resolution&lt;br /&gt;
!B/W, color&lt;br /&gt;
!max. frame rate&lt;br /&gt;
!sensor size&lt;br /&gt;
!interface&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!lens mount&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications and/or manuals&lt;br /&gt;
|-&lt;br /&gt;
|1628x1236&lt;br /&gt;
|B/W&lt;br /&gt;
|24fps&lt;br /&gt;
|1/1.8&amp;quot;&lt;br /&gt;
|CameraLink&lt;br /&gt;
|Hitachi&lt;br /&gt;
|KP-F200CL&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|[[media:KP-F200-Op_Manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|752x480&lt;br /&gt;
|color&lt;br /&gt;
|70fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC750C&lt;br /&gt;
|CS-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (1/3), [[User:SimoneTognetti| Simone Tognetti]](from 19/05/2009, dal 14/12/2009 sono impiegate per esperimenti Affective nell'Airlab del DEI)(2/3)&lt;br /&gt;
|Driving companions (2/3)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|659x493&lt;br /&gt;
|color&lt;br /&gt;
|90fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC650C&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|1024x768&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC1020C&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate (1/2) &amp;lt;br&amp;gt;&lt;br /&gt;
in prestito a [[User:Domenicogsorrenti | Domenico G. Sorrenti]]  per demo Monza 19/11/12&lt;br /&gt;
|RAWSEEDS (1/2)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|CCIR (625 lines)&lt;br /&gt;
|B/W&lt;br /&gt;
|CCIR (50fps, interlaced)&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|analogue&lt;br /&gt;
|Sony&lt;br /&gt;
|XC-ST70CE&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|DEI (2/2)&lt;br /&gt;
|&lt;br /&gt;
|[[media:XCST70E_manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i 400 industrial&lt;br /&gt;
|C-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (3/3)&lt;br /&gt;
|RAWSEEDS (3/3)&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_400_Industrial.htm&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i board camera&lt;br /&gt;
|proprietary&lt;br /&gt;
|8&lt;br /&gt;
|Lambrate (3/8), Bovisa (2/8), [[User:PaoloCalloni]] (1/8), [[User:DavideMigliore]] (1/8), [[User:CristianoAlessandro]] (1/8),&lt;br /&gt;
&lt;br /&gt;
presa 1 a fine febbraio10 con lente wide (quella di riserva di robocom), montaggio &amp;quot;a la rizzi&amp;quot; con lastrine di plexiglass e pezzo di profilato item [[User:Domenicogsorrenti]] (1/8)&lt;br /&gt;
|RAWSEEDS (2/8), MRT (?/8)&lt;br /&gt;
queste sono quelle &amp;quot;nuove&amp;quot;? se si una e' su rabbiati, portiere di mrt, sin da cuvio, e' nella testa omnidir Domenicogsorrenti 21.04.09&lt;br /&gt;
&lt;br /&gt;
1 nuova e' la frontale di recam&lt;br /&gt;
&lt;br /&gt;
1 nuova sulla testa omnidir di ridan&lt;br /&gt;
&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i digital camera&lt;br /&gt;
|fixed optics (4.3mm, f2.0)&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
1 e' sulla testa omnidir di rigo&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di recam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-03 (armadio domenico@unimib)&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-04 (armadio domenico@unimib)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_DC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480 dual sensor, 9cm baseline&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|STOC stereo-on-a-chip stereo camera&lt;br /&gt;
|C-mount, fitted with two 3.5mm, f1.6, 1/2&amp;quot; lenses&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate =&amp;gt; li lin office =&amp;gt; Domenicogsorrenti 13.01.09 =&amp;gt; giulio fontana 23.01.09&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/stoc.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|60fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|DCSG (associated with STOC)&lt;br /&gt;
|C-mount, fitted with one 3.5mm, f1.6, 1/2&amp;quot; lens&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/dcsg.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST1-Cam + ST2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|2&lt;br /&gt;
|ST1-Cam (STLCam (ST LEGO Camera)) (with Anil until 15.10.2010)[[User:AnilKoyuncu| Anil Koyuncu]], ST2-Cam [[User:LorenzoConsolaro | Lorenzo Consolaro]] and [[User:DarioCecchetto | Dario Cecchetto]]   &lt;br /&gt;
|ST1-Cam [[RunBot: a Robogame Robot]]&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm, ‎[[Media:Cam_pin_map.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|RVS2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|AIRLab Lambrate (armadio prosilica) &lt;br /&gt;
|?&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST4-DC (Demo board)&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|[[User:RaffaelePetta|Raffaele Petta]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 FPS&lt;br /&gt;
|?&lt;br /&gt;
|USB 2&lt;br /&gt;
|?&lt;br /&gt;
|Microsoft Kinect&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|[[User:CristianMandelli|Cristian Mandelli]], [[User:DeborahZamponi|Deborah Zamponi]] July/August 2011&lt;br /&gt;
|[[http://airlab.elet.polimi.it/index.php/E-2%3F_-_A_robot_for_exhibitions E2? A robot for exhibitions]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lenses==&lt;br /&gt;
Be aware that sensor dimension (i.e. its diagonal, measured in fractions of an inch) is  ''not'' the same for all cameras. Therefore one of the key specifications for a lens is the maximum sensor dimension supported. If you use a given lens with too big a sensor, the edges of the image will be black as they lie outside the circle of the projected image. Also beware of the strange convention used for sensor diagonals, i.e. a fraction in the form A/B&amp;quot; where A and B are integer ''or non-integer'' numbers. For instance an 1/2&amp;quot; sensor is smaller than an 1/1.8&amp;quot; one.&lt;br /&gt;
The variability of sensor dimensions has another side effect: the same lens has a different angle of view if you change the sensor size. Therefore the same lens can behave as a wide-angle with a large sensor and as a telephoto with a small sensor.&lt;br /&gt;
&lt;br /&gt;
An useful guide to lenses (in Italian or English) can be found at http://www.rapitron.it/guidaob.htm.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the actual lenses available in the AIRLab. For each of them the main specifications (and a link to the maker's or vendor's page for full specifications) are given. A '?' means an unknown parameter: if you know its value or experimentally find out it when using the lens (e.g. the maximum sensor size), please ''update the table'' before the information is lost again! Lenses having 'M12x0.5' in Column 'mount type' are only usable with Unibrain's Fire-i board cameras. A 'YES' in the 'Mpixel' column indicates a so-called ''Megapixel lens'', i.e. a high quality, low-distortion lens designed for high-resolution industrial cameras (typically having large sensors); please note that some of these are specifically designed for B/W (i.e. black and white) cameras. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it. &lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are bringing it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
===C-mount and CS-mount lenses===&lt;br /&gt;
Industrial cameras usually have interchangeable lenses. This allows for the choice of the lens that is more suitable to the considered application. There are two main standards for industrial camera lenses: '''C-mount''' and '''CS-mount'''. Both are screw-type mounts. CS-mount is simply a modified C-mount where the distance between the back of the lens and the sensor element (CCD or CMOS) is shorter: therefore a CS-mount lens can be mounted on a C-mount camera if an ''adapter ring'' (i.e. a distancing cylinder with suitable threads) is placed between them. It is impossible, though, to use a C-mount lens on a CS-mount camera: if you try you will almost certainly break the sensor, scratch the lens, or both. Just because a lens fits a camera, it doesn't mean it can be actually mounted on it!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|3.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|LURCH&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.0mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV0420&lt;br /&gt;
|YES (B/W only)&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.8mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|M0518&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|http://www.computar.com/cctvprod/computar/mono/048.html&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (?)&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR26014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|4&lt;br /&gt;
|Lambrate&lt;br /&gt;
|2 nell'armadio + 2 scatole vuote&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR38014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8.5mm&lt;br /&gt;
|f1.3&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|(old model)&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|1 Lambrate + ? DEI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR31214MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|15mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV1520&lt;br /&gt;
|YES&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|6-15mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|12.5-75mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===M12 lenses===&lt;br /&gt;
We also use M12 lenses. These lenses are very simple, with no iris, and very small. Their mounting system is an M12x0.5 metric screw thread. They are commonly used for webcams, and usually do not provide the top optical quality.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|2.1mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2042&lt;br /&gt;
|NO&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
1 e' a bovisa nelle mani di marcello&lt;br /&gt;
&lt;br /&gt;
1 e' a lambrate su un giano riusato come robowii&lt;br /&gt;
&lt;br /&gt;
1 e' a bovisa sulla frontale del triskar recam&lt;br /&gt;
&lt;br /&gt;
1 e' in mano a martino per fare una frontale =&amp;gt; 06.05.09 E' in bovisa montata sul triskar #3&lt;br /&gt;
&lt;br /&gt;
1 l'ha Davide Migliore per acquisizioni monoslam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di rabbiati&lt;br /&gt;
&lt;br /&gt;
Domenicogsorrenti 04.05.09&lt;br /&gt;
|MRT midsize, robowii, monoslam&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm, no IR filter&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2046&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2043&lt;br /&gt;
|NO&lt;br /&gt;
|3&lt;br /&gt;
|Bovisa (1/3), Lambrate (2/3)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2044&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frame grabbers==&lt;br /&gt;
As previously said, a '''frame grabber''' is an electronic board that connects to one or more cameras, and converts the signals from the cameras into a data stream that can be elaborated by a computer. They are usually designed as expansion boards to be fitted into the computer case. Frame grabbers are necessary for ''analogue cameras'' (as they include the analogue/digital converters) or for CameraLink digital cameras (in this case the frame grabber is essentially a high speed dedicated digital interface). Other kinds of digital cameras don't need a frame grabber: this is one of the main advantages of digital cameras over analogue ones in machine vision applications, where the processing is almost always performed by computers.&lt;br /&gt;
In the AIRLab two models of frame grabber are available:&lt;br /&gt;
*a digital frame grabber from Euresys, model Expert 2, having two CameraLink inputs (http://www.euresys.com/Products/grablink/GrablinkSeries.asp). ''Notes: needs a PCI-X slot; one of the inputs is not working due to a fault.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two single-channel analogue frame grabbers from Matrox, models Meteor and Meteor Pro (http://www.matrox.com/imaging/support/old_products/home.cfm).&lt;br /&gt;
All the frame grabbers (except the one on the MO.RO.1) are currently in AIRLab/DEI. If you move one of them, please '''write it down here'''... and do it NOW!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mirrors==&lt;br /&gt;
Much work has been done and is being done at the AIRLab on the topic of '''omnidirectional (machine) vision''' (sometimes referred to as ''omnivision''). Omnidirectional vision systems use special hardware to overcome the limitations of conventional vision systems in terms of field of view. The approach to this problem that we generally adopt is the use of conventional cameras in association with convex '''mirrors''', i.e. the capturing of the image reflected by a suitably-shaped mirror with a camera. The possibility of designing mirrors with specific geometric properties gives a very useful means to control the geometric behaviour of the whole camera+mirror system.&lt;br /&gt;
&lt;br /&gt;
TODO for someone who knows better ;-) : mirror list&lt;br /&gt;
&lt;br /&gt;
==Cable==&lt;br /&gt;
The complete list of cable for camera connection and/or power is under construction. You can partecipate listing below which cables are you using...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!length&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|Bicocca (refer to Domenico G. Sorrenti, 2009-11-11)&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|on LURCH wheelchair&lt;br /&gt;
|LURCH&lt;br /&gt;
|&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15628</id>
		<title>Cameras, lenses and mirrors</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Cameras,_lenses_and_mirrors&amp;diff=15628"/>
				<updated>2012-11-19T16:20:34Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IMPORTANT NOTES==&lt;br /&gt;
'''Never touch the sensor element (CCD or CMOS) of a camera with anything!''' It can very easily be scratched.&lt;br /&gt;
&lt;br /&gt;
'''Never touch the glass elements of a lens with your hands!''' The oil from human skin will cause damage.&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
In the AIRLab you can find different kind of cameras. These are the main groups:&lt;br /&gt;
*'''Analogue cameras'''. Video output is given as an electrical signal, which needs analogue-to-digital conversion to be processed by a computer; this is done by a specific card called ''frame grabber'' or ''video capture card'' (the latter tend to be the lowest-performance items; see [[Cameras, lenses and mirrors#Frame grabbers]] for details). Analogue video is outdated for computer vision and robotics applications, due to its cost, low performance and complexity; nowadays digital camera systems (such as all the ones listed below) are always preferred.&lt;br /&gt;
*'''USB cameras'''. Usually very cheap, they are suitable for low-performance applications (i.e. those where low frame rate is needed and low image quality can be accepted). Their main advantage (along with cost) is the fact that every modern computer has USB ports. The fact that the USB standard includes 5V DC power supply lines helps simplifying camera design and use.&lt;br /&gt;
*'''FireWire cameras'''. The FireWire (or IEEE1394) bus is generally used for low-end industrial cameras, i.e. devices with technical characteristics much superior to those typical of USB cameras but low-performance according to typical machine vision standards. Industrial cameras usually give to the user a much wider control over the acquisition parameters compared to consumer cameras, and therefore they are usually preferred in robotics; their downside is the higher cost. There are different versions of IEE1394 link (see http://en.wikipedia.org/wiki/Firewire for details), with different bitrates, starting from the 400Mbit/s FireWire 400. Generally they are all considered superior to USB 2.0, even if theoretical bandwidth is lower for FireWire 400. Firewire ports can include power supply lines, but some interfaces (and in particular those on portable computers) omit them. Although the use of FireWire interfaces has expanded in recent years, they are not yet considered a standard feature for motherboards.&lt;br /&gt;
*'''GigE Vision cameras'''. GigE Vision (or Gigabit Ethernet Vision) is a rather new connection standard for machine vision, based upon the established Ethernet protocol in its Gigabit (i.e. 1000Mbps) version. It is very interesting, as complex multiple-camera systems can be easily built using existing (Gigabit) Ethernet hardware, such as cables and switches. Vision data is acquired simply through a generic Ethernet port, commonly found on motherboards or easily added. However, 100Mbps (or ''fast Ethernet'') ports are not guaranteed to work and can sustain only modest video streams; on the other hand, 1000Mbps ports are now standard on motherboards, so this will not be a problem anymore in a few years. It seems that GigE Vision is becoming the most common interface for low- to medium-performance industrial cameras.&lt;br /&gt;
*'''CameraLink cameras'''. Cameralink is a high-speed interface expressly developed for high-performance machine vision applications. It is a point-to-point link, i.e. a CameraLink connection is used to connect a single camera to a digital acquisition card (''frame grabber''). Its diffusion is limited to applications where extreme frame rates ''and'' resolutions are needed, because CameraLink gear is very expensive.&lt;br /&gt;
*'''ST Camera boards'''. Cameras with cell phone sensor and ARM processor for onboard computation.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the cameras available in the AIRLab. (To be precise, it is a list of the cameras that are modern enough to be useful.) For each of them the main specifications (and a link to the full specifications) are given. Details on the different types of lens mount are given below in [[Cameras, lenses and mirrors#Lenses]]. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it.&lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are taking it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of Cameras==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!resolution&lt;br /&gt;
!B/W, color&lt;br /&gt;
!max. frame rate&lt;br /&gt;
!sensor size&lt;br /&gt;
!interface&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!lens mount&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications and/or manuals&lt;br /&gt;
|-&lt;br /&gt;
|1628x1236&lt;br /&gt;
|B/W&lt;br /&gt;
|24fps&lt;br /&gt;
|1/1.8&amp;quot;&lt;br /&gt;
|CameraLink&lt;br /&gt;
|Hitachi&lt;br /&gt;
|KP-F200CL&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|[[media:KP-F200-Op_Manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|752x480&lt;br /&gt;
|color&lt;br /&gt;
|70fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC750C&lt;br /&gt;
|C-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (1/3), [[User:SimoneTognetti| Simone Tognetti]](from 19/05/2009, dal 14/12/2009 sono impiegate per esperimenti Affective nell'Airlab del DEI)(2/3)&lt;br /&gt;
|Driving companions (2/3)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|659x493&lt;br /&gt;
|color&lt;br /&gt;
|90fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC650C&lt;br /&gt;
|C-mount&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|1024x768&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|GigE&lt;br /&gt;
|Prosilica&lt;br /&gt;
|GC1020C&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate (1/2) &amp;lt;br&amp;gt;&lt;br /&gt;
in prestito a [[User:Domenicogsorrenti | Domenico G. Sorrenti]]  per demo Monza 19/11/12&lt;br /&gt;
|RAWSEEDS (1/2)&lt;br /&gt;
|http://www.prosilica.com/products/gc_series.html&lt;br /&gt;
|-&lt;br /&gt;
|CCIR (625 lines)&lt;br /&gt;
|B/W&lt;br /&gt;
|CCIR (50fps, interlaced)&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|analogue&lt;br /&gt;
|Sony&lt;br /&gt;
|XC-ST70CE&lt;br /&gt;
|C-mount&lt;br /&gt;
|2&lt;br /&gt;
|DEI (2/2)&lt;br /&gt;
|&lt;br /&gt;
|[[media:XCST70E_manual.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i 400 industrial&lt;br /&gt;
|C-mount&lt;br /&gt;
|3&lt;br /&gt;
|Lambrate (3/3)&lt;br /&gt;
|RAWSEEDS (3/3)&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_400_Industrial.htm&lt;br /&gt;
|-&lt;br /&gt;
|659x494&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i board camera&lt;br /&gt;
|proprietary&lt;br /&gt;
|8&lt;br /&gt;
|Lambrate (3/8), Bovisa (2/8), [[User:PaoloCalloni]] (1/8), [[User:DavideMigliore]] (1/8), [[User:CristianoAlessandro]] (1/8),&lt;br /&gt;
&lt;br /&gt;
presa 1 a fine febbraio10 con lente wide (quella di riserva di robocom), montaggio &amp;quot;a la rizzi&amp;quot; con lastrine di plexiglass e pezzo di profilato item [[User:Domenicogsorrenti]] (1/8)&lt;br /&gt;
|RAWSEEDS (2/8), MRT (?/8)&lt;br /&gt;
queste sono quelle &amp;quot;nuove&amp;quot;? se si una e' su rabbiati, portiere di mrt, sin da cuvio, e' nella testa omnidir Domenicogsorrenti 21.04.09&lt;br /&gt;
&lt;br /&gt;
1 nuova e' la frontale di recam&lt;br /&gt;
&lt;br /&gt;
1 nuova sulla testa omnidir di ridan&lt;br /&gt;
&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Unibrain&lt;br /&gt;
|Fire-i digital camera&lt;br /&gt;
|fixed optics (4.3mm, f2.0)&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
1 e' sulla testa omnidir di rigo&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di recam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-03 (armadio domenico@unimib)&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir mrt05-04 (armadio domenico@unimib)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_DC.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480 dual sensor, 9cm baseline&lt;br /&gt;
|color&lt;br /&gt;
|30fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|STOC stereo-on-a-chip stereo camera&lt;br /&gt;
|C-mount, fitted with two 3.5mm, f1.6, 1/2&amp;quot; lenses&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate =&amp;gt; li lin office =&amp;gt; Domenicogsorrenti 13.01.09 =&amp;gt; giulio fontana 23.01.09&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/stoc.htm&lt;br /&gt;
|-&lt;br /&gt;
|640x480&lt;br /&gt;
|color&lt;br /&gt;
|60fps&lt;br /&gt;
|1/3&amp;quot;&lt;br /&gt;
|FireWire 400&lt;br /&gt;
|Videre Design&lt;br /&gt;
|DCSG (associated with STOC)&lt;br /&gt;
|C-mount, fitted with one 3.5mm, f1.6, 1/2&amp;quot; lens&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.videredesign.com/vision/dcsg.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST1-Cam + ST2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|2&lt;br /&gt;
|ST1-Cam (STLCam (ST LEGO Camera)) (with Anil until 15.10.2010)[[User:AnilKoyuncu| Anil Koyuncu]], ST2-Cam [[User:LorenzoConsolaro | Lorenzo Consolaro]] and [[User:DarioCecchetto | Dario Cecchetto]]   &lt;br /&gt;
|ST1-Cam [[RunBot: a Robogame Robot]]&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm, ‎[[Media:Cam_pin_map.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 fps&lt;br /&gt;
|1/3.8 inch optical format&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|RVS2-Cam&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|AIRLab Lambrate (armadio prosilica) &lt;br /&gt;
|?&lt;br /&gt;
| [[Media:Cameradatasheet.pdf]],‎[[Media:Rvs-v1-0.pdf‎]], [[Media:RVS_Datasheet_v2.1.pdf‎]] ,http://www.danielecaltabiano.com/wwme/ST-SW/st-sw.htm&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST4-DC (Demo board)&lt;br /&gt;
|integrated&lt;br /&gt;
|1&lt;br /&gt;
|[[User:RaffaelePetta|Raffaele Petta]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ST Microelectronics&lt;br /&gt;
|ST5-CamMic + ST6-CamMic&lt;br /&gt;
|integrated with microphone&lt;br /&gt;
|2&lt;br /&gt;
|ST5-CamMic [[User:AndreaBonarini| Andrea Bonarini]], ST6-CamMic AIRLab per E-2?  &lt;br /&gt;
|ST6-CamMic [[E-2?]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|color&lt;br /&gt;
|30 FPS&lt;br /&gt;
|?&lt;br /&gt;
|USB 2&lt;br /&gt;
|?&lt;br /&gt;
|Microsoft Kinect&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|[[User:CristianMandelli|Cristian Mandelli]], [[User:DeborahZamponi|Deborah Zamponi]] July/August 2011&lt;br /&gt;
|[[http://airlab.elet.polimi.it/index.php/E-2%3F_-_A_robot_for_exhibitions E2? A robot for exhibitions]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lenses==&lt;br /&gt;
Be aware that sensor dimension (i.e. its diagonal, measured in fractions of an inch) is  ''not'' the same for all cameras. Therefore one of the key specifications for a lens is the maximum sensor dimension supported. If you use a given lens with too big a sensor, the edges of the image will be black as they lie outside the circle of the projected image. Also beware of the strange convention used for sensor diagonals, i.e. a fraction in the form A/B&amp;quot; where A and B are integer ''or non-integer'' numbers. For instance an 1/2&amp;quot; sensor is smaller than an 1/1.8&amp;quot; one.&lt;br /&gt;
The variability of sensor dimensions has another side effect: the same lens has a different angle of view if you change the sensor size. Therefore the same lens can behave as a wide-angle with a large sensor and as a telephoto with a small sensor.&lt;br /&gt;
&lt;br /&gt;
An useful guide to lenses (in Italian or English) can be found at http://www.rapitron.it/guidaob.htm.&lt;br /&gt;
&lt;br /&gt;
The following is a list of the actual lenses available in the AIRLab. For each of them the main specifications (and a link to the maker's or vendor's page for full specifications) are given. A '?' means an unknown parameter: if you know its value or experimentally find out it when using the lens (e.g. the maximum sensor size), please ''update the table'' before the information is lost again! Lenses having 'M12x0.5' in Column 'mount type' are only usable with Unibrain's Fire-i board cameras. A 'YES' in the 'Mpixel' column indicates a so-called ''Megapixel lens'', i.e. a high quality, low-distortion lens designed for high-resolution industrial cameras (typically having large sensors); please note that some of these are specifically designed for B/W (i.e. black and white) cameras. The 'how many?' field tells if multiple, identical items are available. Finally, the 'where?' field tells you in which of the AIRLab sites (listed in [[The Labs]]) you can find an item, and the 'project' field is used to specify which project (if any) is using it. &lt;br /&gt;
&lt;br /&gt;
Ah, one last thing. People like to actually ''find'' things when they look for them, so '''don't forget to update the table when you move something away from its current location'''. If you don't know where you are bringing it, just put your name in the table.&lt;br /&gt;
&lt;br /&gt;
===C-mount and CS-mount lenses===&lt;br /&gt;
Industrial cameras usually have interchangeable lenses. This allows for the choice of the lens that is more suitable to the considered application. There are two main standards for industrial camera lenses: '''C-mount''' and '''CS-mount'''. Both are screw-type mounts. CS-mount is simply a modified C-mount where the distance between the back of the lens and the sensor element (CCD or CMOS) is shorter: therefore a CS-mount lens can be mounted on a C-mount camera if an ''adapter ring'' (i.e. a distancing cylinder with suitable threads) is placed between them. It is impossible, though, to use a C-mount lens on a CS-mount camera: if you try you will almost certainly break the sensor, scratch the lens, or both. Just because a lens fits a camera, it doesn't mean it can be actually mounted on it!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|3.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|LURCH&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.0mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV0420&lt;br /&gt;
|YES (B/W only)&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.5mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|4.8mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|M0518&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|http://www.computar.com/cctvprod/computar/mono/048.html&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (?)&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|6mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|1/2&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR26014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|4&lt;br /&gt;
|Lambrate&lt;br /&gt;
|2 nell'armadio + 2 scatole vuote&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR38014MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|8.5mm&lt;br /&gt;
|f1.3&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Computar&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|(old model)&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|1 Lambrate + ? DEI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Goyo&lt;br /&gt;
|GMHR31214MCN&lt;br /&gt;
|YES&lt;br /&gt;
|2&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.goyooptical.com/products/industrial/hrmegapixel.html&lt;br /&gt;
|-&lt;br /&gt;
|15mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|2/3&amp;quot;&lt;br /&gt;
|C-mount&lt;br /&gt;
|Microtron&lt;br /&gt;
|FV1520&lt;br /&gt;
|YES&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|http://www.rapitron.it/obmegpxman1.htm&lt;br /&gt;
|-&lt;br /&gt;
|6-15mm&lt;br /&gt;
|f1.4&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|12.5-75mm&lt;br /&gt;
|f1.8&lt;br /&gt;
|?&lt;br /&gt;
|C-mount&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|DEI&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===M12 lenses===&lt;br /&gt;
We also use M12 lenses. These lenses are very simple, with no iris, and very small. Their mounting system is an M12x0.5 metric screw thread. They are commonly used for webcams, and usually do not provide the top optical quality.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!focal length&lt;br /&gt;
!max. aperture&lt;br /&gt;
!max. sensor size&lt;br /&gt;
!mount type&lt;br /&gt;
!maker&lt;br /&gt;
!model&lt;br /&gt;
!Mpixel&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
!link to full specifications&lt;br /&gt;
|-&lt;br /&gt;
|2.1mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2042&lt;br /&gt;
|NO&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
1 e' a bovisa nelle mani di marcello&lt;br /&gt;
&lt;br /&gt;
1 e' a lambrate su un giano riusato come robowii&lt;br /&gt;
&lt;br /&gt;
1 e' a bovisa sulla frontale del triskar recam&lt;br /&gt;
&lt;br /&gt;
1 e' in mano a martino per fare una frontale =&amp;gt; 06.05.09 E' in bovisa montata sul triskar #3&lt;br /&gt;
&lt;br /&gt;
1 l'ha Davide Migliore per acquisizioni monoslam&lt;br /&gt;
&lt;br /&gt;
1 e' sulla testa omnidir di rabbiati&lt;br /&gt;
&lt;br /&gt;
Domenicogsorrenti 04.05.09&lt;br /&gt;
|MRT midsize, robowii, monoslam&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm, no IR filter&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2046&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|4.3mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2043&lt;br /&gt;
|NO&lt;br /&gt;
|3&lt;br /&gt;
|Bovisa (1/3), Lambrate (2/3)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|-&lt;br /&gt;
|8mm&lt;br /&gt;
|f2.0&lt;br /&gt;
|1/4&amp;quot;&lt;br /&gt;
|M12x0.5&lt;br /&gt;
|Unibrain&lt;br /&gt;
|2044&lt;br /&gt;
|NO&lt;br /&gt;
|1&lt;br /&gt;
|Lambrate (1/1)&lt;br /&gt;
|&lt;br /&gt;
|http://www.unibrain.com/Products/VisionImg/Fire_i_BC.htm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frame grabbers==&lt;br /&gt;
As previously said, a '''frame grabber''' is an electronic board that connects to one or more cameras, and converts the signals from the cameras into a data stream that can be elaborated by a computer. They are usually designed as expansion boards to be fitted into the computer case. Frame grabbers are necessary for ''analogue cameras'' (as they include the analogue/digital converters) or for CameraLink digital cameras (in this case the frame grabber is essentially a high speed dedicated digital interface). Other kinds of digital cameras don't need a frame grabber: this is one of the main advantages of digital cameras over analogue ones in machine vision applications, where the processing is almost always performed by computers.&lt;br /&gt;
In the AIRLab two models of frame grabber are available:&lt;br /&gt;
*a digital frame grabber from Euresys, model Expert 2, having two CameraLink inputs (http://www.euresys.com/Products/grablink/GrablinkSeries.asp). ''Notes: needs a PCI-X slot; one of the inputs is not working due to a fault.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two multichannel analogue frame grabbers from Matrox, model Meteor II/Multi-Channel, having three analogue inputs that can be combined into a single three-channel RGB analogue input (http://www.matrox.com/imaging/support/old_products/home.cfm). ''Note: one item is permanently mounted on the MO.RO.1 robot: see [[The MO.RO. family]] for details.''&lt;br /&gt;
*two single-channel analogue frame grabbers from Matrox, models Meteor and Meteor Pro (http://www.matrox.com/imaging/support/old_products/home.cfm).&lt;br /&gt;
All the frame grabbers (except the one on the MO.RO.1) are currently in AIRLab/DEI. If you move one of them, please '''write it down here'''... and do it NOW!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mirrors==&lt;br /&gt;
Much work has been done and is being done at the AIRLab on the topic of '''omnidirectional (machine) vision''' (sometimes referred to as ''omnivision''). Omnidirectional vision systems use special hardware to overcome the limitations of conventional vision systems in terms of field of view. The approach to this problem that we generally adopt is the use of conventional cameras in association with convex '''mirrors''', i.e. the capturing of the image reflected by a suitably-shaped mirror with a camera. The possibility of designing mirrors with specific geometric properties gives a very useful means to control the geometric behaviour of the whole camera+mirror system.&lt;br /&gt;
&lt;br /&gt;
TODO for someone who knows better ;-) : mirror list&lt;br /&gt;
&lt;br /&gt;
==Cable==&lt;br /&gt;
The complete list of cable for camera connection and/or power is under construction. You can partecipate listing below which cables are you using...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!length&lt;br /&gt;
!how many?&lt;br /&gt;
!where?&lt;br /&gt;
!project&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|2&lt;br /&gt;
|Bicocca (refer to Domenico G. Sorrenti, 2009-11-11)&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|FireWire 6-6 &lt;br /&gt;
|?&lt;br /&gt;
|1&lt;br /&gt;
|on LURCH wheelchair&lt;br /&gt;
|LURCH&lt;br /&gt;
|&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15627</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15627"/>
				<updated>2012-11-13T21:08:15Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=Student&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=inactive&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
nov-oggi, Dottorando presso il Politecnico di Milano&lt;br /&gt;
lug-ott 2012,Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&amp;lt;br/&amp;gt;&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi; &amp;lt;br/&amp;gt;&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni).&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15626</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15626"/>
				<updated>2012-11-13T21:05:06Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=Student&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndreaRomanoni.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=inactive&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni). &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012,Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=File:AndreaRomanoni.jpg&amp;diff=15625</id>
		<title>File:AndreaRomanoni.jpg</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=File:AndreaRomanoni.jpg&amp;diff=15625"/>
				<updated>2012-11-13T21:03:56Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: Foto di AndreaRomanoni&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Foto di AndreaRomanoni&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15624</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15624"/>
				<updated>2012-11-13T21:03:04Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=Student&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=AndRom.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=inactive&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni). &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012,Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15583</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15583"/>
				<updated>2012-10-11T06:51:44Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=Student&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=2010-05-11-153757.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=inactive&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni). &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012,Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15582</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=15582"/>
				<updated>2012-10-11T06:49:08Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=Student&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=2010-05-11-153757.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|advisor=MatteoMatteucci;&lt;br /&gt;
|status=inactive&lt;br /&gt;
| sett 2009, Laurea triennale con tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni). &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
apr 2012 Laurea specialistica in Ingegneria Informatica presso Politecnico di Milano, tesi: Ricostruzione 3D delle traiettorie veicolari da immagini di una o più telecamere ,  Relatore MatteoMatteucci, Correlatore: DavideRizzi; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lug-ott 2012,Assegnista di ricerca all' Università delgi Studi Milano-Bicocca, Titolo assegno: Rilevamento di oggetti in sequenze video e caratterizzazione della loro dinamica&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14259</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14259"/>
				<updated>2011-12-12T15:41:51Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi;&lt;br /&gt;
|students=Andrea Romanoni&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2012/04/23&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
* unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
* utilizzare il filmato creato per ricostruire in tre dimensioni la traiettoria delle auto che percorrono la rotonda.&lt;br /&gt;
&lt;br /&gt;
==Come ricostruire le traiettorie in 3D==&lt;br /&gt;
Per capire come costruire le traiettorie in 3D comincio ad implementare un lavoro già esistente ([http://dx.doi.org/10.1109/WMVC.2007.13 SongNevatia2007])&lt;br /&gt;
===Sistema di Song e Nevatia===&lt;br /&gt;
====MCMC per ogni frame====&lt;br /&gt;
Il sistema implementato in un primo momento tratta i frame del video singolarmente, in maniera indipendente l'uno dall'altro. Partendo dall'immagine estratta con la background subtraction, viene ricercata la configurazione di veicoli che meglio approssima il foreground. Ciò che deve essere stimato per ogni frame è il numero di veicoli, la posizione e l'orientamento in 3D di essi. Il problema viene definito come un problema Bayesiano: viene definita la distribuzione a posteriori di probabilità di uno stato data l'immagine del frame corrente. Dato che non possibile conoscere in modo esaustivo questa distribuzione, viene campionata attraverso il metodo MCMC in particolare con il metodo [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings]. La proposta di un nuovo stato nell'ambito di questo algoritmo avviene modificando lo stato della configurazione del campione corrente scegliendo casualmente tra:&lt;br /&gt;
* aggiunta di un nuovo veicolo;&lt;br /&gt;
* rimozione di un veicolo a caso;&lt;br /&gt;
* rimpiazzamento di un veicolo: viene proposto un veicolo e viene eliminato quello più vicino;&lt;br /&gt;
* modifica delle posizioni dei veicoli;&lt;br /&gt;
* modifica degli orientamenti;&lt;br /&gt;
====Viterbi per la scelta degli stati da considerare====&lt;br /&gt;
Per scegliere le configurazioni migliori non viene scelto il campione a più alta probabilità, ma si preferisce utilizzare l'[http://en.wikipedia.org/wiki/Viterbi_algorithm algoritmo di Viterbi] per considerare quale storia delle configurazioni è più probabile.&lt;br /&gt;
&lt;br /&gt;
===Sistema Proposto===&lt;br /&gt;
Nel sistema proposto la traiettoria viene costruita a partire dalle traiettorie 2D estratte dal tracker implementato nei lavori precedenti. Inoltre, ogni veicolo viene considerato a se stante indipendentemente dagli altri.&lt;br /&gt;
Siccome i veicoli possono avere diffferenti dimensioni, vengono utilizzati 3 modelli principali, dai quali si estraggono dei campioni della lunghezza.&lt;br /&gt;
Per ogni frame e per ogni veicolo è noto il centro del blob, e lo stato del filtro di Kalman in 2D. Proietto il centro e l'orientamento in 3D. Per ogni dimensione e per ogni campione della lunghezza del modello, vengono estratti campioni della pose con una distribuzione gaussiana trivariata.&lt;br /&gt;
&lt;br /&gt;
Infine, dopo aver collezionato tutti i campioni per tutti i frame in cui è presente uno stesso veicolo, si devono scegliere quelli che rappresentano meglio l'immagine. Per fare questo si utilizza ancora Viterbi con una equazione dinamica dipendente dalla probabilità del campione e dalla associazione tra i campioni di istanti adiacenti. La funzione di associazione tra un campione e il campione precedente viene calcolata traslando la proiezione del modello della quantità con cui il blob si è mosso e calcolando il livello di sovrapposizione con la proiezione del campione corrente. Poi a questo termine viene moltiplicato un termine che polarizza i movimenti del modello verso avanti. Infatti viene calcolata la probabilità del campione con una Gaussiana che si allarga all'allontanarsi dal campione precedente, ed è centrata sul vettore orientamento. In questo modo si crea una sorta di cono di distribuzione di probabilità che penalizza campioni che esprimerebbero uno spostamento troppo brusco e non avanzante del veicolo.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14258</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14258"/>
				<updated>2011-11-25T15:45:03Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Come ricostruire le traiettorie in 3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi;&lt;br /&gt;
|students=Andrea Romanoni&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2011/12/20&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
* unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
* utilizzare il filmato creato per ricostruire in tre dimensioni la traiettoria delle auto che percorrono la rotonda.&lt;br /&gt;
&lt;br /&gt;
==Come ricostruire le traiettorie in 3D==&lt;br /&gt;
Per capire come costruire le traiettorie in 3D comincio ad implementare un lavoro già esistente ([http://dx.doi.org/10.1109/WMVC.2007.13 SongNevatia2007])&lt;br /&gt;
===Sistema di Song e Nevatia===&lt;br /&gt;
====MCMC per ogni frame====&lt;br /&gt;
Il sistema implementato in un primo momento tratta i frame del video singolarmente, in maniera indipendente l'uno dall'altro. Partendo dall'immagine estratta con la background subtraction, viene ricercata la configurazione di veicoli che meglio approssima il foreground. Ciò che deve essere stimato per ogni frame è il numero di veicoli, la posizione e l'orientamento in 3D di essi. Il problema viene definito come un problema Bayesiano: viene definita la distribuzione a posteriori di probabilità di uno stato data l'immagine del frame corrente. Dato che non possibile conoscere in modo esaustivo questa distribuzione, viene campionata attraverso il metodo MCMC in particolare con il metodo [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings]. La proposta di un nuovo stato nell'ambito di questo algoritmo avviene modificando lo stato della configurazione del campione corrente scegliendo casualmente tra:&lt;br /&gt;
* aggiunta di un nuovo veicolo;&lt;br /&gt;
* rimozione di un veicolo a caso;&lt;br /&gt;
* rimpiazzamento di un veicolo: viene proposto un veicolo e viene eliminato quello più vicino;&lt;br /&gt;
* modifica delle posizioni dei veicoli;&lt;br /&gt;
* modifica degli orientamenti;&lt;br /&gt;
====Viterbi per la scelta degli stati da considerare====&lt;br /&gt;
Per scegliere le configurazioni migliori non viene scelto il campione a più alta probabilità, ma si preferisce utilizzare l'[http://en.wikipedia.org/wiki/Viterbi_algorithm algoritmo di Viterbi] per considerare quale storia delle configurazioni è più probabile.&lt;br /&gt;
&lt;br /&gt;
===Sistema Proposto===&lt;br /&gt;
Nel sistema proposto la traiettoria viene costruita a partire dalle traiettorie 2D estratte dal tracker implementato nei lavori precedenti. Inoltre, ogni veicolo viene considerato a se stante indipendentemente dagli altri.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14257</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14257"/>
				<updated>2011-11-25T15:43:11Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Come ricostruire le traiettorie in 3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi;&lt;br /&gt;
|students=Andrea Romanoni&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2011/12/20&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
* unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
* utilizzare il filmato creato per ricostruire in tre dimensioni la traiettoria delle auto che percorrono la rotonda.&lt;br /&gt;
&lt;br /&gt;
==Come ricostruire le traiettorie in 3D==&lt;br /&gt;
Per capire come costruire le traiettorie in 3D comincio ad implementare un lavoro già esistente ([http://dx.doi.org/10.1109/WMVC.2007.13 SongNevatia2007]&lt;br /&gt;
===Sistema di Song e Nevatia===&lt;br /&gt;
====MCMC per ogni frame====&lt;br /&gt;
Il sistema implementato in un primo momento tratta i frame del video singolarmente, in maniera indipendente l'uno dall'altro. Partendo dall'immagine estratta con la background subtraction, viene ricercata la configurazione di veicoli che meglio approssima il foreground. Ciò che deve essere stimato per ogni frame è il numero di veicoli, la posizione e l'orientamento in 3D di essi. Il problema viene definito come un problema Bayesiano: viene definita la distribuzione a posteriori di probabilità di uno stato data l'immagine del frame corrente. Dato che non possibile conoscere in modo esaustivo questa distribuzione, viene campionata attraverso il metodo MCMC in particolare con il metodo [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings]. La proposta di un nuovo stato nell'ambito di questo algoritmo avviene modificando lo stato della configurazione del campione corrente scegliendo casualmente tra:&lt;br /&gt;
* aggiunta di un nuovo veicolo;&lt;br /&gt;
* rimozione di un veicolo a caso;&lt;br /&gt;
* rimpiazzamento di un veicolo: viene proposto un veicolo e viene eliminato quello più vicino;&lt;br /&gt;
* modifica delle posizioni dei veicoli;&lt;br /&gt;
* modifica degli orientamenti;&lt;br /&gt;
====Viterbi per la scelta degli stati da considerare====&lt;br /&gt;
Per scegliere le configurazioni migliori non viene scelto il campione a più alta probabilità, ma si preferisce utilizzare l'[http://en.wikipedia.org/wiki/Viterbi_algorithm algoritmo di Viterbi] per considerare quale storia delle configurazioni è più probabile.&lt;br /&gt;
&lt;br /&gt;
===Sistema Proposto===&lt;br /&gt;
Nel sistema proposto la traiettoria viene costruita a partire dalle traiettorie 2D estratte dal tracker implementato nei lavori precedenti. Inoltre, ogni veicolo viene considerato a se stante indipendentemente dagli altri.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14241</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14241"/>
				<updated>2011-11-12T10:03:26Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi;&lt;br /&gt;
|students=Andrea Romanoni&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2011/12/20&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
* unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
* utilizzare il filmato creato per ricostruire in tre dimensioni la traiettoria delle auto che percorrono la rotonda.&lt;br /&gt;
&lt;br /&gt;
==Come ricostruire le traiettorie in 3D==&lt;br /&gt;
Per capire come costruire le traiettorie in 3D comincio ad implementare un lavoro già esistente ([http://dx.doi.org/10.1109/WMVC.2007.13 SongNevatia2007]&lt;br /&gt;
===Sistema di Song e Nevatia===&lt;br /&gt;
====MCMC per ogni frame====&lt;br /&gt;
Il sistema implementato in un primo momento tratta i frame del video singolarmente, in maniera indipendente l'uno dall'altro. Partendo dall'immagine estratta con la background subtraction, viene ricercata la configurazione di veicoli che meglio approssima il foreground. Ciò che deve essere stimato per ogni frame è il numero di veicoli, la posizione e l'orientamento in 3D di essi. Il problema viene definito come un problema Bayesiano: viene definita la distribuzione a posteriori di probabilità di uno stato data l'immagine del frame corrente. Dato che non possibile conoscere in modo esaustivo questa distribuzione, viene campionata attraverso il metodo MCMC in particolare con il metodo [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings]. La proposta di un nuovo stato nell'ambito di questo algoritmo avviene modificando lo stato della configurazione del campione corrente scegliendo casualmente tra:&lt;br /&gt;
* aggiunta di un nuovo veicolo;&lt;br /&gt;
* rimozione di un veicolo a caso;&lt;br /&gt;
* rimpiazzamento di un veicolo: viene proposto un veicolo e viene eliminato quello più vicino;&lt;br /&gt;
* modifica delle posizioni dei veicoli;&lt;br /&gt;
* modifica degli orientamenti;&lt;br /&gt;
====Viterbi per la scelta degli stati da considerare====&lt;br /&gt;
Per scegliere le configurazioni migliori non viene scelto il campione a più alta probabilità, ma si preferisce utilizzare l'[http://en.wikipedia.org/wiki/Viterbi_algorithm algoritmo di Viterbi] per considerare quale storia delle configurazioni è più probabile.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14240</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=14240"/>
				<updated>2011-11-12T10:03:05Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi;&lt;br /&gt;
|students=Andrea Romanoni&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2011/12/20&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
* unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
* utilizzare il filmato creato per ricostruire in tre dimensioni la traiettoria delle auto che percorrono la rotonda.&lt;br /&gt;
&lt;br /&gt;
==Come ricostruire le traiettorie in 3D==&lt;br /&gt;
Per capire come costruire le traiettorie in 3D comincio ad implementare un lavoro già esistente ([http://dx.doi.org/10.1109/WMVC.2007.13 SongNevatia2007]&lt;br /&gt;
===Sistema di Song e Nevatia===&lt;br /&gt;
====MCMC per ogni frame====&lt;br /&gt;
Il sistema implementato in un primo momento tratta i frame del video singolarmente, in maniera indipendente l'uno dall'altro. Partendo dall'immagine estratta con la background subtraction, viene ricercata la configurazione di veicoli che meglio approssima il foreground. Ciò che deve essere stimato per ogni frame è il numero di veicoli, la posizione e l'orientamento in 3D di essi. Il problema viene definito come un problema Bayesiano: viene definita la distribuzione a posteriori di probabilità di uno stato data l'immagine del frame corrente. Dato che non possibile conoscere in modo esaustivo questa distribuzione, viene campionata attraverso il metodo MCMC in particolare con il metodo [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings]. La proposta di un nuovo stato nell'ambito di questo algoritmo avviene modificando lo stato della configurazione del campione corrente scegliendo casualmente tra:&lt;br /&gt;
* aggiunta di un nuovo veicolo;&lt;br /&gt;
* rimozione di un veicolo a caso;&lt;br /&gt;
* rimpiazzamento di un veicolo: viene proposto un veicolo e viene eliminato quello più vicino;&lt;br /&gt;
* modifica delle posizioni dei veicoli;&lt;br /&gt;
* modifica degli orientamenti;&lt;br /&gt;
=====Viterbi per la scelta degli stati da considerare=====&lt;br /&gt;
Per scegliere le configurazioni migliori non viene scelto il campione a più alta probabilità, ma si preferisce utilizzare l'[http://en.wikipedia.org/wiki/Viterbi_algorithm algoritmo di Viterbi] per considerare quale storia delle configurazioni è più probabile.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12807</id>
		<title>Talk:Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12807"/>
				<updated>2011-01-03T14:01:20Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Matching tra video (SURF) */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Syncro in progress ==&lt;br /&gt;
&lt;br /&gt;
Sto sviluppando la parte di sincronizzazione dei due video.&lt;br /&gt;
Con OpenCV apro i video e faccio scegliere all'utente un punto di ogni video per il quale poi memorizzo  il segnale su un file.&lt;br /&gt;
Successivamente apro i file relativi ai diversi video, estraggo il segnale e calcolo la correlazione del segnale di tutti i video rispetto al primo calcolando per quale valore si ha la correlazione massima; da questo calcolo il ritardo tra i video&lt;br /&gt;
&lt;br /&gt;
== Syncro-OpticalFlow ==&lt;br /&gt;
&lt;br /&gt;
Prima di fare la sincronizzazione come discusso, ovvero analisi di segnale, bisogna stabilizzare l'immagine altrimenti il segnale varierà anche a causa del movimento della camera.&lt;br /&gt;
&lt;br /&gt;
Per l'opticalFlow, tra un frame e l'altro bisogna calcolare la matrice di omografia, ma sto incontrando problemi con cv::findHomography. Infatti la matrice risultato non è quella corretta, o meglio differisce di moltissimo da quella calcolata con Matlab&lt;br /&gt;
&lt;br /&gt;
[Risolto] il problema di findHomography: la matrice veniva calcolata correttamente, ma per visualizzare i risultati dovevo farli vedere come double invece che float. Devo ringraziare un certo Michal Kottman, che mi ha risposto prontamente nel gruppo yahoo di opencv (http://tech.groups.yahoo.com/group/OpenCV/message/76527?l=1)&lt;br /&gt;
&lt;br /&gt;
== Sync in progress.... ==&lt;br /&gt;
&lt;br /&gt;
Ieri sono riuscito ad allineare il video con la classe che mi ha dato Davide. Oggi allineo anche gli altri video e provo la sincronizzazione con la correlazione dei segnali del pixel. Provo anche a fare una correlazione tra i segnali di più pixel magari.&lt;br /&gt;
&lt;br /&gt;
Ho allineato tutti i video ora li sincronizzo.&lt;br /&gt;
&lt;br /&gt;
== Matching tra video (SURF) ==&lt;br /&gt;
&lt;br /&gt;
probabilmente tutti i problemi di sincronizzazione sono dovuti al video stesso... quindi, sperando che sia questo il problema procedo cercando di fare matching tra i video con SURF.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12806</id>
		<title>Talk:Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12806"/>
				<updated>2010-12-30T09:29:04Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Sync in progress.... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Syncro in progress ==&lt;br /&gt;
&lt;br /&gt;
Sto sviluppando la parte di sincronizzazione dei due video.&lt;br /&gt;
Con OpenCV apro i video e faccio scegliere all'utente un punto di ogni video per il quale poi memorizzo  il segnale su un file.&lt;br /&gt;
Successivamente apro i file relativi ai diversi video, estraggo il segnale e calcolo la correlazione del segnale di tutti i video rispetto al primo calcolando per quale valore si ha la correlazione massima; da questo calcolo il ritardo tra i video&lt;br /&gt;
&lt;br /&gt;
== Syncro-OpticalFlow ==&lt;br /&gt;
&lt;br /&gt;
Prima di fare la sincronizzazione come discusso, ovvero analisi di segnale, bisogna stabilizzare l'immagine altrimenti il segnale varierà anche a causa del movimento della camera.&lt;br /&gt;
&lt;br /&gt;
Per l'opticalFlow, tra un frame e l'altro bisogna calcolare la matrice di omografia, ma sto incontrando problemi con cv::findHomography. Infatti la matrice risultato non è quella corretta, o meglio differisce di moltissimo da quella calcolata con Matlab&lt;br /&gt;
&lt;br /&gt;
[Risolto] il problema di findHomography: la matrice veniva calcolata correttamente, ma per visualizzare i risultati dovevo farli vedere come double invece che float. Devo ringraziare un certo Michal Kottman, che mi ha risposto prontamente nel gruppo yahoo di opencv (http://tech.groups.yahoo.com/group/OpenCV/message/76527?l=1)&lt;br /&gt;
&lt;br /&gt;
== Sync in progress.... ==&lt;br /&gt;
&lt;br /&gt;
Ieri sono riuscito ad allineare il video con la classe che mi ha dato Davide. Oggi allineo anche gli altri video e provo la sincronizzazione con la correlazione dei segnali del pixel. Provo anche a fare una correlazione tra i segnali di più pixel magari.&lt;br /&gt;
&lt;br /&gt;
Ho allineato tutti i video ora li sincronizzo.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12805</id>
		<title>Talk:Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12805"/>
				<updated>2010-12-28T09:02:08Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Sync in progress.... */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Syncro in progress ==&lt;br /&gt;
&lt;br /&gt;
Sto sviluppando la parte di sincronizzazione dei due video.&lt;br /&gt;
Con OpenCV apro i video e faccio scegliere all'utente un punto di ogni video per il quale poi memorizzo  il segnale su un file.&lt;br /&gt;
Successivamente apro i file relativi ai diversi video, estraggo il segnale e calcolo la correlazione del segnale di tutti i video rispetto al primo calcolando per quale valore si ha la correlazione massima; da questo calcolo il ritardo tra i video&lt;br /&gt;
&lt;br /&gt;
== Syncro-OpticalFlow ==&lt;br /&gt;
&lt;br /&gt;
Prima di fare la sincronizzazione come discusso, ovvero analisi di segnale, bisogna stabilizzare l'immagine altrimenti il segnale varierà anche a causa del movimento della camera.&lt;br /&gt;
&lt;br /&gt;
Per l'opticalFlow, tra un frame e l'altro bisogna calcolare la matrice di omografia, ma sto incontrando problemi con cv::findHomography. Infatti la matrice risultato non è quella corretta, o meglio differisce di moltissimo da quella calcolata con Matlab&lt;br /&gt;
&lt;br /&gt;
[Risolto] il problema di findHomography: la matrice veniva calcolata correttamente, ma per visualizzare i risultati dovevo farli vedere come double invece che float. Devo ringraziare un certo Michal Kottman, che mi ha risposto prontamente nel gruppo yahoo di opencv (http://tech.groups.yahoo.com/group/OpenCV/message/76527?l=1)&lt;br /&gt;
&lt;br /&gt;
== Sync in progress.... ==&lt;br /&gt;
&lt;br /&gt;
Ieri sono riuscito ad allineare il video con la classe che mi ha dato Davide. Oggi allineo anche gli altri video e provo la sincronizzazione con la correlazione dei segnali del pixel. Provo anche a fare una correlazione tra i segnali di più pixel magari&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12804</id>
		<title>Talk:Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12804"/>
				<updated>2010-12-26T23:27:55Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Syncro-OpticalFlow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Syncro in progress ==&lt;br /&gt;
&lt;br /&gt;
Sto sviluppando la parte di sincronizzazione dei due video.&lt;br /&gt;
Con OpenCV apro i video e faccio scegliere all'utente un punto di ogni video per il quale poi memorizzo  il segnale su un file.&lt;br /&gt;
Successivamente apro i file relativi ai diversi video, estraggo il segnale e calcolo la correlazione del segnale di tutti i video rispetto al primo calcolando per quale valore si ha la correlazione massima; da questo calcolo il ritardo tra i video&lt;br /&gt;
&lt;br /&gt;
== Syncro-OpticalFlow ==&lt;br /&gt;
&lt;br /&gt;
Prima di fare la sincronizzazione come discusso, ovvero analisi di segnale, bisogna stabilizzare l'immagine altrimenti il segnale varierà anche a causa del movimento della camera.&lt;br /&gt;
&lt;br /&gt;
Per l'opticalFlow, tra un frame e l'altro bisogna calcolare la matrice di omografia, ma sto incontrando problemi con cv::findHomography. Infatti la matrice risultato non è quella corretta, o meglio differisce di moltissimo da quella calcolata con Matlab&lt;br /&gt;
&lt;br /&gt;
[Risolto] il problema di findHomography: la matrice veniva calcolata correttamente, ma per visualizzare i risultati dovevo farli vedere come double invece che float. Devo ringraziare un certo Michal Kottman, che mi ha risposto prontamente nel gruppo yahoo di opencv (http://tech.groups.yahoo.com/group/OpenCV/message/76527?l=1)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12803</id>
		<title>Talk:Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12803"/>
				<updated>2010-12-24T09:32:19Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Syncro-OpticalFlow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Syncro in progress ==&lt;br /&gt;
&lt;br /&gt;
Sto sviluppando la parte di sincronizzazione dei due video.&lt;br /&gt;
Con OpenCV apro i video e faccio scegliere all'utente un punto di ogni video per il quale poi memorizzo  il segnale su un file.&lt;br /&gt;
Successivamente apro i file relativi ai diversi video, estraggo il segnale e calcolo la correlazione del segnale di tutti i video rispetto al primo calcolando per quale valore si ha la correlazione massima; da questo calcolo il ritardo tra i video&lt;br /&gt;
&lt;br /&gt;
== Syncro-OpticalFlow ==&lt;br /&gt;
&lt;br /&gt;
Prima di fare la sincronizzazione come discusso, ovvero analisi di segnale, bisogna stabilizzare l'immagine altrimenti il segnale varierà anche a causa del movimento della camera.&lt;br /&gt;
&lt;br /&gt;
Per l'opticalFlow, tra un frame e l'altro bisogna calcolare la matrice di omografia, ma sto incontrando problemi con cv::findHomography. Infatti la matrice risultato non è quella corretta, o meglio differisce di moltissimo da quella calcolata con Matlab&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12802</id>
		<title>Talk:Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12802"/>
				<updated>2010-12-24T09:23:07Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Syncro-OpticalFlow */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Syncro in progress ==&lt;br /&gt;
&lt;br /&gt;
Sto sviluppando la parte di sincronizzazione dei due video.&lt;br /&gt;
Con OpenCV apro i video e faccio scegliere all'utente un punto di ogni video per il quale poi memorizzo  il segnale su un file.&lt;br /&gt;
Successivamente apro i file relativi ai diversi video, estraggo il segnale e calcolo la correlazione del segnale di tutti i video rispetto al primo calcolando per quale valore si ha la correlazione massima; da questo calcolo il ritardo tra i video&lt;br /&gt;
&lt;br /&gt;
== Syncro-OpticalFlow ==&lt;br /&gt;
&lt;br /&gt;
Prima di fare la sincronizzazione come discusso, ovvero analisi di segnale, bisogna stabilizzare l'immagine altrimenti il segnale varierà anche a causa del movimento della camera.&lt;br /&gt;
&lt;br /&gt;
Per l'opticalFlow, tra un frame e l'altro bisogna calcolare la matrice di omografia, ma sto incontrando problemi con cv::findHomography. Infatti la matrice risultato non è quella corretta, o meglio differisce di moltissmo da quella calcolata con Matlab&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12801</id>
		<title>Talk:Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12801"/>
				<updated>2010-12-21T07:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: Sincronizzazione dei video&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Syncro in progress ==&lt;br /&gt;
&lt;br /&gt;
Sto sviluppando la parte di sincronizzazione dei due video.&lt;br /&gt;
Con OpenCV apro i video e faccio scegliere all'utente un punto di ogni video per il quale poi memorizzo  il segnale su un file.&lt;br /&gt;
Successivamente apro i file relativi ai diversi video, estraggo il segnale e calcolo la correlazione del segnale di tutti i video rispetto al primo calcolando per quale valore si ha la correlazione massima; da questo calcolo il ritardo tra i video&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12798</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12798"/>
				<updated>2010-12-17T19:49:42Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi;&lt;br /&gt;
|students=Andrea Romanoni&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2011/12/20&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
* unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
* utilizzare il filmato creato per ricostruire in tre dimensioni la traiettoria delle auto che percorrono la rotonda.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12797</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12797"/>
				<updated>2010-12-17T19:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi;&lt;br /&gt;
|students=Andrea Romanoni&lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2011/12/20&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
- unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
- utilizzare il filmato creato per ricostruire in tre dimansioni la traiettoria delle auto che percorrono la rotonda.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12796</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12796"/>
				<updated>2010-12-17T19:40:55Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|title=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|coordinator=MatteoMatteucci&lt;br /&gt;
|tutor=DavideRizzi; &lt;br /&gt;
|resarea=Computer Vision and Image Analysis&lt;br /&gt;
|start=2010/12/17&lt;br /&gt;
|end=2011/12/20&lt;br /&gt;
|status=Active&lt;br /&gt;
|level=Ms&lt;br /&gt;
|type=Thesis&lt;br /&gt;
}}&lt;br /&gt;
La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
- unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
- utilizzare il filmato creato per ricostruire in tre dimansioni la traiettoria delle auto che percorrono la rotonda.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12795</id>
		<title>Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Ricostruzione_della_traiettoria_3d_di_veicoli_in_intersezioni_rotatorie&amp;diff=12795"/>
				<updated>2010-12-17T19:16:12Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: New page: La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria.  Viene fornito in input un in...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La tesi ha lo scopo di estendere il lavoro esistente per il tracking e la ricostruzione delle traiettorie di veicoli che percorrono un intersezione rotatoria. &lt;br /&gt;
Viene fornito in input un insieme di riprese di più telecamere della stessa scena, la rotonda in questione. Il software che verrà implementato dovrà:&lt;br /&gt;
- unire le informazioni delle riprese, quindi sincronizzare le immagini e fondere i tre filmati in modo che il filmato creato sia più semplice da analizzare;&lt;br /&gt;
- utilizzare il filmato creato per ricostruire in tre dimansioni la traiettoria delle auto che percorrono la rotonda.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=12794</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=12794"/>
				<updated>2010-12-17T19:07:08Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=Student&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=2010-05-11-153757.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|projectpage=Ricostruzione della traiettoria 3d di veicoli in intersezioni rotatorie&lt;br /&gt;
|advisor=MatteoMatteucci; DavideRizzi;&lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
Sono uno studente laureato in Ingegneria Informatica con la tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni). Frequento il secondo anno della Laurea Specialistica in Ingegneria Informatica.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=12793</id>
		<title>User:AndreaRomanoni</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=User:AndreaRomanoni&amp;diff=12793"/>
				<updated>2010-12-17T19:05:13Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Student&lt;br /&gt;
|category=Student&lt;br /&gt;
|firstname=Andrea&lt;br /&gt;
|lastname=Romanoni&lt;br /&gt;
|photo=2010-05-11-153757.jpg&lt;br /&gt;
|email=andrearomanoni@gmail.com&lt;br /&gt;
|projectpage=Porting su Orocos di alcuni moduli software di Lurch‎&lt;br /&gt;
|advisor=MatteoMatteucci; DavideRizzi; &lt;br /&gt;
|status=active&lt;br /&gt;
}}&lt;br /&gt;
Sono uno studente laureato in Ingegneria Informatica con la tesi &amp;quot;Tracking e stima della traiettoria di veicolo in intersezioni rotatorie&amp;quot; (M.Pellegrini, A.Romanoni). Frequento il secondo anno della Laurea Specialistica in Ingegneria Informatica.&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12181</id>
		<title>Talk:Porting su Orocos di alcuni moduli software di Lurch</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12181"/>
				<updated>2010-08-16T21:14:22Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Comunicazione Esperti */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dobbiamo sistemare la deadzone per l'esperto del joystick, poi dobbiamo decidere come passare a brian le coppie nome valore per il controllore fuzzy. Potremmo usare un dataflow per questo, invece un insieme di porte per ogni esperto con il quale deve dialogare brian&lt;br /&gt;
&lt;br /&gt;
== Cosa dobbiamo ancora fare ==&lt;br /&gt;
Ricapitolando le cose fatte fin'ora:&lt;br /&gt;
&lt;br /&gt;
- Interfaccia con la porta seriale;&lt;br /&gt;
- JoystickExpert&lt;br /&gt;
- configurazione di Eclipse per usare orocos senza gestire manualmente makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora:&lt;br /&gt;
&lt;br /&gt;
- dobbiamo fare Brian&lt;br /&gt;
- bisogna mettere a posto il fatto delle dead zone&lt;br /&gt;
&lt;br /&gt;
ci conviene dividere il lavoro.. per quanto riguarda il real time credo che un po' tutti i componente diventano real time con orocos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Agenti - BrianExpert ==&lt;br /&gt;
&lt;br /&gt;
Secondo me, bisogna esplicitare il fatto che un thread debba essere svolto in modo real time.&lt;br /&gt;
&lt;br /&gt;
Bisogna individuare gli agenti da rendere real time.&lt;br /&gt;
&lt;br /&gt;
Sto ripassando il codice relativo a Brian e in particolare la lista di coppie nome-valore in input al controllore fuzzy e la lista con le variabili di uscita.&lt;br /&gt;
&lt;br /&gt;
(Michele, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Deadzone e comunicazione agenti ==&lt;br /&gt;
&lt;br /&gt;
fatta la classe per la dead zone, ora bisogna solo applicarla;&lt;br /&gt;
&lt;br /&gt;
per Brian ho pensato che lo scambio di messaggi tra i vari agenti si può fare con le porte, cioè&lt;br /&gt;
&lt;br /&gt;
- uso readDataPort per ogni agente da cui arrivano messaggi &lt;br /&gt;
- uso writeDataProt per ogni agente a cui mandare messaggi&lt;br /&gt;
&lt;br /&gt;
quindi ho creato la classe commandManagerFake per usarla per sperimentare la modifica che riguarda la comunicazione tra command manager e brian. Infatti ora facciamo leggere a brian la velocità del robot solo tramite un metodo, per fare invece una cosa più generale conviene fare anche questo con le porte, magari fare così:&lt;br /&gt;
&lt;br /&gt;
CommandManager task periodico che mette sulla porta (magari bufferizzata) il rho e teta che legge dalla seriale; Brian legge dalla porta quando ne ha bisogno (forse con la porta bufferizzata è più un casino perchè bisogna fare in modo che brian legga dati &amp;quot;recenti&amp;quot; quindi alcuni dati bufferizzati devono essere eliminati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 2 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian Expert ==&lt;br /&gt;
&lt;br /&gt;
Sto traducendo l'agente BrianExpert secondo lo schema su cui si basa Orocos: configureHook(), startHook(), updateHook() ecc. Ho visto che anche loro avevano fatto qualcosa di simile per ogni agente - funzioni Initialize(), Execute() e EndWork().&lt;br /&gt;
&lt;br /&gt;
Nel loro BrianExpert.cpp ci sono anche molti rifermenti a tipi di messaggi che noi non useremo (ad esempio quelli dei sensori Hokuyo).&lt;br /&gt;
&lt;br /&gt;
Sto cercando di capire il funzionamento della funzione di configurazione addOptions().&lt;br /&gt;
&lt;br /&gt;
Ti mando per mail&lt;br /&gt;
-una parte di codice relativa ad una prova su Orocos: Brian invia una stringa a MotorExpert come dicevi tu utilizzando le porte&lt;br /&gt;
-una versione del loro BrianExpert.cpp cui ho aggiunto dei commenti su dove sono definite alcune funzioni e variabili e il loro significato.&lt;br /&gt;
&lt;br /&gt;
(Michele, 3 agosto)&lt;br /&gt;
&lt;br /&gt;
== Porte ed eventi (comunicazione tra esperti) ==&lt;br /&gt;
&lt;br /&gt;
Cosa facciamo? Una porta sola in brian e mandiamo i vari messaggi oppure una porta per ogni tipo di agente? Io propenderei per la seconda così si semplifica molto il lavoro di comprendere da chi arriva il messaggio&lt;br /&gt;
&lt;br /&gt;
Ho visto un po gli eventi e stavo pensando che:&lt;br /&gt;
&lt;br /&gt;
- gli agenti che devono inviare dati ad altri agenti possono usare le porte;&lt;br /&gt;
- quando un agente deve invece reagire a qualcosa che è accaduto possiamo usare gli eventi.&lt;br /&gt;
&lt;br /&gt;
Penso che la maggior parte degli agenti comunichi qualche dato.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian ==&lt;br /&gt;
&lt;br /&gt;
Anche secondo me è bene fare in Brian una porta per ogni agente con cui comunicare.&lt;br /&gt;
Ho visto che in &amp;quot;msg.h&amp;quot; sono definiti i vari tipi di messaggio. Nel nostro caso Brian si limita a comunicare con motorExpert e odoExpert; quindi dovremo mettere in Brian due porte di comuncazione. &lt;br /&gt;
&lt;br /&gt;
Gli agenti si scambiano messaggi in formato XML.&lt;br /&gt;
&lt;br /&gt;
Ti avevo scritto della funzione addOptions(), utilizzata nell'inizializzazione di BrianExpert: tale funzione utilizza la libreria boost c++.&lt;br /&gt;
&lt;br /&gt;
Non è così semplice riuscire a separare la nostra parte da tradurre dal resto del codice. Ad esempio, in Brian.cpp ci sono queste due righe di codice relative alla famosa lista di coppie nome-valore:&lt;br /&gt;
&lt;br /&gt;
mCL[SONAR_QUALITY_DATA]=SonarExpert::bad_quality;&lt;br /&gt;
...&lt;br /&gt;
mCL[HOKUYO_DATA_QUALITY_HEADER+names[0]]=HokuyoConfig::getInstance()-&amp;gt;getMaxQuality();&lt;br /&gt;
&lt;br /&gt;
che richiederebbero di tradurre anche la classe HokuyoConfig e il sonarExpert!&lt;br /&gt;
&lt;br /&gt;
(Michele, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Esperti ==&lt;br /&gt;
&lt;br /&gt;
secondo me dovremo fare:&lt;br /&gt;
&lt;br /&gt;
- porta in lettura e scrittura per comunicare con command manager (che forse è meglio rinominare in joypadExpert o qualcosa di simile)&lt;br /&gt;
- porta in scrittura per motorExpert (non vorrei dire una cavolata ma è Brian che manda messaggi a motor expert giusto?)&lt;br /&gt;
- porta in lettura (e/o scrittura) verso odoExpert&lt;br /&gt;
&lt;br /&gt;
forse noi non dobbiamo preoccuparci più di tanto di quello, forse possiamo usare la configurazione con l'XML delle proprietà per riuscire a gestire quelle cose.. oppure teniamo la configurazione come è nel codice&lt;br /&gt;
&lt;br /&gt;
Ho un grosso problema.. non riesco a far funzionare le porte aggiunte con addEvent() come invece dovrebbero funzionare, ovvero appena arriva un dato dovrebbe essere eseguito l'updateHook().. tu hai per caso provato&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Brian-MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
Brian può anche ricevere i messaggi da motorExpert:&lt;br /&gt;
&lt;br /&gt;
//in BrianExpert.cpp&lt;br /&gt;
ExecStatus BrianExpert::Execute(){&lt;br /&gt;
   ...&lt;br /&gt;
   if(ReceiveLastMessage(MSG_FROM_MOTION_BRIEF,buffer,false)&amp;gt;0){&lt;br /&gt;
      InterfaceSetDatalex_memory((const char *)buffer,this);&lt;br /&gt;
      DBG(&amp;quot;message from motion\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//in GestioneAgenti.cpp&lt;br /&gt;
void GestioneAgenti::createMapMessageAgents(){&lt;br /&gt;
   //aggiungere per ogni tipo di messaggio gli agenti che lo possono produrre&lt;br /&gt;
   ...&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF]=vector&amp;lt;string&amp;gt;();&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF].push_back(motor_agent);&lt;br /&gt;
&lt;br /&gt;
Guardo anch'io la addEvent e poi ti faccio sapere!&lt;br /&gt;
&lt;br /&gt;
La parte del controllore fuzzy è più ampia del previsto: sempre in BrianExpert viene richiamato il costruttore MrBrian, che è definito in lurch-control/brian/src/brian.cpp. E quest'ultimo file a sua volta richiama tante altri file della stessa cartella.&lt;br /&gt;
&lt;br /&gt;
(Michele, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pensando sempre a come potremmmo fare per le porte e gli eventi, forse potremmo dedicare le porte ad ogni esperto come dicevamo, poi dove vengono usati i messaggi noi usiamo gli eventi (che usano il publish subscribe).. sarebbe bello riuscire ad usare le addEventPort, ma non so come mai faccio fatica a farle andare. ho dato un occhi a odometry expert e sembra abbastanza simile a joypad expert perchè legge i dati da una porta seriale.&lt;br /&gt;
&lt;br /&gt;
per MrBrian ho visto, è un programma che ha fatto restelli&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
==  Prova addEventPort di Orocos ==&lt;br /&gt;
&lt;br /&gt;
Sembra proprio che una volta ricevuto il messaggio sulla porta, non venga richiamata la funzione updateHook(); oggi riprovo ancora!&lt;br /&gt;
Sì come dicevi tu potremmo usare entrambi: messaggi attraverso le porte (quando è necessario comunicare dei dati) e gli eventi&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
Ho utilizzato la addEventPort sul vecchio codice che ti avevo mandato l'ultima volta.&lt;br /&gt;
In pratica ci sono due task:&lt;br /&gt;
-Brian periodicamente scrive &amp;quot;sono Brian&amp;quot; e invia una stringa all'esperto motore&lt;br /&gt;
- l'esperto motore appena riceve il dato sulla porta richiama l'updateHook(), scrivendo così &amp;quot;sono Motor Expert&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
(Michele, 7 agosto)&lt;br /&gt;
&lt;br /&gt;
Oggi ho finalmente capito (grazie al codice che mi hai mandato) come mai  non funziona.. o meglio ho capito che funziona solo se usiamo una bufferPort e prima di fare la connectPorts bisogna chiamare la configure dei task (probabilmente dovuto ad un BUG di Orocos).&lt;br /&gt;
&lt;br /&gt;
Si direi che dobbiamo includere nel nostro progetto il programma MrBrian di Restelli&lt;br /&gt;
&lt;br /&gt;
Possiamo istanziare un Task attraverso una classe come launch nel main oppure all'interno del task dove serve, ad esempio command manager possiamo istanziarlo in brian oppure il Launch. Secondo te cosa conviene fare? Secondo me è meglio creare i task nel main in modo da dare una migliore visione di insieme.&lt;br /&gt;
&lt;br /&gt;
Poi ho visto che alla fine odoExpert è simile al joypadExpert perchè deve comunicare con la scheda dell odometria&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
Sì anche secondo me è meglio far partire tutti gli agenti all'inizio nel main: tanto non ne abbiamo tanti!&lt;br /&gt;
&lt;br /&gt;
(Michele, 9 agosto)&lt;br /&gt;
&lt;br /&gt;
== MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
ho guardato un po motorExpert e ho visto che fa riferimento molto a motorboard che è una wheelchirmotorboard1 e ho visto che sembra un doppione della nostra gestione comandi. Credo che la cosa funzioni così:&lt;br /&gt;
&lt;br /&gt;
MotorExpert crea la catena di controllo, poi manda il comando ai vari controllori tramite doControl al quale passa il set point. la WheelChairBoard è secondo me inutile per noi e dovremmo solo mantenere la parte che si occupa di creare la catena di controllo con i vari controllore pid e fuzzy.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
== Odometria e organizzazione nomi ==&lt;br /&gt;
&lt;br /&gt;
Ti mando quello che avevo fatto dove ho cominciato a tradurre la parte di odometria, ora manca solo la porta con cui comunicare, poi in quello che ti invio ho cercato di organizzare meglio i files, ho pensato di chiamare commandManager joypadMotorExpert, ho creato la classe vuota e l'ho messa nel nuovo namespace lurchExperts , se a te va bene copio i metofi di command manager in joypadMotorExpert&lt;br /&gt;
&lt;br /&gt;
(Andrea, 16 agosto)&lt;br /&gt;
&lt;br /&gt;
La riorganizzazione dei file va benissimo!&lt;br /&gt;
&lt;br /&gt;
(Michele, 16 agosto)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12180</id>
		<title>Talk:Porting su Orocos di alcuni moduli software di Lurch</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12180"/>
				<updated>2010-08-16T21:13:45Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Odometria e organizzazione nomi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dobbiamo sistemare la deadzone per l'esperto del joystick, poi dobbiamo decidere come passare a brian le coppie nome valore per il controllore fuzzy. Potremmo usare un dataflow per questo, invece un insieme di porte per ogni esperto con il quale deve dialogare brian&lt;br /&gt;
&lt;br /&gt;
== Cosa dobbiamo ancora fare ==&lt;br /&gt;
Ricapitolando le cose fatte fin'ora:&lt;br /&gt;
&lt;br /&gt;
- Interfaccia con la porta seriale;&lt;br /&gt;
- JoystickExpert&lt;br /&gt;
- configurazione di Eclipse per usare orocos senza gestire manualmente makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora:&lt;br /&gt;
&lt;br /&gt;
- dobbiamo fare Brian&lt;br /&gt;
- bisogna mettere a posto il fatto delle dead zone&lt;br /&gt;
&lt;br /&gt;
ci conviene dividere il lavoro.. per quanto riguarda il real time credo che un po' tutti i componente diventano real time con orocos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Agenti - BrianExpert ==&lt;br /&gt;
&lt;br /&gt;
Secondo me, bisogna esplicitare il fatto che un thread debba essere svolto in modo real time.&lt;br /&gt;
&lt;br /&gt;
Bisogna individuare gli agenti da rendere real time.&lt;br /&gt;
&lt;br /&gt;
Sto ripassando il codice relativo a Brian e in particolare la lista di coppie nome-valore in input al controllore fuzzy e la lista con le variabili di uscita.&lt;br /&gt;
&lt;br /&gt;
(Michele, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Deadzone e comunicazione agenti ==&lt;br /&gt;
&lt;br /&gt;
fatta la classe per la dead zone, ora bisogna solo applicarla;&lt;br /&gt;
&lt;br /&gt;
per Brian ho pensato che lo scambio di messaggi tra i vari agenti si può fare con le porte, cioè&lt;br /&gt;
&lt;br /&gt;
- uso readDataPort per ogni agente da cui arrivano messaggi &lt;br /&gt;
- uso writeDataProt per ogni agente a cui mandare messaggi&lt;br /&gt;
&lt;br /&gt;
quindi ho creato la classe commandManagerFake per usarla per sperimentare la modifica che riguarda la comunicazione tra command manager e brian. Infatti ora facciamo leggere a brian la velocità del robot solo tramite un metodo, per fare invece una cosa più generale conviene fare anche questo con le porte, magari fare così:&lt;br /&gt;
&lt;br /&gt;
CommandManager task periodico che mette sulla porta (magari bufferizzata) il rho e teta che legge dalla seriale; Brian legge dalla porta quando ne ha bisogno (forse con la porta bufferizzata è più un casino perchè bisogna fare in modo che brian legga dati &amp;quot;recenti&amp;quot; quindi alcuni dati bufferizzati devono essere eliminati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 2 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian Expert ==&lt;br /&gt;
&lt;br /&gt;
Sto traducendo l'agente BrianExpert secondo lo schema su cui si basa Orocos: configureHook(), startHook(), updateHook() ecc. Ho visto che anche loro avevano fatto qualcosa di simile per ogni agente - funzioni Initialize(), Execute() e EndWork().&lt;br /&gt;
&lt;br /&gt;
Nel loro BrianExpert.cpp ci sono anche molti rifermenti a tipi di messaggi che noi non useremo (ad esempio quelli dei sensori Hokuyo).&lt;br /&gt;
&lt;br /&gt;
Sto cercando di capire il funzionamento della funzione di configurazione addOptions().&lt;br /&gt;
&lt;br /&gt;
Ti mando per mail&lt;br /&gt;
-una parte di codice relativa ad una prova su Orocos: Brian invia una stringa a MotorExpert come dicevi tu utilizzando le porte&lt;br /&gt;
-una versione del loro BrianExpert.cpp cui ho aggiunto dei commenti su dove sono definite alcune funzioni e variabili e il loro significato.&lt;br /&gt;
&lt;br /&gt;
(Michele, 3 agosto)&lt;br /&gt;
&lt;br /&gt;
== Porte ed eventi (comunicazione tra esperti) ==&lt;br /&gt;
&lt;br /&gt;
Cosa facciamo? Una porta sola in brian e mandiamo i vari messaggi oppure una porta per ogni tipo di agente? Io propenderei per la seconda così si semplifica molto il lavoro di comprendere da chi arriva il messaggio&lt;br /&gt;
&lt;br /&gt;
Ho visto un po gli eventi e stavo pensando che:&lt;br /&gt;
&lt;br /&gt;
- gli agenti che devono inviare dati ad altri agenti possono usare le porte;&lt;br /&gt;
- quando un agente deve invece reagire a qualcosa che è accaduto possiamo usare gli eventi.&lt;br /&gt;
&lt;br /&gt;
Penso che la maggior parte degli agenti comunichi qualche dato.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian ==&lt;br /&gt;
&lt;br /&gt;
Anche secondo me è bene fare in Brian una porta per ogni agente con cui comunicare.&lt;br /&gt;
Ho visto che in &amp;quot;msg.h&amp;quot; sono definiti i vari tipi di messaggio. Nel nostro caso Brian si limita a comunicare con motorExpert e odoExpert; quindi dovremo mettere in Brian due porte di comuncazione. &lt;br /&gt;
&lt;br /&gt;
Gli agenti si scambiano messaggi in formato XML.&lt;br /&gt;
&lt;br /&gt;
Ti avevo scritto della funzione addOptions(), utilizzata nell'inizializzazione di BrianExpert: tale funzione utilizza la libreria boost c++.&lt;br /&gt;
&lt;br /&gt;
Non è così semplice riuscire a separare la nostra parte da tradurre dal resto del codice. Ad esempio, in Brian.cpp ci sono queste due righe di codice relative alla famosa lista di coppie nome-valore:&lt;br /&gt;
&lt;br /&gt;
mCL[SONAR_QUALITY_DATA]=SonarExpert::bad_quality;&lt;br /&gt;
...&lt;br /&gt;
mCL[HOKUYO_DATA_QUALITY_HEADER+names[0]]=HokuyoConfig::getInstance()-&amp;gt;getMaxQuality();&lt;br /&gt;
&lt;br /&gt;
che richiederebbero di tradurre anche la classe HokuyoConfig e il sonarExpert!&lt;br /&gt;
&lt;br /&gt;
(Michele, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== COmunicazione Espertio ==&lt;br /&gt;
&lt;br /&gt;
secondo me dovremo fare:&lt;br /&gt;
&lt;br /&gt;
- porta in lettura e scrittura per comunicare con command manager (che forse è meglio rinominare in joypadExpert o qualcosa di simile)&lt;br /&gt;
- porta in scrittura per motorExpert (non vorrei dire una cavolata ma è Brian che manda messaggi a motor expert giusto?)&lt;br /&gt;
- porta in lettura (e/o scrittura) verso odoExpert&lt;br /&gt;
&lt;br /&gt;
forse noi non dobbiamo preoccuparci più di tanto di quello, forse possiamo usare la configurazione con l'XML delle proprietà per riuscire a gestire quelle cose.. oppure teniamo la configurazione come è nel codice&lt;br /&gt;
&lt;br /&gt;
Ho un grosso problema.. non riesco a far funzionare le porte aggiunte con addEvent() come invece dovrebbero funzionare, ovvero appena arriva un dato dovrebbe essere eseguito l'updateHook().. tu hai per caso provato&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Brian-MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
Brian può anche ricevere i messaggi da motorExpert:&lt;br /&gt;
&lt;br /&gt;
//in BrianExpert.cpp&lt;br /&gt;
ExecStatus BrianExpert::Execute(){&lt;br /&gt;
   ...&lt;br /&gt;
   if(ReceiveLastMessage(MSG_FROM_MOTION_BRIEF,buffer,false)&amp;gt;0){&lt;br /&gt;
      InterfaceSetDatalex_memory((const char *)buffer,this);&lt;br /&gt;
      DBG(&amp;quot;message from motion\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//in GestioneAgenti.cpp&lt;br /&gt;
void GestioneAgenti::createMapMessageAgents(){&lt;br /&gt;
   //aggiungere per ogni tipo di messaggio gli agenti che lo possono produrre&lt;br /&gt;
   ...&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF]=vector&amp;lt;string&amp;gt;();&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF].push_back(motor_agent);&lt;br /&gt;
&lt;br /&gt;
Guardo anch'io la addEvent e poi ti faccio sapere!&lt;br /&gt;
&lt;br /&gt;
La parte del controllore fuzzy è più ampia del previsto: sempre in BrianExpert viene richiamato il costruttore MrBrian, che è definito in lurch-control/brian/src/brian.cpp. E quest'ultimo file a sua volta richiama tante altri file della stessa cartella.&lt;br /&gt;
&lt;br /&gt;
(Michele, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pensando sempre a come potremmmo fare per le porte e gli eventi, forse potremmo dedicare le porte ad ogni esperto come dicevamo, poi dove vengono usati i messaggi noi usiamo gli eventi (che usano il publish subscribe).. sarebbe bello riuscire ad usare le addEventPort, ma non so come mai faccio fatica a farle andare. ho dato un occhi a odometry expert e sembra abbastanza simile a joypad expert perchè legge i dati da una porta seriale.&lt;br /&gt;
&lt;br /&gt;
per MrBrian ho visto, è un programma che ha fatto restelli&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
==  Prova addEventPort di Orocos ==&lt;br /&gt;
&lt;br /&gt;
Sembra proprio che una volta ricevuto il messaggio sulla porta, non venga richiamata la funzione updateHook(); oggi riprovo ancora!&lt;br /&gt;
Sì come dicevi tu potremmo usare entrambi: messaggi attraverso le porte (quando è necessario comunicare dei dati) e gli eventi&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
Ho utilizzato la addEventPort sul vecchio codice che ti avevo mandato l'ultima volta.&lt;br /&gt;
In pratica ci sono due task:&lt;br /&gt;
-Brian periodicamente scrive &amp;quot;sono Brian&amp;quot; e invia una stringa all'esperto motore&lt;br /&gt;
- l'esperto motore appena riceve il dato sulla porta richiama l'updateHook(), scrivendo così &amp;quot;sono Motor Expert&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
(Michele, 7 agosto)&lt;br /&gt;
&lt;br /&gt;
Oggi ho finalmente capito (grazie al codice che mi hai mandato) come mai  non funziona.. o meglio ho capito che funziona solo se usiamo una bufferPort e prima di fare la connectPorts bisogna chiamare la configure dei task (probabilmente dovuto ad un BUG di Orocos).&lt;br /&gt;
&lt;br /&gt;
Si direi che dobbiamo includere nel nostro progetto il programma MrBrian di Restelli&lt;br /&gt;
&lt;br /&gt;
Possiamo istanziare un Task attraverso una classe come launch nel main oppure all'interno del task dove serve, ad esempio command manager possiamo istanziarlo in brian oppure il Launch. Secondo te cosa conviene fare? Secondo me è meglio creare i task nel main in modo da dare una migliore visione di insieme.&lt;br /&gt;
&lt;br /&gt;
Poi ho visto che alla fine odoExpert è simile al joypadExpert perchè deve comunicare con la scheda dell odometria&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
Sì anche secondo me è meglio far partire tutti gli agenti all'inizio nel main: tanto non ne abbiamo tanti!&lt;br /&gt;
&lt;br /&gt;
(Michele, 9 agosto)&lt;br /&gt;
&lt;br /&gt;
== MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
ho guardato un po motorExpert e ho visto che fa riferimento molto a motorboard che è una wheelchirmotorboard1 e ho visto che sembra un doppione della nostra gestione comandi. Credo che la cosa funzioni così:&lt;br /&gt;
&lt;br /&gt;
MotorExpert crea la catena di controllo, poi manda il comando ai vari controllori tramite doControl al quale passa il set point. la WheelChairBoard è secondo me inutile per noi e dovremmo solo mantenere la parte che si occupa di creare la catena di controllo con i vari controllore pid e fuzzy.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
== Odometria e organizzazione nomi ==&lt;br /&gt;
&lt;br /&gt;
Ti mando quello che avevo fatto dove ho cominciato a tradurre la parte di odometria, ora manca solo la porta con cui comunicare, poi in quello che ti invio ho cercato di organizzare meglio i files, ho pensato di chiamare commandManager joypadMotorExpert, ho creato la classe vuota e l'ho messa nel nuovo namespace lurchExperts , se a te va bene copio i metofi di command manager in joypadMotorExpert&lt;br /&gt;
&lt;br /&gt;
(Andrea, 16 agosto)&lt;br /&gt;
&lt;br /&gt;
La riorganizzazione dei file va benissimo!&lt;br /&gt;
&lt;br /&gt;
(Michele, 16 agosto)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12179</id>
		<title>Talk:Porting su Orocos di alcuni moduli software di Lurch</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12179"/>
				<updated>2010-08-16T21:12:58Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Odometria e organizzazione nomi */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dobbiamo sistemare la deadzone per l'esperto del joystick, poi dobbiamo decidere come passare a brian le coppie nome valore per il controllore fuzzy. Potremmo usare un dataflow per questo, invece un insieme di porte per ogni esperto con il quale deve dialogare brian&lt;br /&gt;
&lt;br /&gt;
== Cosa dobbiamo ancora fare ==&lt;br /&gt;
Ricapitolando le cose fatte fin'ora:&lt;br /&gt;
&lt;br /&gt;
- Interfaccia con la porta seriale;&lt;br /&gt;
- JoystickExpert&lt;br /&gt;
- configurazione di Eclipse per usare orocos senza gestire manualmente makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora:&lt;br /&gt;
&lt;br /&gt;
- dobbiamo fare Brian&lt;br /&gt;
- bisogna mettere a posto il fatto delle dead zone&lt;br /&gt;
&lt;br /&gt;
ci conviene dividere il lavoro.. per quanto riguarda il real time credo che un po' tutti i componente diventano real time con orocos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Agenti - BrianExpert ==&lt;br /&gt;
&lt;br /&gt;
Secondo me, bisogna esplicitare il fatto che un thread debba essere svolto in modo real time.&lt;br /&gt;
&lt;br /&gt;
Bisogna individuare gli agenti da rendere real time.&lt;br /&gt;
&lt;br /&gt;
Sto ripassando il codice relativo a Brian e in particolare la lista di coppie nome-valore in input al controllore fuzzy e la lista con le variabili di uscita.&lt;br /&gt;
&lt;br /&gt;
(Michele, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Deadzone e comunicazione agenti ==&lt;br /&gt;
&lt;br /&gt;
fatta la classe per la dead zone, ora bisogna solo applicarla;&lt;br /&gt;
&lt;br /&gt;
per Brian ho pensato che lo scambio di messaggi tra i vari agenti si può fare con le porte, cioè&lt;br /&gt;
&lt;br /&gt;
- uso readDataPort per ogni agente da cui arrivano messaggi &lt;br /&gt;
- uso writeDataProt per ogni agente a cui mandare messaggi&lt;br /&gt;
&lt;br /&gt;
quindi ho creato la classe commandManagerFake per usarla per sperimentare la modifica che riguarda la comunicazione tra command manager e brian. Infatti ora facciamo leggere a brian la velocità del robot solo tramite un metodo, per fare invece una cosa più generale conviene fare anche questo con le porte, magari fare così:&lt;br /&gt;
&lt;br /&gt;
CommandManager task periodico che mette sulla porta (magari bufferizzata) il rho e teta che legge dalla seriale; Brian legge dalla porta quando ne ha bisogno (forse con la porta bufferizzata è più un casino perchè bisogna fare in modo che brian legga dati &amp;quot;recenti&amp;quot; quindi alcuni dati bufferizzati devono essere eliminati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 2 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian Expert ==&lt;br /&gt;
&lt;br /&gt;
Sto traducendo l'agente BrianExpert secondo lo schema su cui si basa Orocos: configureHook(), startHook(), updateHook() ecc. Ho visto che anche loro avevano fatto qualcosa di simile per ogni agente - funzioni Initialize(), Execute() e EndWork().&lt;br /&gt;
&lt;br /&gt;
Nel loro BrianExpert.cpp ci sono anche molti rifermenti a tipi di messaggi che noi non useremo (ad esempio quelli dei sensori Hokuyo).&lt;br /&gt;
&lt;br /&gt;
Sto cercando di capire il funzionamento della funzione di configurazione addOptions().&lt;br /&gt;
&lt;br /&gt;
Ti mando per mail&lt;br /&gt;
-una parte di codice relativa ad una prova su Orocos: Brian invia una stringa a MotorExpert come dicevi tu utilizzando le porte&lt;br /&gt;
-una versione del loro BrianExpert.cpp cui ho aggiunto dei commenti su dove sono definite alcune funzioni e variabili e il loro significato.&lt;br /&gt;
&lt;br /&gt;
(Michele, 3 agosto)&lt;br /&gt;
&lt;br /&gt;
== Porte ed eventi (comunicazione tra esperti) ==&lt;br /&gt;
&lt;br /&gt;
Cosa facciamo? Una porta sola in brian e mandiamo i vari messaggi oppure una porta per ogni tipo di agente? Io propenderei per la seconda così si semplifica molto il lavoro di comprendere da chi arriva il messaggio&lt;br /&gt;
&lt;br /&gt;
Ho visto un po gli eventi e stavo pensando che:&lt;br /&gt;
&lt;br /&gt;
- gli agenti che devono inviare dati ad altri agenti possono usare le porte;&lt;br /&gt;
- quando un agente deve invece reagire a qualcosa che è accaduto possiamo usare gli eventi.&lt;br /&gt;
&lt;br /&gt;
Penso che la maggior parte degli agenti comunichi qualche dato.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian ==&lt;br /&gt;
&lt;br /&gt;
Anche secondo me è bene fare in Brian una porta per ogni agente con cui comunicare.&lt;br /&gt;
Ho visto che in &amp;quot;msg.h&amp;quot; sono definiti i vari tipi di messaggio. Nel nostro caso Brian si limita a comunicare con motorExpert e odoExpert; quindi dovremo mettere in Brian due porte di comuncazione. &lt;br /&gt;
&lt;br /&gt;
Gli agenti si scambiano messaggi in formato XML.&lt;br /&gt;
&lt;br /&gt;
Ti avevo scritto della funzione addOptions(), utilizzata nell'inizializzazione di BrianExpert: tale funzione utilizza la libreria boost c++.&lt;br /&gt;
&lt;br /&gt;
Non è così semplice riuscire a separare la nostra parte da tradurre dal resto del codice. Ad esempio, in Brian.cpp ci sono queste due righe di codice relative alla famosa lista di coppie nome-valore:&lt;br /&gt;
&lt;br /&gt;
mCL[SONAR_QUALITY_DATA]=SonarExpert::bad_quality;&lt;br /&gt;
...&lt;br /&gt;
mCL[HOKUYO_DATA_QUALITY_HEADER+names[0]]=HokuyoConfig::getInstance()-&amp;gt;getMaxQuality();&lt;br /&gt;
&lt;br /&gt;
che richiederebbero di tradurre anche la classe HokuyoConfig e il sonarExpert!&lt;br /&gt;
&lt;br /&gt;
(Michele, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== COmunicazione Espertio ==&lt;br /&gt;
&lt;br /&gt;
secondo me dovremo fare:&lt;br /&gt;
&lt;br /&gt;
- porta in lettura e scrittura per comunicare con command manager (che forse è meglio rinominare in joypadExpert o qualcosa di simile)&lt;br /&gt;
- porta in scrittura per motorExpert (non vorrei dire una cavolata ma è Brian che manda messaggi a motor expert giusto?)&lt;br /&gt;
- porta in lettura (e/o scrittura) verso odoExpert&lt;br /&gt;
&lt;br /&gt;
forse noi non dobbiamo preoccuparci più di tanto di quello, forse possiamo usare la configurazione con l'XML delle proprietà per riuscire a gestire quelle cose.. oppure teniamo la configurazione come è nel codice&lt;br /&gt;
&lt;br /&gt;
Ho un grosso problema.. non riesco a far funzionare le porte aggiunte con addEvent() come invece dovrebbero funzionare, ovvero appena arriva un dato dovrebbe essere eseguito l'updateHook().. tu hai per caso provato&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Brian-MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
Brian può anche ricevere i messaggi da motorExpert:&lt;br /&gt;
&lt;br /&gt;
//in BrianExpert.cpp&lt;br /&gt;
ExecStatus BrianExpert::Execute(){&lt;br /&gt;
   ...&lt;br /&gt;
   if(ReceiveLastMessage(MSG_FROM_MOTION_BRIEF,buffer,false)&amp;gt;0){&lt;br /&gt;
      InterfaceSetDatalex_memory((const char *)buffer,this);&lt;br /&gt;
      DBG(&amp;quot;message from motion\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//in GestioneAgenti.cpp&lt;br /&gt;
void GestioneAgenti::createMapMessageAgents(){&lt;br /&gt;
   //aggiungere per ogni tipo di messaggio gli agenti che lo possono produrre&lt;br /&gt;
   ...&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF]=vector&amp;lt;string&amp;gt;();&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF].push_back(motor_agent);&lt;br /&gt;
&lt;br /&gt;
Guardo anch'io la addEvent e poi ti faccio sapere!&lt;br /&gt;
&lt;br /&gt;
La parte del controllore fuzzy è più ampia del previsto: sempre in BrianExpert viene richiamato il costruttore MrBrian, che è definito in lurch-control/brian/src/brian.cpp. E quest'ultimo file a sua volta richiama tante altri file della stessa cartella.&lt;br /&gt;
&lt;br /&gt;
(Michele, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pensando sempre a come potremmmo fare per le porte e gli eventi, forse potremmo dedicare le porte ad ogni esperto come dicevamo, poi dove vengono usati i messaggi noi usiamo gli eventi (che usano il publish subscribe).. sarebbe bello riuscire ad usare le addEventPort, ma non so come mai faccio fatica a farle andare. ho dato un occhi a odometry expert e sembra abbastanza simile a joypad expert perchè legge i dati da una porta seriale.&lt;br /&gt;
&lt;br /&gt;
per MrBrian ho visto, è un programma che ha fatto restelli&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
==  Prova addEventPort di Orocos ==&lt;br /&gt;
&lt;br /&gt;
Sembra proprio che una volta ricevuto il messaggio sulla porta, non venga richiamata la funzione updateHook(); oggi riprovo ancora!&lt;br /&gt;
Sì come dicevi tu potremmo usare entrambi: messaggi attraverso le porte (quando è necessario comunicare dei dati) e gli eventi&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
Ho utilizzato la addEventPort sul vecchio codice che ti avevo mandato l'ultima volta.&lt;br /&gt;
In pratica ci sono due task:&lt;br /&gt;
-Brian periodicamente scrive &amp;quot;sono Brian&amp;quot; e invia una stringa all'esperto motore&lt;br /&gt;
- l'esperto motore appena riceve il dato sulla porta richiama l'updateHook(), scrivendo così &amp;quot;sono Motor Expert&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
(Michele, 7 agosto)&lt;br /&gt;
&lt;br /&gt;
Oggi ho finalmente capito (grazie al codice che mi hai mandato) come mai  non funziona.. o meglio ho capito che funziona solo se usiamo una bufferPort e prima di fare la connectPorts bisogna chiamare la configure dei task (probabilmente dovuto ad un BUG di Orocos).&lt;br /&gt;
&lt;br /&gt;
Si direi che dobbiamo includere nel nostro progetto il programma MrBrian di Restelli&lt;br /&gt;
&lt;br /&gt;
Possiamo istanziare un Task attraverso una classe come launch nel main oppure all'interno del task dove serve, ad esempio command manager possiamo istanziarlo in brian oppure il Launch. Secondo te cosa conviene fare? Secondo me è meglio creare i task nel main in modo da dare una migliore visione di insieme.&lt;br /&gt;
&lt;br /&gt;
Poi ho visto che alla fine odoExpert è simile al joypadExpert perchè deve comunicare con la scheda dell odometria&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
Sì anche secondo me è meglio far partire tutti gli agenti all'inizio nel main: tanto non ne abbiamo tanti!&lt;br /&gt;
&lt;br /&gt;
(Michele, 9 agosto)&lt;br /&gt;
&lt;br /&gt;
== MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
ho guardato un po motorExpert e ho visto che fa riferimento molto a motorboard che è una wheelchirmotorboard1 e ho visto che sembra un doppione della nostra gestione comandi. Credo che la cosa funzioni così:&lt;br /&gt;
&lt;br /&gt;
MotorExpert crea la catena di controllo, poi manda il comando ai vari controllori tramite doControl al quale passa il set point. la WheelChairBoard è secondo me inutile per noi e dovremmo solo mantenere la parte che si occupa di creare la catena di controllo con i vari controllore pid e fuzzy.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
== Odometria e organizzazione nomi ==&lt;br /&gt;
&lt;br /&gt;
Ti mando quello che avevo fatto dove ho cominciato a tradurre la parte di odometria, ora manca solo la porta con cui comunicare, poi in quello che ti invio ho cercato di organizzare meglio i files, ho pensato di chiamare commandManager joypadMotorExpert, ho creato la classe vuota e l'ho messa nel nuovo namespace lurchExperts , se a te va bene copio i metofi di command manager in joypadMotorExpert&lt;br /&gt;
&lt;br /&gt;
(Andrea, 16 agosto)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12178</id>
		<title>Talk:Porting su Orocos di alcuni moduli software di Lurch</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12178"/>
				<updated>2010-08-16T21:10:04Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* MotorExpert */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dobbiamo sistemare la deadzone per l'esperto del joystick, poi dobbiamo decidere come passare a brian le coppie nome valore per il controllore fuzzy. Potremmo usare un dataflow per questo, invece un insieme di porte per ogni esperto con il quale deve dialogare brian&lt;br /&gt;
&lt;br /&gt;
== Cosa dobbiamo ancora fare ==&lt;br /&gt;
Ricapitolando le cose fatte fin'ora:&lt;br /&gt;
&lt;br /&gt;
- Interfaccia con la porta seriale;&lt;br /&gt;
- JoystickExpert&lt;br /&gt;
- configurazione di Eclipse per usare orocos senza gestire manualmente makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora:&lt;br /&gt;
&lt;br /&gt;
- dobbiamo fare Brian&lt;br /&gt;
- bisogna mettere a posto il fatto delle dead zone&lt;br /&gt;
&lt;br /&gt;
ci conviene dividere il lavoro.. per quanto riguarda il real time credo che un po' tutti i componente diventano real time con orocos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Agenti - BrianExpert ==&lt;br /&gt;
&lt;br /&gt;
Secondo me, bisogna esplicitare il fatto che un thread debba essere svolto in modo real time.&lt;br /&gt;
&lt;br /&gt;
Bisogna individuare gli agenti da rendere real time.&lt;br /&gt;
&lt;br /&gt;
Sto ripassando il codice relativo a Brian e in particolare la lista di coppie nome-valore in input al controllore fuzzy e la lista con le variabili di uscita.&lt;br /&gt;
&lt;br /&gt;
(Michele, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Deadzone e comunicazione agenti ==&lt;br /&gt;
&lt;br /&gt;
fatta la classe per la dead zone, ora bisogna solo applicarla;&lt;br /&gt;
&lt;br /&gt;
per Brian ho pensato che lo scambio di messaggi tra i vari agenti si può fare con le porte, cioè&lt;br /&gt;
&lt;br /&gt;
- uso readDataPort per ogni agente da cui arrivano messaggi &lt;br /&gt;
- uso writeDataProt per ogni agente a cui mandare messaggi&lt;br /&gt;
&lt;br /&gt;
quindi ho creato la classe commandManagerFake per usarla per sperimentare la modifica che riguarda la comunicazione tra command manager e brian. Infatti ora facciamo leggere a brian la velocità del robot solo tramite un metodo, per fare invece una cosa più generale conviene fare anche questo con le porte, magari fare così:&lt;br /&gt;
&lt;br /&gt;
CommandManager task periodico che mette sulla porta (magari bufferizzata) il rho e teta che legge dalla seriale; Brian legge dalla porta quando ne ha bisogno (forse con la porta bufferizzata è più un casino perchè bisogna fare in modo che brian legga dati &amp;quot;recenti&amp;quot; quindi alcuni dati bufferizzati devono essere eliminati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 2 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian Expert ==&lt;br /&gt;
&lt;br /&gt;
Sto traducendo l'agente BrianExpert secondo lo schema su cui si basa Orocos: configureHook(), startHook(), updateHook() ecc. Ho visto che anche loro avevano fatto qualcosa di simile per ogni agente - funzioni Initialize(), Execute() e EndWork().&lt;br /&gt;
&lt;br /&gt;
Nel loro BrianExpert.cpp ci sono anche molti rifermenti a tipi di messaggi che noi non useremo (ad esempio quelli dei sensori Hokuyo).&lt;br /&gt;
&lt;br /&gt;
Sto cercando di capire il funzionamento della funzione di configurazione addOptions().&lt;br /&gt;
&lt;br /&gt;
Ti mando per mail&lt;br /&gt;
-una parte di codice relativa ad una prova su Orocos: Brian invia una stringa a MotorExpert come dicevi tu utilizzando le porte&lt;br /&gt;
-una versione del loro BrianExpert.cpp cui ho aggiunto dei commenti su dove sono definite alcune funzioni e variabili e il loro significato.&lt;br /&gt;
&lt;br /&gt;
(Michele, 3 agosto)&lt;br /&gt;
&lt;br /&gt;
== Porte ed eventi (comunicazione tra esperti) ==&lt;br /&gt;
&lt;br /&gt;
Cosa facciamo? Una porta sola in brian e mandiamo i vari messaggi oppure una porta per ogni tipo di agente? Io propenderei per la seconda così si semplifica molto il lavoro di comprendere da chi arriva il messaggio&lt;br /&gt;
&lt;br /&gt;
Ho visto un po gli eventi e stavo pensando che:&lt;br /&gt;
&lt;br /&gt;
- gli agenti che devono inviare dati ad altri agenti possono usare le porte;&lt;br /&gt;
- quando un agente deve invece reagire a qualcosa che è accaduto possiamo usare gli eventi.&lt;br /&gt;
&lt;br /&gt;
Penso che la maggior parte degli agenti comunichi qualche dato.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian ==&lt;br /&gt;
&lt;br /&gt;
Anche secondo me è bene fare in Brian una porta per ogni agente con cui comunicare.&lt;br /&gt;
Ho visto che in &amp;quot;msg.h&amp;quot; sono definiti i vari tipi di messaggio. Nel nostro caso Brian si limita a comunicare con motorExpert e odoExpert; quindi dovremo mettere in Brian due porte di comuncazione. &lt;br /&gt;
&lt;br /&gt;
Gli agenti si scambiano messaggi in formato XML.&lt;br /&gt;
&lt;br /&gt;
Ti avevo scritto della funzione addOptions(), utilizzata nell'inizializzazione di BrianExpert: tale funzione utilizza la libreria boost c++.&lt;br /&gt;
&lt;br /&gt;
Non è così semplice riuscire a separare la nostra parte da tradurre dal resto del codice. Ad esempio, in Brian.cpp ci sono queste due righe di codice relative alla famosa lista di coppie nome-valore:&lt;br /&gt;
&lt;br /&gt;
mCL[SONAR_QUALITY_DATA]=SonarExpert::bad_quality;&lt;br /&gt;
...&lt;br /&gt;
mCL[HOKUYO_DATA_QUALITY_HEADER+names[0]]=HokuyoConfig::getInstance()-&amp;gt;getMaxQuality();&lt;br /&gt;
&lt;br /&gt;
che richiederebbero di tradurre anche la classe HokuyoConfig e il sonarExpert!&lt;br /&gt;
&lt;br /&gt;
(Michele, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== COmunicazione Espertio ==&lt;br /&gt;
&lt;br /&gt;
secondo me dovremo fare:&lt;br /&gt;
&lt;br /&gt;
- porta in lettura e scrittura per comunicare con command manager (che forse è meglio rinominare in joypadExpert o qualcosa di simile)&lt;br /&gt;
- porta in scrittura per motorExpert (non vorrei dire una cavolata ma è Brian che manda messaggi a motor expert giusto?)&lt;br /&gt;
- porta in lettura (e/o scrittura) verso odoExpert&lt;br /&gt;
&lt;br /&gt;
forse noi non dobbiamo preoccuparci più di tanto di quello, forse possiamo usare la configurazione con l'XML delle proprietà per riuscire a gestire quelle cose.. oppure teniamo la configurazione come è nel codice&lt;br /&gt;
&lt;br /&gt;
Ho un grosso problema.. non riesco a far funzionare le porte aggiunte con addEvent() come invece dovrebbero funzionare, ovvero appena arriva un dato dovrebbe essere eseguito l'updateHook().. tu hai per caso provato&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Brian-MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
Brian può anche ricevere i messaggi da motorExpert:&lt;br /&gt;
&lt;br /&gt;
//in BrianExpert.cpp&lt;br /&gt;
ExecStatus BrianExpert::Execute(){&lt;br /&gt;
   ...&lt;br /&gt;
   if(ReceiveLastMessage(MSG_FROM_MOTION_BRIEF,buffer,false)&amp;gt;0){&lt;br /&gt;
      InterfaceSetDatalex_memory((const char *)buffer,this);&lt;br /&gt;
      DBG(&amp;quot;message from motion\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//in GestioneAgenti.cpp&lt;br /&gt;
void GestioneAgenti::createMapMessageAgents(){&lt;br /&gt;
   //aggiungere per ogni tipo di messaggio gli agenti che lo possono produrre&lt;br /&gt;
   ...&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF]=vector&amp;lt;string&amp;gt;();&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF].push_back(motor_agent);&lt;br /&gt;
&lt;br /&gt;
Guardo anch'io la addEvent e poi ti faccio sapere!&lt;br /&gt;
&lt;br /&gt;
La parte del controllore fuzzy è più ampia del previsto: sempre in BrianExpert viene richiamato il costruttore MrBrian, che è definito in lurch-control/brian/src/brian.cpp. E quest'ultimo file a sua volta richiama tante altri file della stessa cartella.&lt;br /&gt;
&lt;br /&gt;
(Michele, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pensando sempre a come potremmmo fare per le porte e gli eventi, forse potremmo dedicare le porte ad ogni esperto come dicevamo, poi dove vengono usati i messaggi noi usiamo gli eventi (che usano il publish subscribe).. sarebbe bello riuscire ad usare le addEventPort, ma non so come mai faccio fatica a farle andare. ho dato un occhi a odometry expert e sembra abbastanza simile a joypad expert perchè legge i dati da una porta seriale.&lt;br /&gt;
&lt;br /&gt;
per MrBrian ho visto, è un programma che ha fatto restelli&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
==  Prova addEventPort di Orocos ==&lt;br /&gt;
&lt;br /&gt;
Sembra proprio che una volta ricevuto il messaggio sulla porta, non venga richiamata la funzione updateHook(); oggi riprovo ancora!&lt;br /&gt;
Sì come dicevi tu potremmo usare entrambi: messaggi attraverso le porte (quando è necessario comunicare dei dati) e gli eventi&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
Ho utilizzato la addEventPort sul vecchio codice che ti avevo mandato l'ultima volta.&lt;br /&gt;
In pratica ci sono due task:&lt;br /&gt;
-Brian periodicamente scrive &amp;quot;sono Brian&amp;quot; e invia una stringa all'esperto motore&lt;br /&gt;
- l'esperto motore appena riceve il dato sulla porta richiama l'updateHook(), scrivendo così &amp;quot;sono Motor Expert&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
(Michele, 7 agosto)&lt;br /&gt;
&lt;br /&gt;
Oggi ho finalmente capito (grazie al codice che mi hai mandato) come mai  non funziona.. o meglio ho capito che funziona solo se usiamo una bufferPort e prima di fare la connectPorts bisogna chiamare la configure dei task (probabilmente dovuto ad un BUG di Orocos).&lt;br /&gt;
&lt;br /&gt;
Si direi che dobbiamo includere nel nostro progetto il programma MrBrian di Restelli&lt;br /&gt;
&lt;br /&gt;
Possiamo istanziare un Task attraverso una classe come launch nel main oppure all'interno del task dove serve, ad esempio command manager possiamo istanziarlo in brian oppure il Launch. Secondo te cosa conviene fare? Secondo me è meglio creare i task nel main in modo da dare una migliore visione di insieme.&lt;br /&gt;
&lt;br /&gt;
Poi ho visto che alla fine odoExpert è simile al joypadExpert perchè deve comunicare con la scheda dell odometria&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
Sì anche secondo me è meglio far partire tutti gli agenti all'inizio nel main: tanto non ne abbiamo tanti!&lt;br /&gt;
&lt;br /&gt;
(Michele, 9 agosto)&lt;br /&gt;
&lt;br /&gt;
== MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
ho guardato un po motorExpert e ho visto che fa riferimento molto a motorboard che è una wheelchirmotorboard1 e ho visto che sembra un doppione della nostra gestione comandi. Credo che la cosa funzioni così:&lt;br /&gt;
&lt;br /&gt;
MotorExpert crea la catena di controllo, poi manda il comando ai vari controllori tramite doControl al quale passa il set point. la WheelChairBoard è secondo me inutile per noi e dovremmo solo mantenere la parte che si occupa di creare la catena di controllo con i vari controllore pid e fuzzy.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12177</id>
		<title>Talk:Porting su Orocos di alcuni moduli software di Lurch</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12177"/>
				<updated>2010-08-16T20:59:45Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Prova addEventPort di Orocos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dobbiamo sistemare la deadzone per l'esperto del joystick, poi dobbiamo decidere come passare a brian le coppie nome valore per il controllore fuzzy. Potremmo usare un dataflow per questo, invece un insieme di porte per ogni esperto con il quale deve dialogare brian&lt;br /&gt;
&lt;br /&gt;
== Cosa dobbiamo ancora fare ==&lt;br /&gt;
Ricapitolando le cose fatte fin'ora:&lt;br /&gt;
&lt;br /&gt;
- Interfaccia con la porta seriale;&lt;br /&gt;
- JoystickExpert&lt;br /&gt;
- configurazione di Eclipse per usare orocos senza gestire manualmente makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora:&lt;br /&gt;
&lt;br /&gt;
- dobbiamo fare Brian&lt;br /&gt;
- bisogna mettere a posto il fatto delle dead zone&lt;br /&gt;
&lt;br /&gt;
ci conviene dividere il lavoro.. per quanto riguarda il real time credo che un po' tutti i componente diventano real time con orocos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Agenti - BrianExpert ==&lt;br /&gt;
&lt;br /&gt;
Secondo me, bisogna esplicitare il fatto che un thread debba essere svolto in modo real time.&lt;br /&gt;
&lt;br /&gt;
Bisogna individuare gli agenti da rendere real time.&lt;br /&gt;
&lt;br /&gt;
Sto ripassando il codice relativo a Brian e in particolare la lista di coppie nome-valore in input al controllore fuzzy e la lista con le variabili di uscita.&lt;br /&gt;
&lt;br /&gt;
(Michele, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Deadzone e comunicazione agenti ==&lt;br /&gt;
&lt;br /&gt;
fatta la classe per la dead zone, ora bisogna solo applicarla;&lt;br /&gt;
&lt;br /&gt;
per Brian ho pensato che lo scambio di messaggi tra i vari agenti si può fare con le porte, cioè&lt;br /&gt;
&lt;br /&gt;
- uso readDataPort per ogni agente da cui arrivano messaggi &lt;br /&gt;
- uso writeDataProt per ogni agente a cui mandare messaggi&lt;br /&gt;
&lt;br /&gt;
quindi ho creato la classe commandManagerFake per usarla per sperimentare la modifica che riguarda la comunicazione tra command manager e brian. Infatti ora facciamo leggere a brian la velocità del robot solo tramite un metodo, per fare invece una cosa più generale conviene fare anche questo con le porte, magari fare così:&lt;br /&gt;
&lt;br /&gt;
CommandManager task periodico che mette sulla porta (magari bufferizzata) il rho e teta che legge dalla seriale; Brian legge dalla porta quando ne ha bisogno (forse con la porta bufferizzata è più un casino perchè bisogna fare in modo che brian legga dati &amp;quot;recenti&amp;quot; quindi alcuni dati bufferizzati devono essere eliminati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 2 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian Expert ==&lt;br /&gt;
&lt;br /&gt;
Sto traducendo l'agente BrianExpert secondo lo schema su cui si basa Orocos: configureHook(), startHook(), updateHook() ecc. Ho visto che anche loro avevano fatto qualcosa di simile per ogni agente - funzioni Initialize(), Execute() e EndWork().&lt;br /&gt;
&lt;br /&gt;
Nel loro BrianExpert.cpp ci sono anche molti rifermenti a tipi di messaggi che noi non useremo (ad esempio quelli dei sensori Hokuyo).&lt;br /&gt;
&lt;br /&gt;
Sto cercando di capire il funzionamento della funzione di configurazione addOptions().&lt;br /&gt;
&lt;br /&gt;
Ti mando per mail&lt;br /&gt;
-una parte di codice relativa ad una prova su Orocos: Brian invia una stringa a MotorExpert come dicevi tu utilizzando le porte&lt;br /&gt;
-una versione del loro BrianExpert.cpp cui ho aggiunto dei commenti su dove sono definite alcune funzioni e variabili e il loro significato.&lt;br /&gt;
&lt;br /&gt;
(Michele, 3 agosto)&lt;br /&gt;
&lt;br /&gt;
== Porte ed eventi (comunicazione tra esperti) ==&lt;br /&gt;
&lt;br /&gt;
Cosa facciamo? Una porta sola in brian e mandiamo i vari messaggi oppure una porta per ogni tipo di agente? Io propenderei per la seconda così si semplifica molto il lavoro di comprendere da chi arriva il messaggio&lt;br /&gt;
&lt;br /&gt;
Ho visto un po gli eventi e stavo pensando che:&lt;br /&gt;
&lt;br /&gt;
- gli agenti che devono inviare dati ad altri agenti possono usare le porte;&lt;br /&gt;
- quando un agente deve invece reagire a qualcosa che è accaduto possiamo usare gli eventi.&lt;br /&gt;
&lt;br /&gt;
Penso che la maggior parte degli agenti comunichi qualche dato.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian ==&lt;br /&gt;
&lt;br /&gt;
Anche secondo me è bene fare in Brian una porta per ogni agente con cui comunicare.&lt;br /&gt;
Ho visto che in &amp;quot;msg.h&amp;quot; sono definiti i vari tipi di messaggio. Nel nostro caso Brian si limita a comunicare con motorExpert e odoExpert; quindi dovremo mettere in Brian due porte di comuncazione. &lt;br /&gt;
&lt;br /&gt;
Gli agenti si scambiano messaggi in formato XML.&lt;br /&gt;
&lt;br /&gt;
Ti avevo scritto della funzione addOptions(), utilizzata nell'inizializzazione di BrianExpert: tale funzione utilizza la libreria boost c++.&lt;br /&gt;
&lt;br /&gt;
Non è così semplice riuscire a separare la nostra parte da tradurre dal resto del codice. Ad esempio, in Brian.cpp ci sono queste due righe di codice relative alla famosa lista di coppie nome-valore:&lt;br /&gt;
&lt;br /&gt;
mCL[SONAR_QUALITY_DATA]=SonarExpert::bad_quality;&lt;br /&gt;
...&lt;br /&gt;
mCL[HOKUYO_DATA_QUALITY_HEADER+names[0]]=HokuyoConfig::getInstance()-&amp;gt;getMaxQuality();&lt;br /&gt;
&lt;br /&gt;
che richiederebbero di tradurre anche la classe HokuyoConfig e il sonarExpert!&lt;br /&gt;
&lt;br /&gt;
(Michele, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== COmunicazione Espertio ==&lt;br /&gt;
&lt;br /&gt;
secondo me dovremo fare:&lt;br /&gt;
&lt;br /&gt;
- porta in lettura e scrittura per comunicare con command manager (che forse è meglio rinominare in joypadExpert o qualcosa di simile)&lt;br /&gt;
- porta in scrittura per motorExpert (non vorrei dire una cavolata ma è Brian che manda messaggi a motor expert giusto?)&lt;br /&gt;
- porta in lettura (e/o scrittura) verso odoExpert&lt;br /&gt;
&lt;br /&gt;
forse noi non dobbiamo preoccuparci più di tanto di quello, forse possiamo usare la configurazione con l'XML delle proprietà per riuscire a gestire quelle cose.. oppure teniamo la configurazione come è nel codice&lt;br /&gt;
&lt;br /&gt;
Ho un grosso problema.. non riesco a far funzionare le porte aggiunte con addEvent() come invece dovrebbero funzionare, ovvero appena arriva un dato dovrebbe essere eseguito l'updateHook().. tu hai per caso provato&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Brian-MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
Brian può anche ricevere i messaggi da motorExpert:&lt;br /&gt;
&lt;br /&gt;
//in BrianExpert.cpp&lt;br /&gt;
ExecStatus BrianExpert::Execute(){&lt;br /&gt;
   ...&lt;br /&gt;
   if(ReceiveLastMessage(MSG_FROM_MOTION_BRIEF,buffer,false)&amp;gt;0){&lt;br /&gt;
      InterfaceSetDatalex_memory((const char *)buffer,this);&lt;br /&gt;
      DBG(&amp;quot;message from motion\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//in GestioneAgenti.cpp&lt;br /&gt;
void GestioneAgenti::createMapMessageAgents(){&lt;br /&gt;
   //aggiungere per ogni tipo di messaggio gli agenti che lo possono produrre&lt;br /&gt;
   ...&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF]=vector&amp;lt;string&amp;gt;();&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF].push_back(motor_agent);&lt;br /&gt;
&lt;br /&gt;
Guardo anch'io la addEvent e poi ti faccio sapere!&lt;br /&gt;
&lt;br /&gt;
La parte del controllore fuzzy è più ampia del previsto: sempre in BrianExpert viene richiamato il costruttore MrBrian, che è definito in lurch-control/brian/src/brian.cpp. E quest'ultimo file a sua volta richiama tante altri file della stessa cartella.&lt;br /&gt;
&lt;br /&gt;
(Michele, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pensando sempre a come potremmmo fare per le porte e gli eventi, forse potremmo dedicare le porte ad ogni esperto come dicevamo, poi dove vengono usati i messaggi noi usiamo gli eventi (che usano il publish subscribe).. sarebbe bello riuscire ad usare le addEventPort, ma non so come mai faccio fatica a farle andare. ho dato un occhi a odometry expert e sembra abbastanza simile a joypad expert perchè legge i dati da una porta seriale.&lt;br /&gt;
&lt;br /&gt;
per MrBrian ho visto, è un programma che ha fatto restelli&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
==  Prova addEventPort di Orocos ==&lt;br /&gt;
&lt;br /&gt;
Sembra proprio che una volta ricevuto il messaggio sulla porta, non venga richiamata la funzione updateHook(); oggi riprovo ancora!&lt;br /&gt;
Sì come dicevi tu potremmo usare entrambi: messaggi attraverso le porte (quando è necessario comunicare dei dati) e gli eventi&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
Ho utilizzato la addEventPort sul vecchio codice che ti avevo mandato l'ultima volta.&lt;br /&gt;
In pratica ci sono due task:&lt;br /&gt;
-Brian periodicamente scrive &amp;quot;sono Brian&amp;quot; e invia una stringa all'esperto motore&lt;br /&gt;
- l'esperto motore appena riceve il dato sulla porta richiama l'updateHook(), scrivendo così &amp;quot;sono Motor Expert&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
(Michele, 7 agosto)&lt;br /&gt;
&lt;br /&gt;
Oggi ho finalmente capito (grazie al codice che mi hai mandato) come mai  non funziona.. o meglio ho capito che funziona solo se usiamo una bufferPort e prima di fare la connectPorts bisogna chiamare la configure dei task (probabilmente dovuto ad un BUG di Orocos).&lt;br /&gt;
&lt;br /&gt;
Si direi che dobbiamo includere nel nostro progetto il programma MrBrian di Restelli&lt;br /&gt;
&lt;br /&gt;
Possiamo istanziare un Task attraverso una classe come launch nel main oppure all'interno del task dove serve, ad esempio command manager possiamo istanziarlo in brian oppure il Launch. Secondo te cosa conviene fare? Secondo me è meglio creare i task nel main in modo da dare una migliore visione di insieme.&lt;br /&gt;
&lt;br /&gt;
Poi ho visto che alla fine odoExpert è simile al joypadExpert perchè deve comunicare con la scheda dell odometria&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;br /&gt;
&lt;br /&gt;
Sì anche secondo me è meglio far partire tutti gli agenti all'inizio nel main: tanto non ne abbiamo tanti!&lt;br /&gt;
&lt;br /&gt;
(Michele, 9 agosto)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12176</id>
		<title>Talk:Porting su Orocos di alcuni moduli software di Lurch</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12176"/>
				<updated>2010-08-16T20:58:59Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /* Prova addEventPort di Orocos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dobbiamo sistemare la deadzone per l'esperto del joystick, poi dobbiamo decidere come passare a brian le coppie nome valore per il controllore fuzzy. Potremmo usare un dataflow per questo, invece un insieme di porte per ogni esperto con il quale deve dialogare brian&lt;br /&gt;
&lt;br /&gt;
== Cosa dobbiamo ancora fare ==&lt;br /&gt;
Ricapitolando le cose fatte fin'ora:&lt;br /&gt;
&lt;br /&gt;
- Interfaccia con la porta seriale;&lt;br /&gt;
- JoystickExpert&lt;br /&gt;
- configurazione di Eclipse per usare orocos senza gestire manualmente makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora:&lt;br /&gt;
&lt;br /&gt;
- dobbiamo fare Brian&lt;br /&gt;
- bisogna mettere a posto il fatto delle dead zone&lt;br /&gt;
&lt;br /&gt;
ci conviene dividere il lavoro.. per quanto riguarda il real time credo che un po' tutti i componente diventano real time con orocos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Agenti - BrianExpert ==&lt;br /&gt;
&lt;br /&gt;
Secondo me, bisogna esplicitare il fatto che un thread debba essere svolto in modo real time.&lt;br /&gt;
&lt;br /&gt;
Bisogna individuare gli agenti da rendere real time.&lt;br /&gt;
&lt;br /&gt;
Sto ripassando il codice relativo a Brian e in particolare la lista di coppie nome-valore in input al controllore fuzzy e la lista con le variabili di uscita.&lt;br /&gt;
&lt;br /&gt;
(Michele, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Deadzone e comunicazione agenti ==&lt;br /&gt;
&lt;br /&gt;
fatta la classe per la dead zone, ora bisogna solo applicarla;&lt;br /&gt;
&lt;br /&gt;
per Brian ho pensato che lo scambio di messaggi tra i vari agenti si può fare con le porte, cioè&lt;br /&gt;
&lt;br /&gt;
- uso readDataPort per ogni agente da cui arrivano messaggi &lt;br /&gt;
- uso writeDataProt per ogni agente a cui mandare messaggi&lt;br /&gt;
&lt;br /&gt;
quindi ho creato la classe commandManagerFake per usarla per sperimentare la modifica che riguarda la comunicazione tra command manager e brian. Infatti ora facciamo leggere a brian la velocità del robot solo tramite un metodo, per fare invece una cosa più generale conviene fare anche questo con le porte, magari fare così:&lt;br /&gt;
&lt;br /&gt;
CommandManager task periodico che mette sulla porta (magari bufferizzata) il rho e teta che legge dalla seriale; Brian legge dalla porta quando ne ha bisogno (forse con la porta bufferizzata è più un casino perchè bisogna fare in modo che brian legga dati &amp;quot;recenti&amp;quot; quindi alcuni dati bufferizzati devono essere eliminati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 2 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian Expert ==&lt;br /&gt;
&lt;br /&gt;
Sto traducendo l'agente BrianExpert secondo lo schema su cui si basa Orocos: configureHook(), startHook(), updateHook() ecc. Ho visto che anche loro avevano fatto qualcosa di simile per ogni agente - funzioni Initialize(), Execute() e EndWork().&lt;br /&gt;
&lt;br /&gt;
Nel loro BrianExpert.cpp ci sono anche molti rifermenti a tipi di messaggi che noi non useremo (ad esempio quelli dei sensori Hokuyo).&lt;br /&gt;
&lt;br /&gt;
Sto cercando di capire il funzionamento della funzione di configurazione addOptions().&lt;br /&gt;
&lt;br /&gt;
Ti mando per mail&lt;br /&gt;
-una parte di codice relativa ad una prova su Orocos: Brian invia una stringa a MotorExpert come dicevi tu utilizzando le porte&lt;br /&gt;
-una versione del loro BrianExpert.cpp cui ho aggiunto dei commenti su dove sono definite alcune funzioni e variabili e il loro significato.&lt;br /&gt;
&lt;br /&gt;
(Michele, 3 agosto)&lt;br /&gt;
&lt;br /&gt;
== Porte ed eventi (comunicazione tra esperti) ==&lt;br /&gt;
&lt;br /&gt;
Cosa facciamo? Una porta sola in brian e mandiamo i vari messaggi oppure una porta per ogni tipo di agente? Io propenderei per la seconda così si semplifica molto il lavoro di comprendere da chi arriva il messaggio&lt;br /&gt;
&lt;br /&gt;
Ho visto un po gli eventi e stavo pensando che:&lt;br /&gt;
&lt;br /&gt;
- gli agenti che devono inviare dati ad altri agenti possono usare le porte;&lt;br /&gt;
- quando un agente deve invece reagire a qualcosa che è accaduto possiamo usare gli eventi.&lt;br /&gt;
&lt;br /&gt;
Penso che la maggior parte degli agenti comunichi qualche dato.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian ==&lt;br /&gt;
&lt;br /&gt;
Anche secondo me è bene fare in Brian una porta per ogni agente con cui comunicare.&lt;br /&gt;
Ho visto che in &amp;quot;msg.h&amp;quot; sono definiti i vari tipi di messaggio. Nel nostro caso Brian si limita a comunicare con motorExpert e odoExpert; quindi dovremo mettere in Brian due porte di comuncazione. &lt;br /&gt;
&lt;br /&gt;
Gli agenti si scambiano messaggi in formato XML.&lt;br /&gt;
&lt;br /&gt;
Ti avevo scritto della funzione addOptions(), utilizzata nell'inizializzazione di BrianExpert: tale funzione utilizza la libreria boost c++.&lt;br /&gt;
&lt;br /&gt;
Non è così semplice riuscire a separare la nostra parte da tradurre dal resto del codice. Ad esempio, in Brian.cpp ci sono queste due righe di codice relative alla famosa lista di coppie nome-valore:&lt;br /&gt;
&lt;br /&gt;
mCL[SONAR_QUALITY_DATA]=SonarExpert::bad_quality;&lt;br /&gt;
...&lt;br /&gt;
mCL[HOKUYO_DATA_QUALITY_HEADER+names[0]]=HokuyoConfig::getInstance()-&amp;gt;getMaxQuality();&lt;br /&gt;
&lt;br /&gt;
che richiederebbero di tradurre anche la classe HokuyoConfig e il sonarExpert!&lt;br /&gt;
&lt;br /&gt;
(Michele, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== COmunicazione Espertio ==&lt;br /&gt;
&lt;br /&gt;
secondo me dovremo fare:&lt;br /&gt;
&lt;br /&gt;
- porta in lettura e scrittura per comunicare con command manager (che forse è meglio rinominare in joypadExpert o qualcosa di simile)&lt;br /&gt;
- porta in scrittura per motorExpert (non vorrei dire una cavolata ma è Brian che manda messaggi a motor expert giusto?)&lt;br /&gt;
- porta in lettura (e/o scrittura) verso odoExpert&lt;br /&gt;
&lt;br /&gt;
forse noi non dobbiamo preoccuparci più di tanto di quello, forse possiamo usare la configurazione con l'XML delle proprietà per riuscire a gestire quelle cose.. oppure teniamo la configurazione come è nel codice&lt;br /&gt;
&lt;br /&gt;
Ho un grosso problema.. non riesco a far funzionare le porte aggiunte con addEvent() come invece dovrebbero funzionare, ovvero appena arriva un dato dovrebbe essere eseguito l'updateHook().. tu hai per caso provato&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Brian-MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
Brian può anche ricevere i messaggi da motorExpert:&lt;br /&gt;
&lt;br /&gt;
//in BrianExpert.cpp&lt;br /&gt;
ExecStatus BrianExpert::Execute(){&lt;br /&gt;
   ...&lt;br /&gt;
   if(ReceiveLastMessage(MSG_FROM_MOTION_BRIEF,buffer,false)&amp;gt;0){&lt;br /&gt;
      InterfaceSetDatalex_memory((const char *)buffer,this);&lt;br /&gt;
      DBG(&amp;quot;message from motion\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//in GestioneAgenti.cpp&lt;br /&gt;
void GestioneAgenti::createMapMessageAgents(){&lt;br /&gt;
   //aggiungere per ogni tipo di messaggio gli agenti che lo possono produrre&lt;br /&gt;
   ...&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF]=vector&amp;lt;string&amp;gt;();&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF].push_back(motor_agent);&lt;br /&gt;
&lt;br /&gt;
Guardo anch'io la addEvent e poi ti faccio sapere!&lt;br /&gt;
&lt;br /&gt;
La parte del controllore fuzzy è più ampia del previsto: sempre in BrianExpert viene richiamato il costruttore MrBrian, che è definito in lurch-control/brian/src/brian.cpp. E quest'ultimo file a sua volta richiama tante altri file della stessa cartella.&lt;br /&gt;
&lt;br /&gt;
(Michele, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pensando sempre a come potremmmo fare per le porte e gli eventi, forse potremmo dedicare le porte ad ogni esperto come dicevamo, poi dove vengono usati i messaggi noi usiamo gli eventi (che usano il publish subscribe).. sarebbe bello riuscire ad usare le addEventPort, ma non so come mai faccio fatica a farle andare. ho dato un occhi a odometry expert e sembra abbastanza simile a joypad expert perchè legge i dati da una porta seriale.&lt;br /&gt;
&lt;br /&gt;
per MrBrian ho visto, è un programma che ha fatto restelli&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
==  Prova addEventPort di Orocos ==&lt;br /&gt;
&lt;br /&gt;
Sembra proprio che una volta ricevuto il messaggio sulla porta, non venga richiamata la funzione updateHook(); oggi riprovo ancora!&lt;br /&gt;
Sì come dicevi tu potremmo usare entrambi: messaggi attraverso le porte (quando è necessario comunicare dei dati) e gli eventi&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
Ho utilizzato la addEventPort sul vecchio codice che ti avevo mandato l'ultima volta.&lt;br /&gt;
In pratica ci sono due task:&lt;br /&gt;
-Brian periodicamente scrive &amp;quot;sono Brian&amp;quot; e invia una stringa all'esperto motore&lt;br /&gt;
- l'esperto motore appena riceve il dato sulla porta richiama l'updateHook(), scrivendo così &amp;quot;sono Motor Expert&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
(Michele, 7 agosto)&lt;br /&gt;
&lt;br /&gt;
Oggi ho finalmente capito (grazie al codice che mi hai mandato) come mai  non funziona.. o meglio ho capito che funziona solo se usiamo una bufferPort e prima di fare la connectPorts bisogna chiamare la configure dei task (probabilmente dovuto ad un BUG di Orocos).&lt;br /&gt;
&lt;br /&gt;
Si direi che dobbiamo includere nel nostro progetto il programma MrBrian di Restelli&lt;br /&gt;
&lt;br /&gt;
Possiamo istanziare un Task attraverso una classe come launch nel main oppure all'interno del task dove serve, ad esempio command manager possiamo istanziarlo in brian oppure il Launch. Secondo te cosa conviene fare? Secondo me è meglio creare i task nel main in modo da dare una migliore visione di insieme.&lt;br /&gt;
&lt;br /&gt;
Poi ho visto che alla fine odoExpert è simile al joypadExpert perchè deve comunicare con la scheda dell odometria&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	<entry>
		<id>https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12175</id>
		<title>Talk:Porting su Orocos di alcuni moduli software di Lurch</title>
		<link rel="alternate" type="text/html" href="https://airwiki.elet.polimi.it/index.php?title=Talk:Porting_su_Orocos_di_alcuni_moduli_software_di_Lurch&amp;diff=12175"/>
				<updated>2010-08-16T20:58:15Z</updated>
		
		<summary type="html">&lt;p&gt;AndreaRomanoni: /*  Prova addEventPort di Orocos */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dobbiamo sistemare la deadzone per l'esperto del joystick, poi dobbiamo decidere come passare a brian le coppie nome valore per il controllore fuzzy. Potremmo usare un dataflow per questo, invece un insieme di porte per ogni esperto con il quale deve dialogare brian&lt;br /&gt;
&lt;br /&gt;
== Cosa dobbiamo ancora fare ==&lt;br /&gt;
Ricapitolando le cose fatte fin'ora:&lt;br /&gt;
&lt;br /&gt;
- Interfaccia con la porta seriale;&lt;br /&gt;
- JoystickExpert&lt;br /&gt;
- configurazione di Eclipse per usare orocos senza gestire manualmente makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora:&lt;br /&gt;
&lt;br /&gt;
- dobbiamo fare Brian&lt;br /&gt;
- bisogna mettere a posto il fatto delle dead zone&lt;br /&gt;
&lt;br /&gt;
ci conviene dividere il lavoro.. per quanto riguarda il real time credo che un po' tutti i componente diventano real time con orocos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Agenti - BrianExpert ==&lt;br /&gt;
&lt;br /&gt;
Secondo me, bisogna esplicitare il fatto che un thread debba essere svolto in modo real time.&lt;br /&gt;
&lt;br /&gt;
Bisogna individuare gli agenti da rendere real time.&lt;br /&gt;
&lt;br /&gt;
Sto ripassando il codice relativo a Brian e in particolare la lista di coppie nome-valore in input al controllore fuzzy e la lista con le variabili di uscita.&lt;br /&gt;
&lt;br /&gt;
(Michele, 26 luglio)&lt;br /&gt;
&lt;br /&gt;
== Deadzone e comunicazione agenti ==&lt;br /&gt;
&lt;br /&gt;
fatta la classe per la dead zone, ora bisogna solo applicarla;&lt;br /&gt;
&lt;br /&gt;
per Brian ho pensato che lo scambio di messaggi tra i vari agenti si può fare con le porte, cioè&lt;br /&gt;
&lt;br /&gt;
- uso readDataPort per ogni agente da cui arrivano messaggi &lt;br /&gt;
- uso writeDataProt per ogni agente a cui mandare messaggi&lt;br /&gt;
&lt;br /&gt;
quindi ho creato la classe commandManagerFake per usarla per sperimentare la modifica che riguarda la comunicazione tra command manager e brian. Infatti ora facciamo leggere a brian la velocità del robot solo tramite un metodo, per fare invece una cosa più generale conviene fare anche questo con le porte, magari fare così:&lt;br /&gt;
&lt;br /&gt;
CommandManager task periodico che mette sulla porta (magari bufferizzata) il rho e teta che legge dalla seriale; Brian legge dalla porta quando ne ha bisogno (forse con la porta bufferizzata è più un casino perchè bisogna fare in modo che brian legga dati &amp;quot;recenti&amp;quot; quindi alcuni dati bufferizzati devono essere eliminati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Andrea, 2 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian Expert ==&lt;br /&gt;
&lt;br /&gt;
Sto traducendo l'agente BrianExpert secondo lo schema su cui si basa Orocos: configureHook(), startHook(), updateHook() ecc. Ho visto che anche loro avevano fatto qualcosa di simile per ogni agente - funzioni Initialize(), Execute() e EndWork().&lt;br /&gt;
&lt;br /&gt;
Nel loro BrianExpert.cpp ci sono anche molti rifermenti a tipi di messaggi che noi non useremo (ad esempio quelli dei sensori Hokuyo).&lt;br /&gt;
&lt;br /&gt;
Sto cercando di capire il funzionamento della funzione di configurazione addOptions().&lt;br /&gt;
&lt;br /&gt;
Ti mando per mail&lt;br /&gt;
-una parte di codice relativa ad una prova su Orocos: Brian invia una stringa a MotorExpert come dicevi tu utilizzando le porte&lt;br /&gt;
-una versione del loro BrianExpert.cpp cui ho aggiunto dei commenti su dove sono definite alcune funzioni e variabili e il loro significato.&lt;br /&gt;
&lt;br /&gt;
(Michele, 3 agosto)&lt;br /&gt;
&lt;br /&gt;
== Porte ed eventi (comunicazione tra esperti) ==&lt;br /&gt;
&lt;br /&gt;
Cosa facciamo? Una porta sola in brian e mandiamo i vari messaggi oppure una porta per ogni tipo di agente? Io propenderei per la seconda così si semplifica molto il lavoro di comprendere da chi arriva il messaggio&lt;br /&gt;
&lt;br /&gt;
Ho visto un po gli eventi e stavo pensando che:&lt;br /&gt;
&lt;br /&gt;
- gli agenti che devono inviare dati ad altri agenti possono usare le porte;&lt;br /&gt;
- quando un agente deve invece reagire a qualcosa che è accaduto possiamo usare gli eventi.&lt;br /&gt;
&lt;br /&gt;
Penso che la maggior parte degli agenti comunichi qualche dato.&lt;br /&gt;
&lt;br /&gt;
(Andrea, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== Brian ==&lt;br /&gt;
&lt;br /&gt;
Anche secondo me è bene fare in Brian una porta per ogni agente con cui comunicare.&lt;br /&gt;
Ho visto che in &amp;quot;msg.h&amp;quot; sono definiti i vari tipi di messaggio. Nel nostro caso Brian si limita a comunicare con motorExpert e odoExpert; quindi dovremo mettere in Brian due porte di comuncazione. &lt;br /&gt;
&lt;br /&gt;
Gli agenti si scambiano messaggi in formato XML.&lt;br /&gt;
&lt;br /&gt;
Ti avevo scritto della funzione addOptions(), utilizzata nell'inizializzazione di BrianExpert: tale funzione utilizza la libreria boost c++.&lt;br /&gt;
&lt;br /&gt;
Non è così semplice riuscire a separare la nostra parte da tradurre dal resto del codice. Ad esempio, in Brian.cpp ci sono queste due righe di codice relative alla famosa lista di coppie nome-valore:&lt;br /&gt;
&lt;br /&gt;
mCL[SONAR_QUALITY_DATA]=SonarExpert::bad_quality;&lt;br /&gt;
...&lt;br /&gt;
mCL[HOKUYO_DATA_QUALITY_HEADER+names[0]]=HokuyoConfig::getInstance()-&amp;gt;getMaxQuality();&lt;br /&gt;
&lt;br /&gt;
che richiederebbero di tradurre anche la classe HokuyoConfig e il sonarExpert!&lt;br /&gt;
&lt;br /&gt;
(Michele, 4 agosto)&lt;br /&gt;
&lt;br /&gt;
== COmunicazione Espertio ==&lt;br /&gt;
&lt;br /&gt;
secondo me dovremo fare:&lt;br /&gt;
&lt;br /&gt;
- porta in lettura e scrittura per comunicare con command manager (che forse è meglio rinominare in joypadExpert o qualcosa di simile)&lt;br /&gt;
- porta in scrittura per motorExpert (non vorrei dire una cavolata ma è Brian che manda messaggi a motor expert giusto?)&lt;br /&gt;
- porta in lettura (e/o scrittura) verso odoExpert&lt;br /&gt;
&lt;br /&gt;
forse noi non dobbiamo preoccuparci più di tanto di quello, forse possiamo usare la configurazione con l'XML delle proprietà per riuscire a gestire quelle cose.. oppure teniamo la configurazione come è nel codice&lt;br /&gt;
&lt;br /&gt;
Ho un grosso problema.. non riesco a far funzionare le porte aggiunte con addEvent() come invece dovrebbero funzionare, ovvero appena arriva un dato dovrebbe essere eseguito l'updateHook().. tu hai per caso provato&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
== Comunicazione Brian-MotorExpert ==&lt;br /&gt;
&lt;br /&gt;
Brian può anche ricevere i messaggi da motorExpert:&lt;br /&gt;
&lt;br /&gt;
//in BrianExpert.cpp&lt;br /&gt;
ExecStatus BrianExpert::Execute(){&lt;br /&gt;
   ...&lt;br /&gt;
   if(ReceiveLastMessage(MSG_FROM_MOTION_BRIEF,buffer,false)&amp;gt;0){&lt;br /&gt;
      InterfaceSetDatalex_memory((const char *)buffer,this);&lt;br /&gt;
      DBG(&amp;quot;message from motion\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//in GestioneAgenti.cpp&lt;br /&gt;
void GestioneAgenti::createMapMessageAgents(){&lt;br /&gt;
   //aggiungere per ogni tipo di messaggio gli agenti che lo possono produrre&lt;br /&gt;
   ...&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF]=vector&amp;lt;string&amp;gt;();&lt;br /&gt;
   messageAgents[MSG_FROM_MOTION_BRIEF].push_back(motor_agent);&lt;br /&gt;
&lt;br /&gt;
Guardo anch'io la addEvent e poi ti faccio sapere!&lt;br /&gt;
&lt;br /&gt;
La parte del controllore fuzzy è più ampia del previsto: sempre in BrianExpert viene richiamato il costruttore MrBrian, che è definito in lurch-control/brian/src/brian.cpp. E quest'ultimo file a sua volta richiama tante altri file della stessa cartella.&lt;br /&gt;
&lt;br /&gt;
(Michele, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pensando sempre a come potremmmo fare per le porte e gli eventi, forse potremmo dedicare le porte ad ogni esperto come dicevamo, poi dove vengono usati i messaggi noi usiamo gli eventi (che usano il publish subscribe).. sarebbe bello riuscire ad usare le addEventPort, ma non so come mai faccio fatica a farle andare. ho dato un occhi a odometry expert e sembra abbastanza simile a joypad expert perchè legge i dati da una porta seriale.&lt;br /&gt;
&lt;br /&gt;
per MrBrian ho visto, è un programma che ha fatto restelli&lt;br /&gt;
&lt;br /&gt;
(Andrea, 6 agosto)&lt;br /&gt;
&lt;br /&gt;
==  Prova addEventPort di Orocos ==&lt;br /&gt;
&lt;br /&gt;
Sembra proprio che una volta ricevuto il messaggio sulla porta, non venga richiamata la funzione updateHook(); oggi riprovo ancora!&lt;br /&gt;
Sì come dicevi tu potremmo usare entrambi: messaggi attraverso le porte (quando è necessario comunicare dei dati) e gli eventi&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
Ho utilizzato la addEventPort sul vecchio codice che ti avevo mandato l'ultima volta.&lt;br /&gt;
In pratica ci sono due task:&lt;br /&gt;
-Brian periodicamente scrive &amp;quot;sono Brian&amp;quot; e invia una stringa all'esperto motore&lt;br /&gt;
- l'esperto motore appena riceve il dato sulla porta richiama l'updateHook(), scrivendo così &amp;quot;sono Motor Expert&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Quindi andre cosa dici copio il programma di Restelli? Tanto non ha a che fare con i thread, non manda messaggi e quindi in teoria va bene così com'è!&lt;br /&gt;
&lt;br /&gt;
(Michele, 7 agosto)&lt;br /&gt;
&lt;br /&gt;
Oggi ho finalmente capito (grazie al codice che mi hai mandato) come mai  non funziona.. o meglio ho capito che funziona solo se usiamo una bufferPort e prima di fare la connectPorts bisogna chiamare la configure dei task (probabilmente dovuto ad un BUG di Orocos).&lt;br /&gt;
&lt;br /&gt;
Si direi che lo dobbiamo includere nel nostro progetto il programma MrBrian di Restelli&lt;br /&gt;
&lt;br /&gt;
una domanda.. Possiamo istanziare un Task attraverso una classe come launch nel main oppure all'interno del task dove serve, ad esempio command manager possiamo istanziarlo in brian oppure il Launch. Secondo te cosa conviene fare? Secondo me è meglio creare i task nel main in modo da dare una migliore visione di insieme.&lt;br /&gt;
&lt;br /&gt;
Poi ho visto che alla fine odoExpert è simile al joypadExpert perchè deve comunicare con la scheda dell odometria&lt;br /&gt;
&lt;br /&gt;
(Andrea, 8 agosto)&lt;/div&gt;</summary>
		<author><name>AndreaRomanoni</name></author>	</entry>

	</feed>