Monthly Archives: February 2012

Mike 2.29.2011

  • Usual server and database back up in the morning
  • Reproduced the server environment on my local machine at site, ended up getting the same errors, so I will at least have a better working environment than on the ‘production’ system
  • Attempted installing a working version of Visibility from Jeff’s sever, same issue
  • Contacted Jim and Tangie regarding internal testing of our tool, waiting to hear back
  • Contacted the software people regarding my request for Flash Builder, would be very handy right now
  • Went back to the office to rebuild my connection tester using different libraries
  • Also packing up other parts of my Tomcat Install to bring: crossdomain.xml, etc.
  • ISP PMO Symposium, 1300-1500
Advertisements

Phil 2.29.12

8:30 – 11:00, 12:30 – 3:00 VISIBILITY

  • Worked on getting Data Visualization working
  • ISR/PMO meeting from 1:00 – 3:00

11:00 – 12:30, 3:00 – 5:00 FP

  • Working on multiple rendering surfaces. For the trivial case, I’m going to try to take the blurred image and invert the colors.
  • Added definition of the vertex and fragment shaders in the ScreenRepaint class, since it’s pretty generic.
  • Took screen rendering out of the Gl_ShaderWindow base class and added two instances to the GeoTestShaderWindow. Everything works just as it should.
  • Meeting at UMBC on surface displays, journals and other things. Looks like I’m on a team to build a “Surface-style” interface for the visually impaired. Meetings are every Wednesday at 4:30

Phil 2.28.12

10:00 – 4:30 FP

  • The surgeon has declared me healed, and bid me to go forth and play hard.
  • And now that I’ve gotten the screen aligned rendering working, I can get back to the book.
  • Working on adding multiple, sequential rendering surfaces.

Tom DeVito 2.28.2012

Start: 10:00

  • Took inventory of what slots I will need to make the circuit boards.

end 12:30

Dentist Appointment : 12:30 – 2:00

Start: 2:00

  • Finished all the methods for sound control in the controller class
  • Started working on the command execution method.

end: 6:00

 

Mike 2.28.2012

  • Did the normal database backup this morning
  • Deployed a test client application to test remote object connectivity for Visibility on the client server
    • It reads all properties for the properties file just fine
    • It does NOT produce any errors while attempting to connect to the remote object, however it does not succeed either
    • There no errors indicating anything went wrong in any log files anywhere
  • Responded to several emails concerning the server going down yesterday
    • Apparently as soon as I submitted a ticket it was restarted which is what fixed the issue
    • The tech sent me an email at 9:40 when the server came up, my email server received the email two hours later…
  • Back at the office I tried debugging several items to figure out why Visibility is failing on the inside
  • Dong built a version of visibility which I will take back to try and debug
  • I will also try stopping and restarting the Tomcat server
  • Went back to site and tested the fixes, they did not help

Mike 2.27.2011

  • Imported a fresh build of Visibility
  • The server was down when I got to the customer site this morning.  I contacted someone who Phil suggested as well as the EDC support center.  The system came back up around 9:40 AM without word from anyone.
  • Deployed the new visibility, still not able to log in with the data navigator or the account managers tools.
  • Reviewed required server updates from Denise.  Tried to apply several but got errors.  Asked Denise who to contact.
  • Tried to listen to the FGM all hands meeting recording, doesn’t appear to be uploaded correctly
  • Created a debugging application to try and figure out why visibility isn’t working at site
  • Working on a “Home” page for the vis tool which will act as a launchpad for PPM, PPA, and the data visualizations

Phil 2.27.12

8:30 – 5:30 FP

  • Try moving the screenDraw code to a DrawableObject class
  • 10:00 – 1:00 Seminar
  • Got the ScreenRepaint class (extending DrawableObject) working. The Gl_ShaderWindow class is now back to being manageably small.

Tom DeVito 2.24.2012

Start: 10:00

  • Working on the controllers for gathering sensor data and sound controls
  • Made some changes to the base classes for sound control so that they accepted value between 0-255
  • Made some more minor changes to the the Amp and Midi classes to make execution of commands easier.
  • Decided on a naming scheme for variables in the DataDiction.  The finger name underscore property(ex. thumb_vol is thumb volume)
  • My friend Chris came by to make a car which turns and travels north.  He was using a compass IC which communicated to the Arduino using I2c.
  • I found out that it is a good thing I have not updated the arduino IDE yet.  There were changes made which would break my code.  I will have to update this eventually but I want to get everything working first.
  • atan2(y, x) will find the angle in radians from the origin.  This method automatically fixes it to work past 90 degrees.
  • I used my com classes and console to print out the data to help him test the compass.  Simply dropped it in and set a toString on his class.
  • We were able to get his robot to work.  I’ll show you the video tomorrow.

End: 6:00

Phil 2.24.12

