tag:blogger.com,1999:blog-67322046388055645412024-03-05T13:59:59.609-08:00RoboticsMy projects !Aniket Tatipamulahttp://www.blogger.com/profile/00492182099405622397noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-6732204638805564541.post-49663356266342247772018-07-23T08:53:00.000-07:002018-07-23T09:40:34.648-07:00Are you planning to use drones for your Business? READ THIS FIRST.<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="reader-flag-content__wrapper mb4 clear-both" data-ember-action-7857="7857" data-ember-action="" style="-webkit-text-stroke-width: 0px; background: 0px 0px rgb(255, 255, 255); border: 0px; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.9); display: flex; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 1.5rem; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; justify-content: flex-end; letter-spacing: normal; margin: 0px 0px 16px; orphans: 2; outline: 0px; padding: 0px; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; widows: 2; word-spacing: 0px;">
</div>
<br />
<div class="ember-view" id="ember7856" style="-webkit-text-stroke-width: 0px; background: 0px 0px rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px; orphans: 2; outline: 0px; padding: 0px; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="reader-article-content" style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 16px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm9fl_uMM_ypcMrv3LRhxrm2a79rVa64B2A1L3U8GXTxwV0ED2ZnfNdQN9SmEsUY3Uq39Igux8ltdnWntnSOBBFRHM8tGH6BZVkwllrl5dHbGHkVqg3kw11HFKegZn3hCu_XB1vRESwyM/s1600/careersx.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="792" data-original-width="1600" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm9fl_uMM_ypcMrv3LRhxrm2a79rVa64B2A1L3U8GXTxwV0ED2ZnfNdQN9SmEsUY3Uq39Igux8ltdnWntnSOBBFRHM8tGH6BZVkwllrl5dHbGHkVqg3kw11HFKegZn3hCu_XB1vRESwyM/s400/careersx.jpg" width="400" /></a></div>
<div style="text-align: justify;">
A lot of things have been happening in the drone Industry. A new company coming up every month with a new concept. New ideas being tested for its feasibility. A lot of these concepts are yet to commercialize or are anywhere near widespread use. But there is one thing that small drones have proved that they can do a very good job at. And that is Aerial photography or simply put capturing photos/videos using a basic camera setup. Couple this setup with an intelligent drone which can do autonomous navigation and you have a powerful tool to do aerial surveys and inspections.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
As a prospective business owner or a manager who wishes to explore use of drones in his/her business.You probably have some common question in your mind. And most of the time the drone service providers steer people away from reality by showing them some flashy presentations / videos or assuring them of metrics that they themselves are not sure of in first place.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
In this article I hope to give a clearer picture of what expectations one can have by using a drone in his or her field. I may not cover all possible solutions but the ones that are widely used.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
You need to answer these questions for yourself.Starting with</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">INSPECTIONS</strong>:-</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
1. Does your business involve assets that have to be monitored ?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
2. Are those assets hard to reach by i.e are they tall , far , tricky to reach?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
3. Does photos (and its derivatives) alone solve your inspection problem?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
4. Kind of data expected Visual / NIR / Thermal ?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
If all your answers are yes then maybe using a drone could be useful in your business. The " maybe " is because of the cost associated with using the drone. As you explore more you would end up with some decisive metrics that you should worry about.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
1) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Resolution of the images</strong>:- Most of the service provides use off the shelf DJI products so take a note of which equipment will be used. Main point to note is the camera specifications like Resolution (generally higher the better ) , Sensor Size ( Higher the better ) , Zoom ( Depending upon how close the drone could fly from the asset choose ; ask for zoom capabilities if you are sure that the drone will not be able to fly very close )</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
2) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Range</strong> :- Maximum limit of height or distance. Most of the drones available today would have enough range for most applications. But in case you are sure your asset is far away do check with the vendor.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
3) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Operation time</strong> :- Ask how much time would be needed for inspecting a single asset. Try to maximize the usage of drone by asking the service provider to carry extra batteries to maximize the data collected in 1 day.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<br style="box-sizing: inherit;" /></div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
4)<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Analytics</strong>:- Analysis that would be required on the imagery like extracting details , assessing damages , generating reports. Almost always the service provider may throw some confusing words with some AI and Machine learning in it. Strictly speaking it doesn't matter if the service provider is using AI or doing it manually as long as the assessment is within your time bounds and the costing is same. Don't just choose a vendor based on what he says check the reports personally to be sure of what you would get finally.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
5)<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Costing</strong> :- Depending upon the kind of drone the service provider brings the pricing would vary. Make a note of quoted value from different vendors with the similar drone. Also just don't cut short on Analytics ,a drone data in the form of just imagery is of no use. Either make provisions in-house or make sure the service provider does the necessary pre processing so that you get concise reports.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<br style="box-sizing: inherit;" /></div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">SURVEYING</strong>:-</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Drones seem to have taken surveying industry by storm. With the reduction of costs in photogrammetric processing software and access to cloud based processing the industry seems to be blooming. It seems like you don't again have to use the traditional ground based surveying techniques. Is that so?.NO ABOSLUTELY NOT.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Although the photogrammetric surveying technique is fast and relatively accurate. It doesn't solve all your problems. Naming a few like you don't get terrain information under the tree , terrain data in grasslands , terrain data in dense forests.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Again let's get back to the questions one should ask before opting for such survey.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
1) Is your land parcel huge ?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
2) Do you need the surveying to be done at a fast pace ?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
3) Is high resolution ortho photo must for your project ?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
4) Are you flexible with the changing accuracies over the entire parcel ? [yes it's true ! the data would be more accurate near GCPS ]</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
5) Is your accuracy requirement between 10 - 20 cms ( Elevation )and not less [ A lot of vendors would be happy to give you accuracy of 1 - 2 cm ( Elevation ) be careful with such claims ; if the accuracy is of utmost importance for your project do cross check carefully ]</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
6) Do you need a dense point data for cut fill or volume calculations ?</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<br style="box-sizing: inherit;" /></div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
If all or few of your answers are yes then you can think of using drones for your project. Some key metrics to take a note of</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<br style="box-sizing: inherit;" /></div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
1) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Ground Sampling Distance</strong> :- Well this is the most important metric. This is what defines the resolution and indirectly the accuracy of your data. In simple terms it's the length or breadth of the ground that is covered in one pixel. The smaller the GSD the better the quality of data. But that just doesn't mean having very low GSD is a way to go. Defining a GSD would indirectly define the time required for surveying and processing. To get a small GSD ( clear picture ) the drone would have to fly low and have to do many passes over the site thus increasing the time of acquisition and more number if images would lead to more time being consumed for processing. Ideally a GSD of 2-3 cm would give you accuracy of elevation in the range of 10-15 cm.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
2) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">GCP ( Ground Control Points </strong>) :- As stated earlier accuracy depends on the GSD and Control points laid on the ground. Control points are nothing but markers on ground whose readings have been taken using Total Station or DGPS. Around 2-5 points per square kilometer are sufficient for most cases .These points will be used by the Photogrammetric processing software to correct the model errors. This is a very critical step. Chances are the final data you receive may be incorrect only due to incorrect readings of GCP OR using very few of them.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
There is also a new module that people offer with survey package called as PPK .It's basically a GPS placed on the drone whose data would later be corrected using the data gathered from the ground static GPS. But that doesn't mean you would not need any GCPs you would still need a few of them. Also be very careful while using PPK and do necessary cross checks on the ground. Also the Static GCP should be placed on a know point for the data to match with surrounding bench mark elevation.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
3) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Side Lap And Over Lap between photos</strong> :- Although this part is usually a headache of the vendor. But a poor data set with low side lap and overlap would lead to highly inaccurate data being generated. General rule of thumb is to have side lap greater than 60 % and overlap greater than 80 %.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
4) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Camera Quality</strong> :- A better camera with better sensor size would lead to a better outcome. Especially if you are planning to use the Orthophoto for feature extraction and other purposes. Always check which drone/camera the vendor is using.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
5) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Flight Time / Range</strong> :- Make sure you know the amount of time the vendor would take to cover your project. Ideally a drone could easily cover 5-10sqkm of area OR 10-15 KM of linear survey in a day. You could gather way more depending upon the type of drone and the GSD expected.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
6) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Processing Time</strong> :- Always make sure that you ask for the time taken for processing. It could run into days depending upon the images and GSD. Also photogrammetric processing do generate error some time. Make sure you personally verify the outputs with the data gathered on ground.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
7) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">DSM / DTM</strong> :- The key point to note while dealing with drone survey is that you get Digital Surface Model. SO basically your elevations value represent the surface of a tree or a structure and not ground beneath. In most of the cases people use automatic workflow to remove structures and generate the terrain Model. Again this is an approximation and almost always there would be some error that is generated due to this. So be very clear about your requirements in terms of how the DSM to DTM would affect your calculations.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<br style="box-sizing: inherit;" /></div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
8) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Costing</strong> :- The pricing is generally defined by the unit area or unit length along with the GSD requirements. Plus the cost of laying and recording Ground Control Point. Don't just blindly go with the vendor who quotes less. Do get into the details like the no of GCPs laid , the equipment that would be used , processing software being used , the work flow that would be followed. Always ask for missions before hand to check if the vendor know what he is going to do on field.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Apart from the above metrics nothing beats the educated and knowledgeable service provider. No matter how powerful a tool you have a poorly educated vendor would not be able to deliver that excellent outcome you were expecting by using drones.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Be very careful of vendors that charge you extremely low. They almost always have very limited experience in usage of drones. Chances are they are going to cut short on a lot of things. This could lead to a bigger problem if your designs or calculations are based on incorrect information.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<br style="box-sizing: inherit;" /></div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">VIDEO MONITORING</strong>:-</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Lastly it's the plain old simple video recording of the project. Nothing fancy here if your project can be shown better in an aerial photo/video and the service cost is justifiable go for it.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
points to be noted</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
1) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Resolution</strong> :- It could be HD , Full HD or 4K. Most dji drones offer 4K resolution. Higher the better.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
2) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Annotations</strong> :- Overlay critical information on the video. It could be location , asset , metrics etc.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
4) <strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Good Pilot</strong> :- A good pilot is must unless you are planning to capture video using Autonomous Navigation.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
This service is usually very cheaply available. Do cross check between vendors before finalizing anyone.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
<br style="box-sizing: inherit;" /></div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Hopefully I was able to give some clarity with regards to usage of drones in your domain. In case you are still uncertain whether drones are helpful in your business you can reach me personally. I would be happy to help you out.</div>
</div>
<div style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.75); font-family: "Source Serif Pro", serif; font-size: 20px; font-weight: 400; line-height: 3.2rem; margin: 3.2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<div style="text-align: justify;">
Thank you for reading.</div>
</div>
<h3 style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-size: 20px; font-weight: 600; line-height: 28px; margin: 2.4rem 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Aniket A Tatipamula</strong></h3>
<h3 style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-size: 20px; font-weight: 600; line-height: 28px; margin: 2.4rem 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Director | Airpix</strong></h3>
<h3 style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-size: 20px; font-weight: 600; line-height: 28px; margin: 2.4rem 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">E: aniket@airpix.in</strong></h3>
<h3 style="background: 0px 0px; border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-size: 20px; font-weight: 600; line-height: 28px; margin: 2.4rem 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<strong style="background: 0px 0px; border: 0px; box-sizing: inherit; font-size: 20px; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">M: 9028208536</strong></h3>
</div>
</div>
</div>
Aniket Tatipamulahttp://www.blogger.com/profile/00492182099405622397noreply@blogger.com2tag:blogger.com,1999:blog-6732204638805564541.post-62533896446247646422012-12-11T11:28:00.000-08:002017-10-23T02:46:31.873-07:00Ball Tracking / Detection using OpenCV<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "courier new" , "courier" , monospace;"> Ball detection is pretty easy on OpenCV. So to start with lets describe what steps we will go through.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="color: red; font-family: "courier new" , "courier" , monospace;"><b> <a href="https://docs.google.com/folder/d/0B7lDtwez94H3dU8wb3lIYUxPTTQ/edit" target="_blank">LINK TO THE CODE</a></b></span><br />
<span style="color: red; font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/3RIDREZB-Og?feature=player_embedded' frameborder='0'></iframe></div>
<span style="color: red; font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">1.Load an image / start a video capture</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimqtW69WPbmPjAtwLehbGO0koAdx46g018dr7UuOaKiNhOBstetrVh8gjLu_5KBOrNw__aQzR13I4MwlI8HtPzK7m9YVe7bC2JenCN8MrlRk4Rh_3jc2USr8tYcJqjR2cE3ZTORKQdCG8/s1600/10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimqtW69WPbmPjAtwLehbGO0koAdx46g018dr7UuOaKiNhOBstetrVh8gjLu_5KBOrNw__aQzR13I4MwlI8HtPzK7m9YVe7bC2JenCN8MrlRk4Rh_3jc2USr8tYcJqjR2cE3ZTORKQdCG8/s1600/10.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">2.Convert image from RGB space to HSV space . HSV(hue saturation value) space gives us better results while doing color based segmentation.</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjExEhZAFQ6x7CWGCqOr69uNduf8fJA2sjKi4cRTy4RsS7dgzhduov7WF_4P8F9FuQ_BU-seqpYrxdoBwF425Kz6lgy2JR1pxWdFYk5Aqi-StfY6skBZmYOm9UTJAO9FoYb-KG1lT6hi8o/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjExEhZAFQ6x7CWGCqOr69uNduf8fJA2sjKi4cRTy4RsS7dgzhduov7WF_4P8F9FuQ_BU-seqpYrxdoBwF425Kz6lgy2JR1pxWdFYk5Aqi-StfY6skBZmYOm9UTJAO9FoYb-KG1lT6hi8o/s1600/2.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: "courier new" , "courier" , monospace;">3.Seperate Image into its 3 component images(i.e H S V each of which is a one dimensional image or intensity image)</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8IRMqBB_Hpw_vzb2dLX_IjCzNYUJM59a5GkpDgbguuh4z78DKq3QqlQGpiMHzq0fLlrdDz-JZXUU01e4vBGfxIl80_wlhRBF8vWNDTNx5tZCyrpgvZoMbIfZ8yX1-KwEAdn9buBb3ZjM/s1600/7.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8IRMqBB_Hpw_vzb2dLX_IjCzNYUJM59a5GkpDgbguuh4z78DKq3QqlQGpiMHzq0fLlrdDz-JZXUU01e4vBGfxIl80_wlhRBF8vWNDTNx5tZCyrpgvZoMbIfZ8yX1-KwEAdn9buBb3ZjM/s1600/7.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">H component</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1sv9pK0AThW45UGEZOR1oNGVtWCkqS2QAWNtSQZdD2XHUNu1imdD7xpKbkHPNwTWNk7lbaLX14PbSAM0W89bhO-Ue-uUgJ5Wium6SM0qfHqp9Rb40CtvvqjwOcao2PJKz1OLRqINuFdw/s1600/8.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1sv9pK0AThW45UGEZOR1oNGVtWCkqS2QAWNtSQZdD2XHUNu1imdD7xpKbkHPNwTWNk7lbaLX14PbSAM0W89bhO-Ue-uUgJ5Wium6SM0qfHqp9Rb40CtvvqjwOcao2PJKz1OLRqINuFdw/s1600/8.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">S component</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMhGTlIHA5vijzMhjj8hqhTJ5uQa_yNHOeabR05XyCYGtf50timrXBmjRDtn4k03DbC9mgtTOTg6mDgNLgDg80jH1aCK4M9eGNRzymstpP5ksFUhDZE4p3N0tF8U_QAyWkNVJLogXSyvk/s1600/9.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMhGTlIHA5vijzMhjj8hqhTJ5uQa_yNHOeabR05XyCYGtf50timrXBmjRDtn4k03DbC9mgtTOTg6mDgNLgDg80jH1aCK4M9eGNRzymstpP5ksFUhDZE4p3N0tF8U_QAyWkNVJLogXSyvk/s1600/9.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">V component</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">4.Use a condition for intensity values in the image and get a Binary image.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> i.e let say we taken H intensity image .If our ball is red color .Then in this image we will find that the values of the pixel where the ball is present , lies in a specific range. so we define a condition for every pixel . if (pixel > threshold_min & </span><span style="font-family: "courier new" , "courier" , monospace;">pixel </span><span style="font-family: "courier new", courier, monospace;">< threshold_max</span><span style="font-family: "courier new", courier, monospace;"> </span><threshold_max span="span" style="font-family: "courier new", courier, monospace;"><span style="font-family: "courier new" , "courier" , monospace;">)= pixel of o/p image is 1 else it is zero.</span></threshold_max><br />
<br />
NOTE:<br />
<span style="color: red; font-family: "courier new" , "courier" , monospace;">FOR THE PURPOSE OF CALIBRATION WE HAVE 2 SLIDERS ON EACH COMPONENT IMAGE TO SET THE LOWER AND UPPER LIMIT OF PIXEL VALUES.</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSv_qpsjIw-EEEfUEviIM5AOUZ_EqKZdGJzqpQpzTJgALHjY7mgHqSyagkh1S5Z_nWGmxOCelL2NFNEldCpRJmx1iLojRCotamOLsixmRr-huLKrpulx8AucfiOVZxLQHITquszWTFRUE/s1600/4.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSv_qpsjIw-EEEfUEviIM5AOUZ_EqKZdGJzqpQpzTJgALHjY7mgHqSyagkh1S5Z_nWGmxOCelL2NFNEldCpRJmx1iLojRCotamOLsixmRr-huLKrpulx8AucfiOVZxLQHITquszWTFRUE/s1600/4.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">H component after condition</td></tr>
</tbody></table>
<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">We do this for all components i.e for S and V.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsH15-nZmwMXPBm_bWopYHd8uRbI3Ny8wznnwyXMHdfJYORgooMhvf5GEzElKODPpG21kYpgwLyVzDO2PFOxE8TDPzkWDgybEcvbXMvInjvu2omD6XVmij_f8k9TJu883szFryxott1hs/s1600/5.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsH15-nZmwMXPBm_bWopYHd8uRbI3Ny8wznnwyXMHdfJYORgooMhvf5GEzElKODPpG21kYpgwLyVzDO2PFOxE8TDPzkWDgybEcvbXMvInjvu2omD6XVmij_f8k9TJu883szFryxott1hs/s1600/5.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">S component after condition</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49kudV-rSAb7P9QP0YJuAuySNmZIp6prlDh-ydXSt96aHyytzCDQdnr1angshyK6L32639F-YhhO1VGdJUqY_7lmTn4VpBePdeEDx4Mv0T26vFTx98CNYgLb3prD5UgVOor9I2D-58WM/s1600/6.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49kudV-rSAb7P9QP0YJuAuySNmZIp6prlDh-ydXSt96aHyytzCDQdnr1angshyK6L32639F-YhhO1VGdJUqY_7lmTn4VpBePdeEDx4Mv0T26vFTx98CNYgLb3prD5UgVOor9I2D-58WM/s1600/6.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">V component after condition</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: "courier new" , "courier" , monospace;">5.Now we have three binary images( only black and only white) . Which has the region of ball as 1's and every thing else which has the intensity values greater(less) than threshold .The pixels that do not pass this conditions will be zero.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">6.We then combine all the above three Binary images (i.e we AND them all). All the pixels that are white in the three images will be white in the output of this step.</span><span style="font-family: "courier new" , "courier" , monospace;">So there will be regions too which will have 1's but with lower areas and of random shapes.</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicg85nQoWdr5t0lGMYHM4DCWTXhyphenhyphenB-Zrix15KQearJCdE7gaed1lLBD63NhGQyszVuQxsVzHn41z3KNJgP44SC_GnNyGPrfWgpAfPY8AXPYmnHS-qIQQg7Wv6QK0zjrtt-JRao6fVCnbc/s1600/3.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicg85nQoWdr5t0lGMYHM4DCWTXhyphenhyphenB-Zrix15KQearJCdE7gaed1lLBD63NhGQyszVuQxsVzHn41z3KNJgP44SC_GnNyGPrfWgpAfPY8AXPYmnHS-qIQQg7Wv6QK0zjrtt-JRao6fVCnbc/s1600/3.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Combined image</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: "courier new" , "courier" , monospace;">7.Now we use houghs transform on the output of last operation to find the regions which are circular in shape.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">8.Then we draw the marker on the detected circles as well as display the center and radius of the circles</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE2lzMoNSi8Ih8U8EWMwlD6u2-qbEvs0mLPE6mQD2LCOEz2WkE3phSOIZE5Dwl5Azn653_9x7bx-UgjdBCzgW50ig4DHa0JyopvzO8_S5qOTWEPAqcYQfop_2w4884Jl9sKZqGIgJl1Cg/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE2lzMoNSi8Ih8U8EWMwlD6u2-qbEvs0mLPE6mQD2LCOEz2WkE3phSOIZE5Dwl5Azn653_9x7bx-UgjdBCzgW50ig4DHa0JyopvzO8_S5qOTWEPAqcYQfop_2w4884Jl9sKZqGIgJl1Cg/s1600/1.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzOfBOzhXi5ytwqc4ovwLoqaOGYKQiVqfhafsgAOb_9lRg4nZjkUVxtb2ir-hA90DmttHxoYXqJfrzYiJM8jfJ3fFs6c-eWpPzbu31bqVTmHtfk7qdRi6sUPHQ7vq3flpXKSbgv5LdlEM/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzOfBOzhXi5ytwqc4ovwLoqaOGYKQiVqfhafsgAOb_9lRg4nZjkUVxtb2ir-hA90DmttHxoYXqJfrzYiJM8jfJ3fFs6c-eWpPzbu31bqVTmHtfk7qdRi6sUPHQ7vq3flpXKSbgv5LdlEM/s1600/1.jpg" width="320" /></a></div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
Aniket Tatipamulahttp://www.blogger.com/profile/00492182099405622397noreply@blogger.com16tag:blogger.com,1999:blog-6732204638805564541.post-71313469698674037922012-02-02T23:33:00.000-08:002012-06-12T06:54:08.912-07:00Setting up opencv on DEV C++<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<div>
This is really simple if you know what to do .<br />
<div>
<br /></div>
<div>
<ol>
<li><a href="http://sourceforge.net/projects/opencvlibrary/">Download OpenCV</a> : install ; check the path where it is installed. for eg C:\Opencv2.x</li>
<li><a href="http://www.bloodshed.net/dev/devcpp.html">Download DevCPP</a>: install ;</li>
</ol>
</div>
<div>
<br /></div>
<div>
Once done with both</div>
<div>
Open Dev Cpp.Go to TOOLS - COMPILER OPTIONS . ADD new compiler (click on plus sign).</div>
<div>
Name it OpenCV.</div>
<div>
<br /></div>
<div>
Add these lines and tick</div>
<div>
Add these foll commands while calling compiler</div>
<div>
-L"C:\OpenCV\lib" -lcxcore210 -lcv210 -lcvaux210 -lhighgui210 -lml210</div>
<div>
<br /></div>
<div>
while doing so change the lib path( C:\OpenCV\lib) according to the path you have saved.GO to the lib folder in opencv dir and check for the above files linked .eg cxcore210 check if there is some other name instead and replace accordingly.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
Add these lines and tick</div>
<div>
Add these foll commands to the linker command line</div>
<div>
-lcxcore210 -lcv210 -lcvaux210 -lhighgui210 -lml210</div>
<div>
<br /></div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTgn1PoHYptVOYZ2uWtRI_gYGf3z7uOnXhGqY0JGNynVIbBXw55xC0rsUX7Jfr4wpdvzF3qx5uYsOStIvFdjiWK5Z5zYb0CkjSSE4b1ErmmPao7OlusOf7XWPyWjiXyzmZH2ZnVVeiyoI/s400/1.PNG" /></div>
<div>
<br /></div>
Now go to <b>Directories</b></div>
<div>
<b><br /></b></div>
<div>
first in <b>Binaries </b>Add path to opencv Bin folder</div>
<div>
C:\OpenCV\bin</div>
<div>
again change it according to your bin path</div>
<div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiteiMjg5T6sojXhOY_LAJXEoPoFSwGB0m6IGAzYvecdJtXWpGPzoNJJ09QglcQ90jOeTeHE_o3Rmh88fb80mXW8ay6faZhlUvC7PwYk5eroqFMag2cmiZvZc9jvh3bf_Pemn2LPY_In5M/s400/5.PNG" /> </div>
<div>
<br /></div>
<div>
then go to <b>Libraries</b> Add path to opencv Lib folder</div>
<div>
<div>
C:\OpenCV\lib</div>
<div>
again change it according to your lib path</div>
</div>
<div>
<br /></div>
<div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1I1Sd9rstHw3TzCUvSVE1wh_-M79E6JgppI3myqZ3s4wD5FwRiDuR0Q7pOA5qzcLWVTrb2UJ4YSrjfLvUUh3f_X5eeqGwdh5gO3_Nepla5cLZw7SdF-PUBuWRVHyJgwbf-3JycOQ-z1E/s400/6.PNG" /> </div>
<div>
<br /></div>
<div>
then go to <b>C includes </b>Add path to opencv Include folder </div>
<div>
<div>
C:\OpenCV\include</div>
<div>
again change it according to your include path</div>
</div>
<div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj45c00BlBaK2hy90zIUBS6_rtERDlFIHdcOV9uSo1FxzoeV5G3WsNJIyO-vzvIXUBRiioBzAZ60EIV0WIW6F-MNZbwEP2F7_b7aLS8vG6LiaiBxD3MuIKeQAP5LrUvNbKunK3zYtCQOhA/s400/7.PNG" /> </div>
<div>
<b><br /></b></div>
<div>
<div>
then go to <b>C++ includes </b>Add path to opencv Include folder</div>
<div>
<div>
C:\OpenCV\include</div>
<div>
again change it according to your include path</div>
</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Now go to Environment Variables and edit path variable </div>
<div>
and add Opencv/bin to path and save.</div>
<div>
Again the bin path should be according to your install dir opencv path. change it accordingly.</div>
<div>
<br /></div>
<div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikt2U4MtJWPAVRNLmblxHH94fTMvOvlZfZyE50HDCs1v2-u4A5pnK4QOvwfc5P2FZFQi9uOPm2sh6MA_BkChFqrm7V1jUR2x8xhTANKwNE-XePiTlZ4KZZZ_fTIsGahXPdCBIr2MnEngI/s400/2.PNG" /> </div>
<div>
<br /></div>
<div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBf0AvaLjedy7U9a-M2N8ws6fG7Oq1qCjvHRNqSgxWAeGs-ZT3so6dL1QvSHK4TQGad6Q5T_zGGgxXhfeUJHHoSBn8sWwxp6VgoWOJTXU741QtX7afE8u0nYk1ytXY_P-kpTXQTiRh41s/s400/3.PNG" /> </div>
<div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb0KP-r_uXdYNSByfRAXTQ0z2zFtitoe0o2Tz3YoI75XuYPqnE06KJ9TWcGxJ-FUpBKmj3oLqefTWWvL9zJPy76wRSuK7KTq7kR_FsRDY-1Bk9VC7msIsjPEES8AQ_RGmUVMvKVWGzjzk/s400/4.PNG" /> </div>
<div>
<br /></div>
<div>
<br /></div>
<div>
click ok and your are done .</div>
<div>
go to samples and run them.</div>
<div>
if u get errors</div>
<div>
Make sure you have selected operating compiler as openCV.</div>
<div>
<br /></div>
<div>
<b>Project -Project options - Compiler</b></div>
<div>
<br /></div>
<div>
cheers</div>
<div>
<b><br /></b></div>
</div>Aniket Tatipamulahttp://www.blogger.com/profile/00492182099405622397noreply@blogger.com18tag:blogger.com,1999:blog-6732204638805564541.post-29697652254907051972012-02-02T23:05:00.000-08:002013-06-23T00:20:35.049-07:00Hand gesture using opencv<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
<br />
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: left;"><span style="font-family: 'Courier New', Courier, monospace;">Hi ! In this post I will be describing the code for hand
gesture recognition using OpenCV.The code is written in C on Dev C++.For
installing the necessary libraries on Dev C++ you can check my <a href="http://anikettatipamula.blogspot.in/2012/02/setting-up-opencv-on-dev-c.html" target="_blank"><span style="color: blue;">previous post</span></a>.
So basically to start with I had to extract the hand region .Which can be done
by many ways for eg</span></span><span style="font-family: 'Courier New', Courier, monospace; text-align: left;"> 1) you can segment the hand region using
RGB values i.e.R G B values of hand will be different from background </span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;">OR </span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;">2) you can use edge detection</span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"> OR </span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;">3) background subtraction.</span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"> I have used background subtraction model. OpenCV provides us
with different back ground subtraction models I choose codebook ( no specific
reason).What it does is it calibrates for some time to be exact for some
frames.In which for all the images it acquires; it calculates the average and
deviation of each pixel and accordingly designates boxes. For more information
please refer a book.</span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"> So at this stage we have removed the background and in the
foreground we only have our hand. For those who are new to CV it is like a
black and white image with only the hand as white.</span></div>
<div align="center" class="MsoNormal" style="text-align: center;">
</div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div align="center" class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOZpbmNcXVCAq12HHv3ugC0_Fo-YdHf7bwnMH9zfGOjiPhyDj7at8T5CpLsLPVyRFu1Rpas24upqpx1NAFcEBmAj5vi8Iv5XnE_58f4FQaXctTIDQ4khqXwUwUoSWHVkadj8PkyEfqZS4/s1600/hand.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOZpbmNcXVCAq12HHv3ugC0_Fo-YdHf7bwnMH9zfGOjiPhyDj7at8T5CpLsLPVyRFu1Rpas24upqpx1NAFcEBmAj5vi8Iv5XnE_58f4FQaXctTIDQ4khqXwUwUoSWHVkadj8PkyEfqZS4/s200/hand.png" height="200" width="166" /></a>
</span></div>
<div class="MsoNormal" style="text-align: left;">
<span style="font-family: 'Courier New', Courier, monospace;"> </span></div>
<div class="MsoNormal" style="text-align: left;">
<span style="font-family: 'Courier New', Courier, monospace;"> In the next part what we intend to do is recognise the
gesture. Here we use Convex Hull to find the finger tips.Convex hull is
basically the convex set enclosing the hand region.</span></div>
<div class="MsoNormal" style="text-align: left;">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div align="center" class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw2v9EiRmaVSW2JxZBQZCUczotwdF9mVK5yVg1sraL8GE8ooURw4c9URLONGSv7EduvzsrRODVlnlK2KBxNyd5MyzSQHbirdAIJJF-GYSD1T-Y0X3-nexE-Ix0b9C-3n49sV3urPYltvg/s1600/convex+hull.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw2v9EiRmaVSW2JxZBQZCUczotwdF9mVK5yVg1sraL8GE8ooURw4c9URLONGSv7EduvzsrRODVlnlK2KBxNyd5MyzSQHbirdAIJJF-GYSD1T-Y0X3-nexE-Ix0b9C-3n49sV3urPYltvg/s320/convex+hull.png" height="320" width="266" /></a>
</span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"> The red line bounding the hand is convex hull .Basically it’s
a convex set ; means if we take any two points inside the red region and join them
to form a line then the line entirely lies inside the set.</span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div align="center" class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfY1RAtPFsjO9kB72D9EzdGv5174P9eQlziZWrZfQOuCBJhQ7WT2h8qq9-qN8gELGL7gEodt18e9h_no4RlBMBzq75yxZKXufrF1eYV_xopP7gJHNnm4nj8uP8si65PRVVrxLM0ce9ZR0/s1600/convexity+defect.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfY1RAtPFsjO9kB72D9EzdGv5174P9eQlziZWrZfQOuCBJhQ7WT2h8qq9-qN8gELGL7gEodt18e9h_no4RlBMBzq75yxZKXufrF1eYV_xopP7gJHNnm4nj8uP8si65PRVVrxLM0ce9ZR0/s320/convexity+defect.png" height="320" width="266" /></a>
</span></div>
<span style="font-family: 'Courier New', Courier, monospace;"><span style="line-height: 115%;"></span></span><br />
<div>
<span style="font-family: 'Courier New', Courier, monospace;"><span style="line-height: 115%;"><span style="line-height: 115%;"><br /></span></span></span></div>
<span style="font-family: 'Courier New', Courier, monospace;"><span style="line-height: 115%;">
The yellow dot is the defect point and there
will be many such defect points i,e every valley has a defect point. Now
depending upon the number of defect points we can calculate the number of
fingers unfolded.</span></span><br />
<div class="MsoNormal">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span>
<span style="font-family: 'Courier New', Courier, monospace;">summary :-</span></div>
<div>
<ul>
<li><span style="font-family: 'Courier New', Courier, monospace;">The hand region extraction has been done using background substraction using codebook method.</span></li>
<li><span style="font-family: 'Courier New', Courier, monospace;">For Tip points i have used convex hull 2 and for depth points convexity defects.</span></li>
</ul>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">The main code for extracting the contour and detecting the convexity points is in the function </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">void detect(IplImage* img_8uc1,IplImage* img_8uc3);</span></div>
</div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">Place the camera in front of a steady background ; run the code ,wait for some time .</span><span style="font-family: 'Courier New', Courier, monospace;">Once the calibration has been done . U see the connected component image showing some disturbance.Bring your hand in cameras view . Enjoy .</span></div>
<div>
<br /></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">VIDEOS:-</span></div>
<div>
<br /></div>
<div>
<a href="http://www.youtube.com/watch?v=OJ_u8nDNmvs&list=UUlCqqRGDRih0m-L0SQFgGxg&index=2&feature=plcp">convex hull 2 usage</a></div>
<div>
<a href="http://www.youtube.com/watch?v=OJ_u8nDNmvs&feature=related">http://www.youtube.com/watch?v=OJ_u8nDNmvs&feature=related</a> </div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/OJ_u8nDNmvs/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/OJ_u8nDNmvs?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowFullScreen" value="true" />
<embed width="320" height="266" src="http://www.youtube.com/v/OJ_u8nDNmvs?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br /></div>
<div>
<a href="http://www.youtube.com/watch?v=TFW6bMPXH4U&feature=related">hand gesture</a></div>
<div>
<a href="http://www.youtube.com/watch?v=TFW6bMPXH4U&list=UUlCqqRGDRih0m-L0SQFgGxg&index=1&feature=plcp">http://www.youtube.com/watch?v=TFW6bMPXH4U&list=UUlCqqRGDRih0m-L0SQFgGxg&index=1&feature=plcp</a> </div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/TFW6bMPXH4U?feature=player_embedded' frameborder='0'></iframe></div>
<br /></div>
<div>
CODES:-<br />
<br />
<span style="color: red; font-size: large;">Link 1 : <a href="https://docs.google.com/open?id=0B7lDtwez94H3Z1JZLXVuOFM2emM" target="_blank">Convex Hull2 usage</a></span><br />
<span style="color: red; font-size: large;"><br /></span>
<span style="color: red; font-size: large;">Link 2 : <a href="https://docs.google.com/open?id=0B7lDtwez94H3MWZlMGQwOTUtODk2Ni00NmNmLWI3NTUtNjA4MTY2NTc5NDk0" target="_blank">Hand gesture recognition</a></span><br />
<br />
<a href="https://docs.google.com/file/d/0B7lDtwez94H3bkJQU0F2RDlfdUU/edit?usp=sharing" target="_blank"> <span style="font-size: large;">FOR OPENCV 2.4</span></a><br />
<br />
<br /></div>
<div>
<div>
<span style="font-size: large;"> <span style="color: red;">Background subtraction has been done using codebook.</span></span><br />
<span style="color: red; font-size: large;">My code has been written over the basic example available in the opencv examples for codebook.So all that i have written has been included in a new function named detect() .</span></div>
<div>
<span style="font-size: large;"><br /></span></div>
<div style="text-align: left;">
<div style="text-align: left;">
<i><span style="color: #3d85c6;">void </span><span style="color: red;">detect</span><span style="color: #3d85c6;">(IplImage* img_8uc1,IplImage* img_8uc3) {</span></i><br />
<i><br /><span style="color: #3d85c6;">//</span><b><span style="color: red;">8uc1 is BW image with hand as white And 8uc3 is the original image</span></b></i><br />
<i><span style="color: #3d85c6;"><br />CvMemStorage* storage = cvCreateMemStorage();<br />CvSeq* first_contour = NULL;<br />CvSeq* maxitem=NULL;<br />double area=0,areamax=0;<br />int maxn=0;</span></i><br />
<i><span style="color: #3d85c6;"><br /></span></i>
<i><span style="color: #3d85c6;">//</span><span style="color: red;"><b>function to find the white objects in the image and return the object boundaries</b></span></i><br />
<i><span style="color: #3d85c6;"><br />int Nc = cvFindContours(<br />img_8uc1,<br />storage,<br />&first_contour,<br />sizeof(CvContour),<br />CV_RETR_LIST // Try all four values and see what happens<br />);</span></i><br />
<i><span style="color: #3d85c6;"><br />int n=0;<br />//printf( "Total Contours Detected: %d\n", Nc );</span></i><br />
<i><span style="color: #3d85c6;"><br /></span></i>
<i><span style="color: #3d85c6;">//</span><span style="color: red;"><b>Here we find the contour with maximum area</b></span></i><br />
<i><span style="color: #3d85c6;"><br />if(Nc>0)<br />{<br />for( CvSeq* c=first_contour; c!=NULL; c=c->h_next )<br />{<br />//cvCvtColor( img_8uc1, img_8uc3, CV_GRAY2BGR );<br />area=cvContourArea(c,CV_WHOLE_SEQ );<br />if(area>areamax)<br />{areamax=area;<br />maxitem=c;<br />maxn=n;<br />}<br /><br />n++;<br />}</span></i><br />
<i><span style="color: #3d85c6;"><br /></span></i>
<i><span style="color: #3d85c6;"><br />CvMemStorage* storage3 = cvCreateMemStorage(0);<br />//if (maxitem) maxitem = cvApproxPoly( maxitem, sizeof(maxitem), storage3, CV_POLY_APPROX_DP, 3, 1 );<br /><br /><br />if(areamax>5000) //</span><span style="color: red;"><b>check for area greater than certain value and find convex hull</b></span><br /><span style="color: #3d85c6;">{</span><br /><span style="color: #3d85c6;">maxitem = cvApproxPoly( maxitem, sizeof(CvContour), storage3, CV_POLY_APPROX_DP, 10, 1 );</span><br /><span style="color: #3d85c6;">CvPoint pt0;</span><br /><span style="color: #3d85c6;">CvMemStorage* storage1 = cvCreateMemStorage(0);</span><br /><span style="color: #3d85c6;">CvMemStorage* storage2 = cvCreateMemStorage(0);</span><br /><span style="color: #3d85c6;">CvSeq* ptseq = cvCreateSeq( CV_SEQ_KIND_GENERIC|CV_32SC2, sizeof(CvContour),</span><br /><span style="color: #3d85c6;">sizeof(CvPoint), storage1 );</span><br /><span style="color: #3d85c6;">CvSeq* hull;</span><br /><span style="color: #3d85c6;">CvSeq* defects;</span><br /><span style="color: #3d85c6;">for(int i = 0; i < maxitem->total; i++ )</span><br /><span style="color: #3d85c6;">{ CvPoint* p = CV_GET_SEQ_ELEM( CvPoint, maxitem, i );</span><br /><span style="color: #3d85c6;">pt0.x = p->x;</span><br /><span style="color: #3d85c6;">pt0.y = p->y;</span><br /><span style="color: #3d85c6;">cvSeqPush( ptseq, &pt0 );</span><br /><span style="color: #3d85c6;">}</span><br /><span style="color: #3d85c6;">hull = cvConvexHull2( ptseq, 0, CV_CLOCKWISE, 0 );</span><br /><span style="color: #3d85c6;">int hullcount = hull->total;</span><br /><span style="color: #3d85c6;">defects= cvConvexityDefects(ptseq,hull,storage2 );</span><br /><span style="color: #3d85c6;">//printf(" defect no %d \n",defects->total);</span><br /><br /><span style="color: #3d85c6;">CvConvexityDefect* defectArray;</span><br /><span style="color: #3d85c6;">int j=0;</span><br /><span style="color: #3d85c6;">//int m_nomdef=0;</span><br /><span style="color: #3d85c6;">// </span><span style="color: red;">This cycle marks all defects of convexity of current contours</span><span style="color: #3d85c6;">.</span><br /> <span style="color: #3d85c6;">for(;defects;defects = defects->h_next)</span><br /><span style="color: #3d85c6;">{</span><br /><span style="color: #3d85c6;">int nomdef = defects->total; // defect amount</span><br /><span style="color: #3d85c6;">//outlet_float( m_nomdef, nomdef );</span><br /><span style="color: #3d85c6;">//printf(" defect no %d \n",nomdef);</span><br /><span style="color: #3d85c6;">if(nomdef == 0)</span><br /><span style="color: #3d85c6;">continue;</span><br /><span style="color: #3d85c6;">// </span><span style="color: red;">Alloc memory for defect set.</span><br /><span style="color: #3d85c6;">//fprintf(stderr,"malloc\n");</span><br /><span style="color: #3d85c6;">defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef);</span><br /><span style="color: #3d85c6;">// Get defect set.</span><br /><span style="color: #3d85c6;">//fprintf(stderr,"cvCvtSeqToArray\n");</span><br /> <span style="color: #3d85c6;">cvCvtSeqToArray(defects,defectArray, CV_WHOLE_SEQ);</span><br /><span style="color: #3d85c6;">// </span><span style="color: red;">Draw marks for all defects.</span><br /><span style="color: #3d85c6;">for(int i=0; i</span><br /><span style="color: #3d85c6;">{ printf(" defect depth for defect %d %f \n",i,defectArray[i].depth);</span><br /><span style="color: #3d85c6;">cvLine(img_8uc3, *(defectArray[i].start), *(defectArray[i].depth_point),CV_RGB(255,255,0),1, CV_AA, 0 );</span><br /><span style="color: #3d85c6;">cvCircle( img_8uc3, *(defectArray[i].depth_point), 5, CV_RGB(0,0,164), 2, 8,0);</span><br /><span style="color: #3d85c6;">cvCircle( img_8uc3, *(defectArray[i].start), 5, CV_RGB(0,0,164), 2, 8,0);</span><br /><span style="color: #3d85c6;">cvLine(img_8uc3, *(defectArray[i].depth_point), *(defectArray[i].end),CV_RGB(255,255,0),1, CV_AA, 0 );</span><br /><span style="color: #3d85c6;">}</span><br /><span style="color: #3d85c6;">char txt[]="0";</span><br /><span style="color: #3d85c6;">txt[0]='0'+nomdef-1;</span><br /><span style="color: #3d85c6;">CvFont font;</span><br /><span style="color: #3d85c6;">cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 5, CV_AA);</span><br /><span style="color: #3d85c6;">cvPutText(img_8uc3, txt, cvPoint(50, 50), &font, cvScalar(0, 0, 255, 0));</span><br /><span style="color: #3d85c6;">j++;</span><br /><span style="color: #3d85c6;">// </span><span style="color: red;">Free memory</span><span style="color: #3d85c6;">.</span><br /><span style="color: #3d85c6;">free(defectArray);</span><br /><span style="color: #3d85c6;">}</span><br /><br /><span style="color: #3d85c6;">cvReleaseMemStorage( &storage );</span><br /><span style="color: #3d85c6;">cvReleaseMemStorage( &storage1 );</span><br /><span style="color: #3d85c6;">cvReleaseMemStorage( &storage2 );</span><br /><span style="color: #3d85c6;">cvReleaseMemStorage( &storage3 );</span><br /><span style="color: #3d85c6;">//return 0;</span><br /><span style="color: #3d85c6;">}</span><br /><span style="color: #3d85c6;">}</span><br /><span style="color: #3d85c6;">}</span></i></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<i><span style="color: #3d85c6;"><nomdef div=""></nomdef></span></i><br />
<div>
</div>
<div>
</div>
<div>
</div>
</div>
<div style="text-align: left;">
<i><span style="color: #3d85c6;"><br /></span></i></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<i><span style="color: #3d85c6;">thank you!! :)</span></i></div>
<div>
<br /></div>
</div>
</div>
</div>
Aniket Tatipamulahttp://www.blogger.com/profile/00492182099405622397noreply@blogger.com49tag:blogger.com,1999:blog-6732204638805564541.post-13669127536024152122011-02-08T04:48:00.000-08:002012-10-19T09:22:35.433-07:00Line Tracker with PID<div dir="ltr" style="text-align: left;" trbidi="on">
LINE TRACKER<br />
<div>
<br /></div>
<div>
<a href="https://docs.google.com/open?id=0B7lDtwez94H3ZWUxNDM0MjktNjE5Mi00ZDFhLWI2ZTAtZjI4MmUwZDcwMzFh">LINK TO THE CODES</a></div>
<div>
https://docs.google.com/open?id=0B7lDtwez94H3ZWUxNDM0MjktNjE5Mi00ZDFhLWI2ZTAtZjI4MmUwZDcwMzFh</div>
<div>
<br />
This was my first project and i did it when i was in my first year of graduation.Line tracker is a best way to put your hand into robotics.In this post i will teach you to make a line tracker along with the advanced PID controller.<br />
<br />
<br />
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dynlnI7oadalQVxSEMhV68m9BVIbRbxFXBqN4gV3P9qLF6zdPy2M3LSE9-YlRlXZkW9EXn6dom2Jmug-n4XRw' class='b-hbp-video b-uploaded' frameborder='0'></iframe><br />
<br />
<br />
<br />
Firstly we define a line tracker: It is a robot which follows a line.So we need to program a robot to track line. To do this we need to give some kind of input to the robot to let it know where the line is .This is where line sensors come in .And to drive the robot we need some kind of actuators(motors).<br />
<br />
Materials required<br />
<br />
Mechanical:<br />
2 DC geared motors 100rpm Rs 125 each<br />
2 L shaped clamps to hold motors Rs 15 each<br />
1 Castor wheel Rs 15<br />
some wood or acrylic or aluminium to build a chassi .( For my first bot i used a plastic box)<br />
<br />
Electronics:<br />
<br />
Dev board<br />
<br />
1 Atmega16 microcontroller<br />
1 40 pin mount<br />
berg strips<br />
connecting wires<br />
paraller port connector DB25 male<br />
330 ohms resistor<br />
IC 7805<br />
IC L293D<br />
PCB<br />
<br />
Sensor Board<br />
<br />
8 pair of IR (Tx ,Rx)<br />
330 ohms resistor<br />
10k ohms resistor<br />
PCB<br />
<br />
Circuit Diagram<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO1GgpteQ8I4V8wcI33pzBa3fIclBJrCEI7aK9qh0ARUBhepuI_DEsRZjTVCjdiSO8j47Ma37sDs202VIrmSzMg333M0jJWcEo0GTjvSGD9uvpXE1zGGThlJQ7iOIDVBQSb3326rQPfvE/s1600/1.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5571755966396248098" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO1GgpteQ8I4V8wcI33pzBa3fIclBJrCEI7aK9qh0ARUBhepuI_DEsRZjTVCjdiSO8j47Ma37sDs202VIrmSzMg333M0jJWcEo0GTjvSGD9uvpXE1zGGThlJQ7iOIDVBQSb3326rQPfvE/s320/1.bmp" style="display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 282px;" /></a><br />
D ( 1 3 5 7 9 11) - tx ; D ( 2 4 6 8 10) - Rx ; R ( 1 3 5 7 9 11) - 330 ohms ; R ( 2 4 6 8 10) - 10Kohms ;<br />
In the above circuit the first one is transmitter circuit and below we have receiver circuit.<br />
The transmitter and receiver should be placed one below other.<br />
<br />
Working:<br />
A transmitter is a simple infrared led .It emits infrared light when forward biased.<br />
While the receiver is a photo diode it is used in reverse biased state.when infra red light falls on it the resistance across the reverse biased diode decreases. This property is used to detect white and black surface.Now consider your sensor pair ( Tx and Rx) is on white line , in this case the IR light emitted by Led is completely reflected back by white surface and this light falls on Rx due to which the resistance across Rx decreases .And the output(lf,l2,l1,r1,r2,rf) vary i.e. under normal conditions the resistance of Rx is infinity therefore the voltage across 10k resistance may be close to 0V.And when IR light falls; it may increase as the diode resistance decreases drastically and becomes comparable to 10k .<br />
With the above information we can fairly judge the o/p under white and black surfaces.<br />
Black : o/p will be high<br />
white : o/p will be low<br />
<br />
<br />
Here are some pictures of sensor board.These pictures are of different sensor board.It has 8 sensor pair but there is never a need of 8 sensor 6 should suffice for us.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSLOg9jSA0JyIqabOcfN57JSSM-r25tq5diibecgQCxjFfFMD7xVDgeuee3oypbk0h16E1NJP7SFm0SDMtXorizP6uIef1SFFA5UwotDLx3SF54XSvZZsabWX2cT6sleQKkE7LkM5F9SI/s1600/2.JPG"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5572876202238550786" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSLOg9jSA0JyIqabOcfN57JSSM-r25tq5diibecgQCxjFfFMD7xVDgeuee3oypbk0h16E1NJP7SFm0SDMtXorizP6uIef1SFFA5UwotDLx3SF54XSvZZsabWX2cT6sleQKkE7LkM5F9SI/s400/2.JPG" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLgdoHr-wZrOKVIT70g2_tMHT5tKw-aPdD1uPoer76zX3sLAYaF7Sb9GxO3PUINCOBKOMNgdILeKxKpO_afVPj_9JoC2PboYEK2EDua8hIjNlQhygHf4-NBiG77ScCvn-jSjTckMAG9yY/s1600/Screenshot-1.png"><br /></a>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgKHnXNruOLzqS47QjrDJnD3SHNG09zA2Zz3PT7sQXTy3skqfoTNvrTcSItCFMz_3xTdOPhycCEryQlCT6gGRSyKUfigl_v9aSC9KZoiB_s9vUaSk9iZdX62awALTU_yMvODPchuUOZ0o/s1600/Untitl5.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5572874015068340994" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgKHnXNruOLzqS47QjrDJnD3SHNG09zA2Zz3PT7sQXTy3skqfoTNvrTcSItCFMz_3xTdOPhycCEryQlCT6gGRSyKUfigl_v9aSC9KZoiB_s9vUaSk9iZdX62awALTU_yMvODPchuUOZ0o/s400/Untitl5.jpg" style="cursor: pointer; display: block; height: 284px; margin: 0px auto 10px; text-align: center; width: 486px;" /></a><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8sVOZzmWHH0zZd_Mc5MrVHPk2CQtIWipAyfgx3ybuiLTake60PGV7McTv_PEOgVTkWIfP4JX4VIssA5x8yPqRYWogeorTXrjXt7z1KIxB6MFAO4dM14TPYJI7rpzrHsDs8i6UaUxV_B4/s1600/Untitled.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5572874325227154594" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8sVOZzmWHH0zZd_Mc5MrVHPk2CQtIWipAyfgx3ybuiLTake60PGV7McTv_PEOgVTkWIfP4JX4VIssA5x8yPqRYWogeorTXrjXt7z1KIxB6MFAO4dM14TPYJI7rpzrHsDs8i6UaUxV_B4/s400/Untitled.jpg" style="cursor: pointer; display: block; height: 257px; margin: 0px auto 10px; text-align: center; width: 587px;" /></a><br />
Ok ! Now we are done with sensor board its time to test it .How to test it ?<br />
Its really simple take a mutimeter connect one end(black) to gnd other(Red) to sensor output (use multimeter in voltage measuring mode select voltage range below 10/20 V).<br />
Now measure the value of output with your hands on the sensor(make sure your hands be just above the sensors and very close to them around 1cm above), lets call it V1.Now remove your hands completely and let the area above the sensors be open and take the reading, let it be V2.<br />
The sensors work properly if there is a substantial difference between V1 and V2 .V1 sould always be greater than V2. And V1-V2 should be approx around 1 volt.But this may differ with the environment . You may get false readings if you test this in sunlight.Sunlight contains a lot of IR light .So if you are facing problems during day and everything works fine at night then sunlight is the only problem.The only solution is to cover the sensors.<br />
<br />
The above board has 8 sensors but its not necessary we can use 4 or 6 of them and follow a line perfectly well.<br />
<br />
Now moving to drive system .We will be needing a Motor driving Circuit to drive the 2 motors of the robot.<br />
You can google for more info about the motor driver circuit. I used L293D as driving IC. It is a simple H bridge driving circuit.<br />
The IC can drive 2 motors. and takes 4 inputs 2 for each . Which lets motor control in both directions.<br />
<br />
And finally we have a micro controller which does the part of controlling the motor depending on the inputs from the Sensor board.<br />
<br />
<br /></div>
</div>
Aniket Tatipamulahttp://www.blogger.com/profile/00492182099405622397noreply@blogger.com0tag:blogger.com,1999:blog-6732204638805564541.post-42336680626938059912010-01-19T07:47:00.000-08:002011-06-25T13:57:48.215-07:00Speakjet<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3F8KSTsAHRACizLecODW46HsvGtoEYmwfAl2WWbNcNWN6RTA7zTmUTRVEvF9ylYDClMqyPhmI0NK7rsu65eRoAPlBNq8cTNwER7rbH1HQb4gRY3Od7cZDjbe1uFHuVETO4fNN40TjEW4/s1600/speakjet.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><br /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5mwRe10p4jX6vmbZ75fbgm31rhdS9CgVvcUTUthtINmYkhjRucKrMXZ_9xZII5BwEiELE7VrlMzljspOeZ97eNZLZZPjQVvtJoRig0wUqysMV2Dp8ucHDlOt-KDm1KIszF8AI8FfPWy8/s1600/speakjet.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><br /></a><br />Hey!!<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqzPXSIhf9dAJiPYzJjlsIk-x3B20Xrm66o2ZlSVrzRRHNGAvX7Rvg673qQiH-6LT_XnV2NPNC1MNz0NqsaoFBPXNHpaz5sX0QzNDrX3kmYeNSbZZdvGhZhWQtltQuIsOGNGdORpUnRkc/s1600-h/speakjet_pin.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 142px; height: 116px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqzPXSIhf9dAJiPYzJjlsIk-x3B20Xrm66o2ZlSVrzRRHNGAvX7Rvg673qQiH-6LT_XnV2NPNC1MNz0NqsaoFBPXNHpaz5sX0QzNDrX3kmYeNSbZZdvGhZhWQtltQuIsOGNGdORpUnRkc/s320/speakjet_pin.gif" alt="" id="BLOGGER_PHOTO_ID_5428496964611703106" border="0" /></a>guys this post is for those who are interested to control speakjet.<br />Speakjet is sound synthesizing chip.<br /><br />its features:<br />· Programmable, 5 channel synthesizer.<br />· Natural phonetic speech synthesis.<br />· DTMF and other sound effects.<br />· Programmable control of pitch, rate, bend and volume.<br />· Programmable power – up or reset announcements.<br />· Multiple modes of operation.<br />· Simple interface to microcontrollers.<br />· Simple “Stand Alone” operation.<br />· Three programmable digital outputs.<br />· Internal 64 Byte input buffer.<br />· Internal programmable EEPROM.<br />· Extremely low power consumption.<br />· Low pin count.<br />· Multiple case styles available.<br /><br /><br />In the beginning you don't have to know much about how it synthesizes music internally.<br />It can be controlled easily using serial interface.<br />NOTE:speakjet works on TTL logic and not RS232.So to control it through PC you need to have a level converter ic like max232.<br />It generates sound using basic unit of speech called allophones.A combination of desired such allophones will generate required sound.The SpeakJet is preconfigured with 72 speech elements (allophones),43 sound effects, and 12 DTMF Touch Tones.For more information read usermanual<br /><br /><a href="http://www.magnevation.com/pdfs/speakjetusermanual.pdf">http://www.magnevation.com/pdfs/speakjetusermanual.pdf</a><br /><br />Here u will come across diff methods to control Speakjet.But frankly speaking u will not be interested in events control .In this post we will learn how to control it using serial interface.You can interface speakjet with any microcontroller which is UART compatible.<br />Before starting working with it we have to set up the circuitary for the ic.<br /><br />DEMO /TEST MODE<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjPs5xk9lcOq5DJOsEf_3COkQ7WgZ-MU0b14R9c5unexeGw9C9ATvXXDjQk-XvF6ZbWzh4aX23PxKu-0mdUAb4SdcXblMs6xQquza6vlNpkI9FzAEyEn898Tc3K83hk3fMzWQWI4usER4/s1600-h/demohookup.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 192px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjPs5xk9lcOq5DJOsEf_3COkQ7WgZ-MU0b14R9c5unexeGw9C9ATvXXDjQk-XvF6ZbWzh4aX23PxKu-0mdUAb4SdcXblMs6xQquza6vlNpkI9FzAEyEn898Tc3K83hk3fMzWQWI4usER4/s320/demohookup.jpg" alt="" id="BLOGGER_PHOTO_ID_5428787627733243010" border="0" /></a><br /><br />In demo mode the pins M0,M1,Rst are held at logic 1. i.e they are connected to vcc(2-5V).<br />In this mode the ic plays all the allophones and special sounds inside.And all pins on LHS are grounded.<br /><br /><br /><br /><br />SPEAKER<br />For speakers we used a headphone and connected one of its pin to GND and other to Vout of IC.<br /><br /><br />NORMAL MODE<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgijw3qzIpCadMcOpdGOKz4m43w3G9-ymkiqrSiJaTLMz8Qh6eePWinfLmYqlNDZHLcKBarmwopXLOmwJ6NUz-egvoe-b0RcKRAULoRCo_dcOnH8gmIP9Tmu9Ac9AnuGHTmXQkLvS0MdN0/s1600-h/speakjet_pic.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 561px; height: 145px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgijw3qzIpCadMcOpdGOKz4m43w3G9-ymkiqrSiJaTLMz8Qh6eePWinfLmYqlNDZHLcKBarmwopXLOmwJ6NUz-egvoe-b0RcKRAULoRCo_dcOnH8gmIP9Tmu9Ac9AnuGHTmXQkLvS0MdN0/s320/speakjet_pic.jpg" alt="" id="BLOGGER_PHOTO_ID_5428791186689928306" border="0" /></a>In normal mode we connect M0 to gnd and M1 ,Rst to Vcc.<br />For normal mode we will need an amplifier (to hear o/p clearly).I used a commonly available<br />LM386 low power audio amplifier.<br /><br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg7riOiKInP8Bfxp08WPQ_LM-NBI5Et2WJcUggVjOm7ilW3Ilw3ZYKxA6_yyc0n41XaW4pSOhOCw6xQhbMFVWmq04SKSfp9cpwUGqgLmS7qx-pEA5GmYby4og1aJzmdH3ToHlXMzlHgYE/s1600-h/lm386-200.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 221px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg7riOiKInP8Bfxp08WPQ_LM-NBI5Et2WJcUggVjOm7ilW3Ilw3ZYKxA6_yyc0n41XaW4pSOhOCw6xQhbMFVWmq04SKSfp9cpwUGqgLmS7qx-pEA5GmYby4og1aJzmdH3ToHlXMzlHgYE/s320/lm386-200.gif" alt="" id="BLOGGER_PHOTO_ID_5428791860557622546" border="0" /></a><br />BYPASS capacitor -0.1 uF.<br />Gain=200.<br /><br /><br />SETTING BAUD RATE<br />speakjet has a factory assembled baud rate of 9600.but you can change it as and when you wish.There is a simple routine to set baud rate.we will follow this routine every time we connect speakjet to microcontroller.<br /><img src="file:///C:/Users/aniket/Desktop/speakjet.png" alt="" /><br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5mwRe10p4jX6vmbZ75fbgm31rhdS9CgVvcUTUthtINmYkhjRucKrMXZ_9xZII5BwEiELE7VrlMzljspOeZ97eNZLZZPjQVvtJoRig0wUqysMV2Dp8ucHDlOt-KDm1KIszF8AI8FfPWy8/s1600/speakjet.png"><br /></a><br /><img src="file:///C:/Users/aniket/Desktop/speakjet.png" alt="" /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3F8KSTsAHRACizLecODW46HsvGtoEYmwfAl2WWbNcNWN6RTA7zTmUTRVEvF9ylYDClMqyPhmI0NK7rsu65eRoAPlBNq8cTNwER7rbH1HQb4gRY3Od7cZDjbe1uFHuVETO4fNN40TjEW4/s1600/speakjet.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 219px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3F8KSTsAHRACizLecODW46HsvGtoEYmwfAl2WWbNcNWN6RTA7zTmUTRVEvF9ylYDClMqyPhmI0NK7rsu65eRoAPlBNq8cTNwER7rbH1HQb4gRY3Od7cZDjbe1uFHuVETO4fNN40TjEW4/s320/speakjet.png" alt="" id="BLOGGER_PHOTO_ID_5570646581798822114" border="0" /></a><a href="https://docs.google.com/document/d/1cSorRf0gX8FPTedm6pF1SOi1HnsWJcsWHhItqwx86CI/edit?hl=en#"><br /></a><a href="https://docs.google.com/document/d/1QJwDR7BRpyJWDZSZ-XZq0JaxhbxkVtw81JqH2_dxDN8/edit">The code for atmega16 microcontroller</a><br /><br /><avr h=""><stdlib.h><avr h=""><util h=""><udre)) put="" into="" sends="" the="" data="" udr="data;" void="" int="" portb="0x00;" i="0;i<sizeof(speak);i++)" code="" 2="" avr="" application="" builder="" 1="" 2002="" 28="" am="" target="" m16="" 0000mhz="" include=""><avr h=""><stdlib.h><avr h=""><util h=""><udre))><sizeof(speak);i++)><br />Wish you good luck for the speakjet project .<br /></sizeof(speak);i++)></udre))></util></avr></stdlib.h></avr></udre))></util></avr></stdlib.h></avr>Aniket Tatipamulahttp://www.blogger.com/profile/00492182099405622397noreply@blogger.com4