|
|
Sam Stokes writes about Research in a way that is accessibile by students in College or considering their College/University Career or someone who is a life long learner!
-
OMG! I got pulled off my usual job of doing a bunch of things and have been focused on getting students involved in the Imagine Cup Software Design Invitational in the United States. Then it was Christmas and I ate to many cookies, etc. Finally I ignored my one comment from a int19h, and when you get as few comments as I do, everyone is precious! Int19h ask about my previous blog: "This is one of the differences between functional programming (F#, OCAML) and imperative programming (C#, VB.NET, Java), the concept of identifiers is not really supported in the imperative languages, although there are constants. Can you explain what you mean by "the concept of identifiers is not supported"? Try as I might, I cannot parse this in such a way as to produce some meaning." Fair enough int19h, just what in the heck was I saying? Well, if I had wrote my next blog on the day I thought about it, instead of focusing like a laser on getting the students involved with Imagine Cup (hopefully my manager is reading that!). The concept of the identifier in F# could be explained with this quote from Chris Smith's blog entry, F# in 20 Minutes: "...using the term ‘value’ to refer to identifiers rather than ‘variable’. The reason for this is that types in F# are immutable by default, meaning that once they are created they cannot be changed. This may seem like a severe limitation, but immutability actually prevents some classes of bugs. In addition, immutable data is inherently thread safe meaning you don’t need to worry about sync locks in order to make your code parallelizeable." What is an "Identifier"? Identifiers give names to values in F# for reference later in a program. You would use the keyword 'let', in the following manner, no semi-colon: let x = 15 When a value is assigned to an identifier, it never changes in a functional program. The style is to refer to this construct as identifiers and not variables, see the book "Foundations of F#", by Robert Pickering. Functions and Values in F# are treated exactly the same, also, functions in F# supports passing less arguments than the function supports, which is referred to as partial or curried functions. For more information on this see this excellent Podwyski's blog entry. Are you interested in loading up F# and Visual Studio but don't want to buy or load the full version of Visual Studio? This is a great way to learn about the Visual Studio Shell and to get started with F#, if you have VS Pro or VS team system, then you only need to load up F#, unless you want to add Visual Studio Shell to your development tools, go ahead and load it. First download and install the Visual Studio Shell: Microsoft Visual Studio 2008 Shell (integrated mode) Redistributable Package Then download and install F# CTP: Microsoft F#, September 2008 Community Technology Preview Have fun, make sure to check out the various blogs out there, so much good stuff, so little time!
|
-
In the example I used in the past post utilized the "let" command and it didn't have any data type, what's up with that? Oh it gets worse, the identifier (not variable) are immutable. That is the memory location of the identifier cannot be modified. To create an mutable identifier you have to declare the identifier as mutable. This is one of the differences between functional programming (F#, OCAML) and imperative programming (C#, VB.NET, Java), the concept of identifiers is not really supported in the imperative languages, although there are constants. This is not to say that F# doesn't support imperative programming, F# is object oriented, but it's focus on the functional approach to programming.
Identifiers are interesting, and to continue the discussion about solving engineering problems, we definitely will need to deal with functions. Functions easy to work with in F#, and we will take a look at functions in the next episode of the blog, mainly because I need to work on my game blog at http://blogs.msdn.com/devschool, where you can learn how to build a game for a Christmas Present this year!
|
-
F# has many interesting features, such as the use of lists, maps, and so forth. There are many blogs and websites dedicated to discussing the computer science side of F#, and for good reason the language supports these types of efforts. However, what about the rest of the computational users, for instance engineering students who are studying physics and want to generalize their homework problems in case they can use them when they are interns or are working after the leave school. After all, the homework that you do does serve a purpose other than getting a grade in class.
Please note that any discussion about using F# in my blogs are simply to illustrate the use of F# and not to make a statement that it is better than any other language or system such as Mathematica or Matlab, in fact F# is designed to work with those products as a friendly kind of language.
To get started, let’s take a look at how one F# can be used a very basic Ohm’s Law problem.
Let's take a look at a simple problem of electrical resistance.
Using Ohm’s law, Voltage= Current divide by Resistance or V=IR. If we know the total resistance and voltage, then current equals voltage divided by total resistance.
Let's use a circuit made up of three resistors that equal 40 ohms, 50 ohms and 60 ohms that are connected to a voltage source of 3 volts. To determine the current then I would divide the total voltage by the total resistance.
- The equation would look like: current = voltage/(Resistor1 + Resistor2 + Resistor3).
Let’s write a simple F# program and a C# program to do the calculation:
Both sets of code look pretty much the same, and if we want to use it to solve circuits, we would have to insert the new values every time. In the next blog entry, we will take a look at using Excel for our input system. It isn't pretty, nor is it practical, but it does give us a basis of a simple application that can be built on over a number of blogs. Like many academic
|
F# form of the calculation
(Formatting is correct) |
C# form of the calculation
(Formatting is correct) |
|
#light
open System
let v1=3.0
let r1=40.0
let r2=50.0
let r3=60.0
let i1=v1/(r1+r2+r3)
Console.WriteLine(i1)
Console.Read() |
using System;
class SeriesResistance
{
static void Main(string[] args)
{
double v1 = 3;
double r1 = 40;
double r2 = 50;
double r3 = 60;
double i1;
i1 = v1 / (r1 + r2 + r3);
Console.WriteLine(i1);
Console.Read();
} } | problems we are starting simple, but since we are talking about real components like resistors that you might buy from Radio Shack or Fry's, there could be variations in values, the battery could vary between 2.50 volts (Ni-Cads) and 3.0 volts (Alkaline), plus the battery will vary with use as well. How do we model this kind of variations. How can we improve the input of the resistors, etc.
If you want to learn more about F# and how to use it to do lists, etc. take a look at the other blogs such as Don Syme, Chris Smith and http://www.hubfs.com. This blog will be utilize for me to figure out how to use F# to solve engineering and scientific problems that non-computer science and computer science students both might be interested in.
|
-
Dec. 3 is the birthday of John Blackus, he was one of the principle inventors of FORTRAN, see the article found at: http://en.wikipedia.org/wiki/FORTRAN
In my opinion, John Blackus best quote describing a motivation to continue to create programming systems:
- · “Much of my work has come from being lazy. I didn't like writing programs, and so, when I was working on the IBM 701 (an early computer), writing programs for computing missile trajectories, I started work on a programming system to make it easier to write programs."
John Blackus received the Turing Award for his work in creating FORTRAN in 1978 and used the award to describe his thoughts on what a formal functional language could look like. Click on the link to his paper/speech "Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs".
Also, historically, John Blackus, invented one of the first high level languages for IBM machines called "speedcoding" in 1953, and the short article is fun to read and gives a historical perspective on floating point calculations: http://www.softwarepreservation.org/projects/FORTRAN/paper/p4-backus.pdf.
Finally, if you think you could use more memory, read about the memory on the IBM 701 that John Blackus was working with at:
The languages that John Blackus created were powerful and with FORTRAN long lasting, FORTRAN continues to be used in legacy scientific applications today, and was used extensively for 40 years after it's invention.
My challenge to you: How would you create a new language that helps you solve problems important to your career?
- One way to get started on creating new languages would be read the article on Domain Specific Languages.
- You can create programming languages that solve the problems that affect your life.
John Blackus was a pioneer in creating languages that were used by scientists and engineers to design the systems used by the American space program to reach the moon and beyond.
This is the type of research that drives the current world economy, and you can do your own research in languages using the Domain Specific Languages. F# was used to create the solver foundation, and example of Domain Specific Languages, check it out at:F# Optimization Modeling Language Utilizing Microsoft Solver Foundation
Have fun, create your own language or try out F#, a functional language!
|
-
In research, there is a need to have a set of ethics. Software, as well as Electrical Engineers are ask to follow the ethics: http://www.acm.org/about/code-of-ethics/#sect1 , the high level considerations are: 1. General Moral Imperatives 1.1 Contribute to society and human well-being. 1.2 Avoid harm to others. 1.3 Be honest and trustworthy. 1.4 Be fair and take action not to discriminate. 1.5 Honor property rights including copyrights and patent. 1.6 Give proper credit for intellectual property. 1.7 Respect the privacy of others 1.8 Honor Confidentiality As you follow along on this blog, please keep in mind these ethics.
|
-
It has be awhile since I blogged. Thanks for coming back or joining this long trip into using Research. Now I have walked you through the process of taking an idea and moving it into a real project, we have not completed the process. I hope that you have downloaded the ECMAScript standard and took a look at it. Remember we are attempting to use the idea of creating a touch sensor that uses the Live Messenger API to connect with someone else. Is there products that are using this type of software, and the answer is yes. But if you are a software developer, and your companies needs to understand how to use this technology, this is the approach you would take to learn how to move ideas from R&D (Research and Development) into actual operation. In the previous posting we looked at the Live Instant Messenger API and determined that these lines of code were the critical ones to use (there are other lines of code as well) to create using JavaScript or ECMAScript: Use these links to while you are working on your project, whether it is a web page, game or enterprise (corporate) project: · How To: Host the Sign-in Control · How To: Monitor Presence · How To: Change the User's Status · How To: Add or Remove a Contact · How To: Manage Conversations · How To: Implement Presence Extensions · How To: Implement Messaging Extensions · How To: Access Messenger Resources The code we are most interested in is the Microsoft.Live.Messenger.MessageType.nudgeMessage. The /* and the */ are a way to add comments to your code, single line comments use // (sometimes this is referred to as whack, whack). You could simply start copying the following code if you want to try this "snippet" of code, as it sits, it doesn't do anything, but you could try different things.: /* Start Copying at this line The recvMsg(sender, e) function is a function that is called by the incoming message The “switch” statement is used to determine what type of message has come in The “case” statements test the API objects that you called from the using */ function recvMsg(sender, e) { switch (e.get_message().get_type()) { case Microsoft.Live.Messenger.MessageType.applicationMessage: var message = e.get_message(); if (message.get_id() == _myApplicationMessage.Id) { displayCustomMsg(message); } break; case Microsoft.Live.Messenger.MessageType.nudgeMessage: // Place your code here to use the nudgeMessage break; case Microsoft.Live.Messenger.MessageType.textMessage: var message = e.get_message(); displayMsg(message); default: break; } } //Finish copying here You would place the Microsoft.Live.Messenger.MessageType.nudgeMessage in a case statement where you are building Then to use the XBox control, we will need to move from the Live Messenger API to the Vista or Windows XP operating system. In one the near future blogs, I will cover how to use XNA and make your connection to this program.
|
-
Hopefully you gave the code from Friday a try, Popfly should be used for that type of code, since there is that banner that advises people to not input their password, etc. Now that you have run your tests, make sure to change your site or remove it. Using Visual Studio 2008 Web Developer Express (let's call it Web Dev) I am able to connect to Popfly and use the Web Dev tool to connect with Popfly. I am also able to share code directly with you. However, for now, lets dig into the code. If your Javascript is a little weak, and even professional software developers like Dan Waters sometimes have issues with javascript. The best source that I know, that is also free, is the ECMASCRIPT Standard! You might ask, ECMASCRIPT, what does that have to do with javascript? The ECMA Standard is based on several originating technologies, the most well known being JavaScript (Netscape) and JScript (Microsoft). Bottom line: ECMASCRIPT = javascript Why is this important? ECMASCRIPT is the standard and programming standards are often good sources for figuring out how to make programs work. This is true for C# and some other languages. Other languages like Java (which is not the same as javascript, although the syntax is similar) and Visual Basic.NET are not programming languages that have a standard. This means you have to search for assistance with companies like Sun (stock symbol: JAVA) or Microsoft (stock symbol: MSFT). To get the ECMASCRIPT standard (which will help you with learning javascript) go to click here and then from the Adobe ribbon, click on the "save icon" , save this file to your harddrive, it is 188 pages, and worth the paper if you printed it out. The ECMAScript standard though is weak on examples, for code examples you will need to go to other sites. If you are using the Web Dev tool, you will notice that there are a series of "functions", in javascript this is a way to organize the programs flow in memory. These functions are also correctly referred to as methods. There are other software items that are called functions as well, for now we will work with the method kind of software items. What do we have in our example? A process to do the sign-in for the receiver and sender, both have to be in the other's contact list. Also, we have now achieved the "nudge", we haven't figured out how to use it yet, but we a code example. To work through a tutorial, which I can't get to work, let me know if you get it to work: http://msdn.microsoft.com/en-us/library/cc298455.aspx, this example is pretty simple, and I recommend that you look at it. This is the code that we use to create the sign-in control | This code: signin = new Microsoft.Live.Messenger.UI.SignInControl('signinframe', privUrl, chanUrl, 'en-US'); signin.add_authenticationCompleted(authenticationCompleted); Generates the control shown below: |  | To authenticate the user the following code is used: _user = new Microsoft.Live.Messenger.User(e.get_identity()); _user.add_signInCompleted(signInCompleted); _user.signIn(null); Then to complete the sign-in: if (e.get_resultCode() === Microsoft.Live.Messenger.SignInResultCode.success) { document.getElementById('userInfo').innerHTML = '<p>' + _user.get_address().get_address() + ' is now signed in.</p>'; } However, as a person who is attempting to commercialize a research concept, you would what to understand how the code works, but you wouldn't do the code. You would likely note down that you need a software designer who knows javascript and C#. Stay tuned for the next blog entry, we will take a look at the "nudge" and how we can use the Windows Live Messenger Library to call managed functions. Since XNA is part of the managed code, we are getting closer to driving our Xbox controller with a nudge from Live Messenger.
|
-
I just tested the IM capabilities of the Popfly server, and it works! Slowly, you have a delay of a few seconds when the messages are sent and received. But to do our tests of the Sensor Touch, we can live with that. Remember this is a test of concept, not the final product. The best research product development is to be able to prototype with items that are close to the final product, but that isn't always the case.
For example, the C-17 test vehicles were nothing like the final C-17 aircraft. Here we are just testing and building protocol.
So bottom line I tested the use of Visual Studio 2008 with the lab page source running on Popfly. A video will be posted sometime in the future.
To try the popfly version of Instant Messager, go to: http://www.popfly.com/users/SocalSam/HillBillyIM
It works, but the interface needs polish. Let me know if you got it to work. You will need Visual Studio 2008 with Visual Web Dev and the Popfly Add-in.
|
-
It can be difficult to get started, and fortunately there is a web page that you can use to start experimenting with an accessible web page. You will have to use the View Source to check out the code, on IE7 you would use the Page button and then select the "View Source" you will see the HTML. It is a bunch of code, but if you are able to work with javascript and HTML, then this will be a great way to start experimenting with building your own IM graphical user interface (GUI). Think about it, you could create a device that people who can't see or hear could use to communicate with people on the Internet! All of this from an idea from Microsoft External Research.
To utilize the example code (this will just work with the Instant Messager, not the nudge), navigate to: http://wlmlhelloworld.mslivelabs.com/
You will need two Live IDs, one to send and one to receive.
Well, let's take a look what we need to do in the immediate future:
1. We have a place to experiment with the Live Instant Messager, you will need to have two IMs to be able to use this to start your experimentation.
2. We need to figure out where we can put our code, I think we can use http://www.popfly.com for your web page hosting, but you will need to download and install VS 2008 Visual Web Dev Express, and then install the Popfly explorer.
3. Follow the instructions at the URL: http://msdn.microsoft.com/en-us/library/cc298455.aspx
Where we are going longer term:
1. We will have to investigate how XNA works, this will gives us easy access to the XBox controller through Windows.
2. Make sure to get an XBox controller, wired for Windows XP, and a cheap way to go for Vista which can use either wired or wireless. But Wireless is very cool.
Finally, as we move into Labor Day weekend, since I don't have many readers, so please make sure to not drink and drive. It is really true that buzz driving is drunk driving, and the fines for DUI are very high, in California the fines and court costs can reach $13,000 or more. Have fun, take chances, but drinking and driving isn't risky it's stupid. Of course if you live in a city with good public transportation like Boston, New York, Seattle or Philadelphia, lucky you.
Work on this project this weekend, we can hook up our code through the Visual Web Dev 2008 with the Popfly Explorer installed, and that is JUST COOL!
|
-
We got the idea that it would be a good idea to create the sensor touch. The process would interface an instant message nudge with an Xbox controller for our proof of concept. If we were going to implement the idea for profit, our package would look different, but before we spend any money on packaging and electronic engineering, it would be a good idea to experiment with our idea. We need to find out how instant messenger systems signal their nudge, and we have to make sure that our effort works inside of the IM standards that are out there. To get started one of the easiest to use software development kit (SDK) is from Microsoft. To get started take a look at the Windows Live Messenger Library Tutorial and you will need to have access to a web server, which is easy to get, IIS, which is available on Vista, you have to turn it on. We will cover how to do that in the next post. To get started you will need to read the following documents, and unfortunately there are no Podcasts, etc. for us to use, you have to read them and then figure out what they are saying. You could then make a podcast for others to listen to, or write on your blog at Live Spaces to explain how you did this. To receive the nudge you will need to follow the tutorial, to get started, go to the URL and read through the material.
|
-
There have been a bunch of movies and even more stories where the bad guys or good guys are able to interact physically at a distance. Usually there is violence involved, but what kind of fun can we have? Well I am assuming that everyone who wants to take apart their Xbox controller to use it in our research have ordered it or are waiting till the weekend to get it from Game Stop or some place like that. Research isn't any fun if we can't use the final product would it? Also it wouldn't last long if there is no profit or benefit.
For now let's start talking about sensor touch and how you as a researcher could make it happen:
If you were an Intern or at your job, and your customer or manager asks you if it is possible to have the XBox Controller respond to a nudge from someone on IM, how would you approach this problem?
First, I would have to make some assumptions:
- The IM uses a standard that I can look at in a single location
- That the IM has an application programming interface (also known as API)
- That there is some way to connect to the XBox Controller
Then I would have look at the Sensor Touch, do I have to have two way capabilities to reach the goals of the researchers at Microsoft. No, initially I can cut back a little and just have one touch through the "nudge" concept. I don't have to go both ways.
Some questions for you:
1. Does Microsoft Instant Messenger have a standard?
2. Does the Microsoft Instant Messenger have an API?
3. Is there a way for us to use the XBox Controller?
Remember if you have an XP, you will need to get the WIRED controller to follow through with this research.
A final note: I have not prepared material ahead for this discussion, so as we move through the effort, you and I are exploring these technological concepts together. I hope that you will have as much fun as I am having!
|
-
iPod, Zunes, and other MP3 are just part of our lives these days, are they fun? Well, if you like to listen to music, but that is kind of standard these days. XBox, PSP and wii are in many homes, and provide feedback of sorts. But wouldn't it be fun to be able to exchange not only the visible, but also touch? Take a look at: http://research.microsoft.com/sds/TouchTalk.aspx Although we can poke from Facebook or nudge from IM, the idea of sensor touch goes beyond these approaches. How would you get involved? Read this article and then if you are a student, you should have access to DreamSpark for no-cost, IF YOU ARE A STUDENT. Download Expression and work with the Expression Design tool. You can create interesting looking devices that you could use to create a simple prototype. Download the Expressions Studio, or download the free demo: Dreamspark: https://downloads.channel8.msdn.com/Default.aspx Expression Studio: http://www.microsoft.com/expression/default.aspx Then make a cardboard model of your idea, it might look like a mouse like the picture shown here or it could like something else. You might want to experiment with the shape, so you could add the mechanism from the XBox controller, you can get controllers on the web for a very low price. If you are using Windows XP get a wired controller not the wireless one, and since this exercise will be taking the controller apart, get one of the "Barbi" controllers, they are cheap and who cares what they look like. Download the Visual Studio C# Express 2008 (free) from: http://www.microsoft.com/express/download/ (you will need to scroll down a little, you can select the language you want to use) Then download the XNA Express product (you need this to easily program the XBox controller): http://creators.xna.com/ Over the next few days, lets take a look at doing personal research in doing sensor touch, or not, I have no idea if this will come together, if you think that everything has to work at the end of a discussion cycle, you may want to head over to Clint Rutkas' blog/website. See Clint's facebook page at: Maybe we will just end up going over to http://blogs.msdn.com/dawate, he has some very nice stuff on XNA Programming. Dan is also a very funny person. Dangerously funny. Also, do me a favor, check out some of the other pages on my blog. I think they are pretty good, but leave a few comments and let me know. :)
|
-
Well the Olympics continue and the Chinese are really showing off their abilities with a real leadership in Gold Medals. And it is a good thing that Michael Phelps, a resident of California, showed up since it appears that he currently has won a large percentage of the US Gold Medals. Gymnastics is about the ability of the performer to do sp ecific actions, the outer edge of performance is difficult to measure. With swimming, is it possible to estimate the edge of performance. Simulations can be made from these estimates and strokes, clothing, etc. can be modified using the simulations.
Male swimmers are taller now, inches count in the swim events, Mark Spitz is less than 2 meters tall, Michael Phelps is much taller. This gives Phelps an edge.
What other factors would you use to simulate a swimmer? Would your swimmer simulation have to be different for males versus females? I would think so, male shoulders tend to be wider, this modifies the aerodynamic drag. What other factors could vary the surface simulations for swimmers?
The image to the right, is from: http://tinyurl.com/gwu-seas. Rajat Mittal, PhD, heads up the team of 10 researchers that make up the Flow Simulations and Analysis Group (FSAG) at George Washington University. The group's primary focus is analyzing the physics of complex flows using numerical simulations, at least it was in 2005.
What kind of classes do you need to study in high school to be able to work on interesting problems like this in college and as an occupation? Physics, AP Math, AP Computer Science oriented classes would be the ones you strive for. If you have already left high school and think that this would be cool to do, but didn't prepare well enough, think about attending your community college and explore taking a series of math classes and programming classes to get you knowledgeable about what you need to know. You can usually transfer these classes to a four year university.
How does this information relate to the wind/air tunnel research I talked about in my earlier posting? Once the roughness of the material is determined, a team like the researchers at GWU would then be able to modify the surface of the swimming simulation to match the material's qualities. The software would then be run and the output changed into a graphic like the one shown here.
How does Microsoft Research work with these types of simulations? Microsoft Research has fostered the development of many of the approaches to graphics through improvements in the way that programmers work and utilize tools. The programming tools that have come out of Microsoft Research, such as F# are leading edge approaches to simplification of programming large simulations. Take a look at this URL for all of the projects that Microsoft Reseach has been working on: http://research.microsoft.com/research/default.aspx, all of them could be used in creating a swimming simulation. After all wouldn't you like for your country or state to be able to knock out the Gold at the Olympics sometime in the future? You can be a part of this by becoming smarter and more skilled at math and technology and then helping the swimmers to improve by creating useful simulations. We can do this at any age, and use the public educational facilities to explore how to expand our knowledge about Math and Science, most countries support this type of exploration through subsidized classes.
Where else can you use this information? In game design, graphics design, medicine, programming and engineering.
If you are interested in this type of material, please make sure you are studying online or in class, and write programs using the free tools from Microsoft.
So to get started, Right now, click this URL and read about F#, download it, use it: http://research.microsoft.com/fsharp/fsharp.aspx?0sr=a this is an interesting tool, especially if you are a TI graphing calculator freak.
|
-
Ok, my first post isn't directly about Microsoft Research, but I though that this would be pretty cool, and I get to use the word Olympics a lot in this blog. I realize that using the word Olympics is a way to cheat on the search engines, this does lead into my general theme of this blog. So for the next few days I will be writing about research and it's impact on the Olympics. I may even attempt to use the word Olympic in every sentence, maybe not. Also, there is a picture of Michael Phelps, the Olympic swimmer, which since it was on the NASA page, I guess I can place it here... The guy on the left Steve Wilkinson (left) with Michael Phelps 
First of all, this is very cool, NASA has a video at this site: http://www.nasa.gov/topics/technology/features/2008-0630-swimsuit.html (can't embed it in my blog), and it just shows the technician setting up the wind tunnel with the fabric. But the article is interesting. Are improved fabrics making swimmers faster? Since I swim a great deal in the Ocean this is interesting to me, could I go further with improved fabric on my swimsuit or wetsuit. Another question is this: is the helping the swimmers to break records? From this quote, it looks like NASA has been doing testing on the fabrics:
"Swimmers around the world are breaking records this year like never before, including at the recent U.S. Olympic trials. Some attribute it to extensive training as athletes prepare to compete at this summer's games in Beijing. Others say one factor may be a new swimsuit … a space-age swimsuit made of fabric tested at NASA. "
How does a wind tunnel work? The wind tunnel can be set-up so that air can be used instead of water. A big fan is use to blow air through the tunnel (not shown in figure), the air speed at one end is measured and then the trailing speed is measured on the other side of the fabric. The air speed would be modified in a measured manner and the air mass could be calculated.
So how do you use software to evaluate your findings? There now I can talk about Microsoft stuff, if not research, but maybe not the Olympics or Michael Phelps. The Air Flow would come out of a tube that is called the Contraction Tube, to help speed up the air flow. In the case of the measurements for the fabric, I would design the tunnel to measure the speed before the fabric and then after. You could use microphones to measure the air speed, and there are some other ways that you could measure it as well. The air has to be very dry or the fabric would get wet.
Now, we can start talking about software, and that is what Microsoft makes. How do you collect the airspeed data? You will need to do so to determine the roughness of the fabric. To collect the airspeed data, you could modify the wind tunnel and use an airfoil, the airfoil would have lift, the air flow would cause the airfoil to lift up. If you had a really smooth fabric, the ability for the airfoil to lift would be changed. That way you wouldn't need any software to determine smoothness of the fabric, but... It would not be as accurate as using multiple datapoints provided by software. The airfoil would vary, and you might have problems with getting the fabrics to lay down wrinkle free. You could use the Visual Studio 2008 Express product to do your data collection.
Fabric used be the only material that covered the wings and fuselage of aircraft, for example the Wright Flyer, so NASA doing these measurements is historically something that maps to their aeronautical tradition.
So what would the data sensor system look like? I will use words here, (reference: http://www.grc.nasa.gov/WWW/K-12/WindTunnel/wandering_windtunnel.htm)
Since this is a low pressure wind tunnel you would need to measure, and this would lead to a determination of the roughness of the fabric:
- Dynamic pressure
- Static pressure
- Total pressure
- Temperature
- Turbulence
To be able to better understand how a wind tunnel is built you should visit the web site: http://www.grc.nasa.gov/WWW/K-12/WindTunnel/wandering_windtunnel.htm.
If you are interested in this type of work, you should consider taking classes in high school that are oriented toward physics and related math. Knowledge about this type of engineering can also be used in game design, software engineering and development, aircraft design, RC Model design. If you are in college, talk to the engineering department or school advisor.
And darn it, the only research that Microsoft has that uses Wind Tunnels is from 1995, and looks kind of out of date, but if you want to take a look at it, the url is:
Let me know if you have any questions about engineering or Microsoft software. :)
|
|
|
|