8:30 – FP

  • I think I found GLSL documentation! http://www.opengl.org/sdk/docs/manglsl/
  • A working convolution filter that blurs anything above a certain luminance:
  • #version 150
    // glow.fs
    // outputs the color negative of a texture
    //
    
    in vec2 vTexCoord;
    
    uniform int screenWidth;
    uniform int screenHeight;
    
    uniform sampler2D textureUnit0;
    
    vec4 getTexOffset(const sampler2D texUnit, const vec2 texCoord, const float dx, const float dy){
    	vec2 offset = texCoord + vec2(dx, dy);
    	return texture(textureUnit0, offset);
    }
    
    void main(void)
    {
    	float dx = 1.0 / float(screenWidth);
    	float dy = 1.0 / float (screenHeight);
    
    	float x;
    	float y;
    	vec4 blurSum = vec4(0, 0, 0, 0);
    	float patchSize = 4.0;
    	float xmin = -patchSize*dx;
    	float xmax = patchSize*dx+dx*0.5;
    	float ymin = -patchSize*dy;
    	float ymax = patchSize*dy+dx*0.5;
    	float count = 0;
    
    	for(x = xmin; x < xmax; x += dx){
    		for(y = ymin; y < ymax; y += dy){
     			blurSum += getTexOffset(textureUnit1, vTexCoord, x, y);
     			if(count > 1000){
    				discard;
    			}
    			count += 1.0;
    		}
    	}
    	float weight = 1.0/count;
    	vec4 blured = vec4(blurSum.r*weight, blurSum.g*weight, blurSum.b*weight, 1.0);
    	vec4 sharp = texture(textureUnit0, vTexCoord);
    
    	float luminance = blured.r + blured.g + blured.b;
    	if(luminance > 1.0){
    		gl_FragColor = blured;
    	}else{
    		gl_FragColor = sharp;
    	}
    }
  • And here’s the picture it produces. Note the sharp moon and gridlines with the blurry sun 🙂
  • Next on the hit parade, add a test to see if the corners of the convolution filter touch anything above the luminance threshold and discard if it doesn’t. My guess is that should speed up things a lot. Done. Discovered that there are some odd problems that crop up as the screen gets made quite large. This could have something to do with the fact that I’m not checking to see that the convolution patch’s coordinates can run off the texture (i.e not clamped between 0.0 and 1.0)?
  • Migrate the screen drawing to a DrawableObject class. I’m pretty sure it should work there, as long as it’s called after postDraw3D(). In fact, it should be possible to have multiple screen drawing classes, though I’m not sure why.
  • Add shader directory to svn repo – done
  • And it appears that after a while, something is clogging the graphics pipeline, because the drawing slows way done. This does look like it’s due to the shader, as the neg.fs doesn’t seem to be slowing things down. Yep,  adding clamping to the glow.fs shader fixed that problem. Still have the problem where the screen texture gets messed up if the window gets too big…
  • So here’s the better version of the fragment shader
  • #version 150
    // glow.fs
    // outputs the color negative of a texture
    //
    
    in vec2 vTexCoord;
    
    uniform int screenWidth;
    uniform int screenHeight;
    
    uniform sampler2D textureUnit0;
    
    void luminanceTest(const sampler2D texUnit, const vec2 texCoord, const float xmin, const float xmax, const float ymin, const float ymax, const float luminance){
    	vec2 ll = clamp(texCoord + vec2(xmin, ymin), 0.0, 1.0);
    	vec2 lr = clamp(texCoord + vec2(xmax, ymin), 0.0, 1.0);
    	vec2 ur = clamp(texCoord + vec2(xmax, ymax), 0.0, 1.0);
    	vec2 ul = clamp(texCoord + vec2(xmin, ymax), 0.0, 1.0);
    
    	vec4 total = texture(texUnit, ll);
    	total += texture(texUnit, lr);
    	total += texture(texUnit, ur);
    	total += texture(texUnit, ul);
    
    	float weight = 1.0/4.0;
    	float val = (total.r + total.g + total.b)*weight;
    	if(val < luminance){
    		discard;
    	}
    }
    
    vec4 getTexOffset(const sampler2D texUnit, const vec2 texCoord, const float dx, const float dy){
    	vec2 offset = texCoord + vec2(dx, dy);
    	clamp(offset, 0.0, 1.0);
    	return texture(texUnit, offset);
    }
    
    void main(void)
    {
    	float dx = 1.0 / float(screenWidth);
    	float dy = 1.0 / float (screenHeight);
    
    	float x;
    	float y;
    	vec4 blurSum = vec4(0, 0, 0, 0);
    	float patchSize = 4.0;
    	float xmin = -patchSize*dx;
    	float xmax = patchSize*dx+dx*0.5;
    	float ymin = -patchSize*dy;
    	float ymax = patchSize*dy+dx*0.5;
    	float count = 0;
    
    	luminanceTest(textureUnit0, vTexCoord, xmin, xmax, ymin, ymax, 1.0);
    
    	for(x = xmin; x < xmax; x += dx){
    		for(y = ymin; y < ymax; y += dy){
     			blurSum += getTexOffset(textureUnit0, vTexCoord, x, y);
     			if(count > 1000){
    				discard;
    			}
    			count += 1.0;
    		}
    	}
    	vec4 sharp = texture(textureUnit0, vTexCoord);
    	float weight = 1.0/count;
    	vec4 blured = vec4(blurSum.r*weight, blurSum.g*weight, blurSum.b*weight, sharp.a);
    
    	float luminance = blured.r + blured.g + blured.b;
    	if(luminance > 1.0){
    		gl_FragColor = blured;
    	}else{
    		gl_FragColor = sharp;
    	}
    }

Mike 2.24.2012

  • Normal database backup and connectivity testing
  • Brought in a version of Visibility and Visibility Scripting
  • Reviewed some of the required updates from Denise
  • Worked with Dong to try and deploy Visibility and Visibility Scripting
    • Visibility Scripting is working after fixing some errors in the properties file
    • Visibility doesn’t seem to be correctly reading the properties file, not sure what they error is but the swf is from July 2011 so I will try building a new one and bringing that one in
  • Rebuilt IngestManager and AccountManagers
  • Attempting to Build PPM and PA:
    • Project Assistant built fine and I imported Dong’s database of fake data
    • PPM is having remote object problems

Tom DeVito 2.23.2012

Start: 10:00

  • Finished changes to the Data Dictionary.
  • Tested remote data.  Echo test worked when only one entry was sent but failed when multiple entries were sent.
  • Found the problem in the import data method.
  • Worked a little more on the Arduino Controllers.  Changed the variables to be in 0-255 range.

End: 6:00

Mike 2.23.2012

  • Regular back up and connectivity checks this morning
  • Deployed a fix for a broken user select button in the Create Funding Request dialog
  • Met with Tangie and discussed:
    • Connectivity through outside networks
    • Getting a link to our stuff from a more official site
    • Difficulties creating a funding request, Tangie was able to while I was watching but we’re still trying to get a hold of Christina and diagnose her difficulties
  • Contacted Denise Price regarding server maintenance, she said she would email me the details
  • Contacted the authentications server helpdesk to try and get our system added to the production list from the test list
  • Brought Dong up to speed about yesterday’s meeting
  • Working on building a fresh version of Visibility, PPM, and PA on my laptop
    • Need to find / install a flex 3.5 SDK
    • Need my Eclipse to cooperate and quit locking up
    • Got it built!

Mike 2.22.2012

  • Normal backup / connectivity testing in the morning
  • Deployed an update to fix mismatching POCs when creating a funding request
  • Spoke to Tangie about the update
  • Meeting with Mike H. and others about the Vis Tool Status.  Results of the meeting:
    • Next week we need to do ‘internal’ testing of outside connections
    • The following week we need to provide a demo of the capability of PPM, PA, and Visibility
    • The next week we will do tests with individuals from site, before that we will test their connectivity and PKI support

Phil 2.23.12

8:00 – 4:30 FP

  • Step 1 – make a screen-aligned ortho polygon and make sure it’s drawing correctly with a simple shader, and that the text overlay still works – done
  • Step 2 – copy texture code over from modified pix_buffs.cpp – done. Other textures seem to mess everything up.
    • Added glActiveTexture(GL_TEXTURE0); to SolarSystem, which fixed the missing texture problem, but the screen texture still gets messed up. GOing to try putting in pieces of SolarSystem to find where it breaks, since everything works fine with just the Grid
  • Filling out matrix
  • Back to shaders. For some reason, I have to make sure that the screenwidth is evenly divisible by 4. Not sure why, but it’s easily fixed. So now we have this!
  • Committed everything to svn

Tom DeVito 2.22.2012

Start: 10:00

  • I got the Data Dictionary working in a way which makes it so only the publisher can change the data.
  • This still requires you to call a setData command to change the data in data dictionary.  I am thinking an update method, which is called either in the post process of the class or during the system loop, could cycle through the entries and compare the data in the dictionary to the data in the data pointer.  This way you would be able to set your local variables normally and the Dictionary would still be able to track changes.  Its probably better this happens once per program loop, as it would take a lot of cycles each time to compare the data.  I like this approach because if you want to add a pre-made class not designed for the system, you only have to publish or subscribe the variables you need and its “set and forget” from there.
  • Changed all the char and char* which were not being used for anything having to do with characters to uint8_t.  Although it technically doesn’t matter to store non char values in a char, it will not print correctly.  Also the send and receive base methods of windows and the arduino, use this by default instead of unsigned char.
  • Made an arduino sandbox for testing.  Added the com library for testing of remote data.

End: 6:00