Monthly Archives: August 2013

Dong Shin 08.30.2013

  • continue working on Query Builder (FA)

    • added support for the columns that don’t exist in the column config. This allows SQL functions and alias names using ‘AS’
    • added GROUP BY support
    • reworked WHERE configuration to work with GROUP BY
    • SparkResizableTitleWindow is now functional

Phil 8.30.2013

8:00 – 11:00 SR

  • Backups
  • Training. Possibly the worst interactive training I’ve ever taken. Please don’t waste my time trying to make training a game. Give me the info, test me on it,and let me move on. Fighting robots!? Sheesh.
  • Timesheet stuff.

11:00 – 5:00 FP

  • Saving output – done
  • Adding TargetSphere placement limits and size range – done
  • Adding GoalBox size – done
  • Setting up release build. Done, though it wasn’t easy. I had to turn off “cross project optimizing”. That worked, but I don’t know why.
  • Still need to enable the “Next” button on the first pass through the test.
  • Still need to box up all the components.

Dong Shin 08.29.2013

  • continue working on Query Builder (FA)
    • added Obligation/Outlay goals to the query
    • added Export to Viz button (not functional, yet!)
    • created SparkResizableTitleWindow (needs more work!)
    • working on queries
      • adding date calculations to the query xml config
  • Flash Builder 4.7 allows more Java Heap Memory allocation (64bit!!) – seems to solve some slowness issues after increasing it to 2GB

Phil 8.29.13

8:00 – 10:30 SR

  • Backups.
  • Dong’s coming over? Yep. Discussion about queries with Lenny

10:30 – 4:00 FP

  • Cleaning up commands. Mostly done
  • While testing the “test” part of the app, I’m realizing that my “ratio” calculations have some issues. Before tying to fix them directly, I’m going to try just making a different gripper that has three “sensor spheres” on each finger. Then I can just let my “drag-based” physics to the whole job. Finished. That’s much better
  • Quick! What’s wrong with the following code?
	for(int i = 0; i < 3; ++i){
		position[i] += velocityVec[i];
		if(velocityVec[i] > drag*ratio){
			velocityVec[i] -= drag*ratio;
		}else{
			velocityVec[i] = 0;
		}
	}
  • Yep, the drag is only being applied for objects moving in a positive direction. This is a problem that has been driving me crazy for days. I thought is was some artifact of the communication between the Phantom control loop (1k hz) and the simulation loop (100 hz). Nope. Simple math mistake. Facepalm.
  • Pretty picture for the day. Notice that the grippers now have multiple points of contact:

BetterGripper

  • I’ve also started to notice how feedback changes the speed that you can perform the task. Haptic and tactor seem pretty close. Open loop is much worse, at least subjectively. Let’s see what the data says.

Phil 8.28.13

8:00 – 11:00 SR

  • Backups
  • Training
  • Quick conversation with Lenny and Pat, all seems to be running fine.

11:00 – 4:00 FP

  • Adding test logic
  • Switching between test types.
  • Since session is now integrated in the testing, I need eliminate session switches
  • Need to pull the “general” logic out of the “simulation” command processing.

Dong Shin 08.28.2013

  • continue working on Query Builder (FA)
    • changed the way how Obligated/Outlay/PM Actual columns are handled. Had all the columns and set the visible property to false on all, but the one that’s selected. This seems confuses the FooterDatagrid as it showed all the footers in the bottom,….. Now one column for each, just change the dataField properties when the month selection happens.
    • need to delete unnecessary columns from obligations_outlays_goals
      • ALTER TABLE `obligations_outlays_goals` DROP `project_id`, DROP `funding_id`;
    • query to find obligations/outlays/pm actuals and goals/percents
      • SELECT project_number, req_description, req_id, projects.appropriation, budget_centers.total_budget,
        GROUP_CONCAT(o.uid),
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_1, 0)) AS obligated_month_1, SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_2, 0)) AS obligated_month_2,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_3, 0)) AS obligated_month_3, SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_4, 0)) AS obligated_month_4,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_5, 0)) AS obligated_month_5, SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_6, 0)) AS obligated_month_6,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_7, 0)) AS obligated_month_7, SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_8, 0)) AS obligated_month_8,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_9, 0)) AS obligated_month_9, SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_10, 0)) AS obligated_month_10,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_11, 0)) AS obligated_month_11, SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_12, 0)) AS obligated_month_12,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_1, 0)) AS outlay_month_1, SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_2, 0)) AS outlay_month_2,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_3, 0)) AS outlay_month_3, SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_4, 0)) AS outlay_month_4,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_5, 0)) AS outlay_month_5, SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_6, 0)) AS outlay_month_6,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_7, 0)) AS outlay_month_7, SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_8, 0)) AS outlay_month_8,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_9, 0)) AS outlay_month_9, SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_10, 0)) AS outlay_month_10,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_1, 0)) AS pm_actuals_month_1, SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_2, 0)) AS pm_actuals_month_2,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_3, 0)) AS pm_actuals_month_3, SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_4, 0)) AS pm_actuals_month_4,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_5, 0)) AS pm_actuals_month_5, SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_6, 0)) AS pm_actuals_month_6,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_7, 0)) AS pm_actuals_month_7, SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_8, 0)) AS pm_actuals_month_8,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_9, 0)) AS pm_actuals_month_9, SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_10, 0)) AS pm_actuals_month_10,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_11, 0)) AS pm_actuals_month_11, SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_12, 0)) AS pm_actuals_month_12,(g.obligation_month_1 * budget_centers.total_budget) / 100 AS obligation_goal_month_1,
        (g.obligation_month_2 * budget_centers.total_budget) / 100 AS obligation_goal_month_2,
        (g.obligation_month_3 * budget_centers.total_budget) / 100 AS obligation_goal_month_3,
        (g.obligation_month_4 * budget_centers.total_budget) / 100 AS obligation_goal_month_4,
        (g.obligation_month_5 * budget_centers.total_budget) / 100 AS obligation_goal_month_5,
        (g.obligation_month_6 * budget_centers.total_budget) / 100 AS obligation_goal_month_6,
        (g.obligation_month_7 * budget_centers.total_budget) / 100 AS obligation_goal_month_7,
        (g.obligation_month_8 * budget_centers.total_budget) / 100 AS obligation_goal_month_8,
        (g.obligation_month_9 * budget_centers.total_budget) / 100 AS obligation_goal_month_9,
        (g.obligation_month_10 * budget_centers.total_budget) / 100 AS obligation_goal_month_10,
        (g.obligation_month_11 * budget_centers.total_budget) / 100 AS obligation_goal_month_11,
        (g.obligation_month_12 * budget_centers.total_budget) / 100 AS obligation_goal_month_12,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_1 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_1,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_2 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_2,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_3 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_3,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_4 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_4,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_5 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_5,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_6 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_6,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_7 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_7,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_8 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_8,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_9 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_9,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_10 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_10,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_11 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_11,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, (month_12 / budget_centers.total_budget * 100), 0)) AS obligation_percent_month_12,

        (g.outlay_month_1 * budget_centers.total_budget) / 100 AS outlay_goal_month_1,
        (g.outlay_month_2 * budget_centers.total_budget) / 100 AS outlay_goal_month_2,
        (g.outlay_month_3 * budget_centers.total_budget) / 100 AS outlay_goal_month_3,
        (g.outlay_month_4 * budget_centers.total_budget) / 100 AS outlay_goal_month_4,
        (g.outlay_month_5 * budget_centers.total_budget) / 100 AS outlay_goal_month_5,
        (g.outlay_month_6 * budget_centers.total_budget) / 100 AS outlay_goal_month_6,
        (g.outlay_month_7 * budget_centers.total_budget) / 100 AS outlay_goal_month_7,
        (g.outlay_month_8 * budget_centers.total_budget) / 100 AS outlay_goal_month_8,
        (g.outlay_month_9 * budget_centers.total_budget) / 100 AS outlay_goal_month_9,
        (g.outlay_month_10 * budget_centers.total_budget) / 100 AS outlay_goal_month_10,
        (g.outlay_month_11 * budget_centers.total_budget) / 100 AS outlay_goal_month_11,
        (g.outlay_month_12 * budget_centers.total_budget) / 100 AS outlay_goal_month_12,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_1 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_1,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_2 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_2,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_3 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_3,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_4 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_4,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_5 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_5,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_6 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_6,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_7 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_7,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_8 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_8,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_9 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_9,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_10 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_10,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_11 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_11,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, (month_12 / budget_centers.total_budget * 100), 0)) AS outlay_percent_month_12

        FROM projects
        RIGHT JOIN budget_centers ON projects.uid = budget_centers.project_id
        RIGHT JOIN budget_center_contracts ON budget_center_contracts.budget_center_id = budget_centers.uid
        RIGHT JOIN obligations_outlays AS o ON o.project_id = projects.uid
        RIGHT JOIN obligations_outlays_goals AS g ON projects.appropriation = g.appropriation
        WHERE o.year = 2013 AND o.year_count = 1 AND (o.type = ‘Reported FACTS Obligated $:’ OR o.type = ‘Outlay $ (Reported in FACTS)’ OR o.type = ‘PM Actuals (Invoiced) Outlay $:’)
        AND g.year = 1
        GROUP BY funding_id

Dong Shin 08.27.2013

  • continue working on FA
    • working on Query Builder
      • added Obligations/Outlays/PM Actuals to the query
      • added Obligations/Outlays/PM Actuals Check Boxes
    • created GLOBALS.as class for global constants and static methods

Phil 8.27.13

8:00 – 10:00 SR

  • Backups
  • Training

10:00 – 4:30 FP

  • Goal Box – done. I had to add collision detection for determining if a TargetSphere was touching (for setup) or inside (achieving the goal). I basically wrote an axis-aligned bounding box where the radius of the TargetSphere was either added (inside) to or subtracted from (touching) the size of the GoalBox. I’m not calculating penetration, just looking for sign change on the line segment.
  • Added <map> of UI_cmd to handle commands coming from the control system and results coming from the sim. Worked right the first time. Yay, C++ templates!
  • Enable/disable haptics/tactors – done. It’s interesting to see how the behavior and feel of the system changes with the different capabilities enabled/disabled.
  • Started working on the experiment session management

Picture for the day:

GoalBox

Phil 8.26.13

8:00 – 10:00 SR

  • Backups
  • Training
  • Chris and Lenny are out – quiet!

10:00 – 4200 FP

  • Working on adding test sequences and a goal box
  • Added goal box. Working on rendering. I’ll need to break out the method that calculates a target’s initial placement so that it is aware of the box and is placed outside. It might actually be easier(?) to use spherical coordinates.

Dong Shin 08.26.2013

  • continue working on FA
    • working on Query Builder
    • working on queries for Chris
      • saving queries to QueryBuilderQueries.sql in resources/database/
    • adding Obligations/Outlays to the Query Builder
      • query to find obligaed, outlay, pm actuals
      • SELECT projects.*, bc.*, bcc.*,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_1, 0)) AS obligated_month_1,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_2, 0)) AS obligated_month_2,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_3, 0)) AS obligated_month_3,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_4, 0)) AS obligated_month_4,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_5, 0)) AS obligated_month_5,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_6, 0)) AS obligated_month_6,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_7, 0)) AS obligated_month_7,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_8, 0)) AS obligated_month_8,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_9, 0)) AS obligated_month_9,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_10, 0)) AS obligated_month_10,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_11, 0)) AS obligated_month_11,
        SUM(IF(o.type = ‘Reported FACTS Obligated $:’, month_12, 0)) AS obligated_month_12,

        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_1, 0)) AS outlay_month_1,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_2, 0)) AS outlay_month_2,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_3, 0)) AS outlay_month_3,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_4, 0)) AS outlay_month_4,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_5, 0)) AS outlay_month_5,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_6, 0)) AS outlay_month_6,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_7, 0)) AS outlay_month_7,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_8, 0)) AS outlay_month_8,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_9, 0)) AS outlay_month_9,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_10, 0)) AS outlay_month_10,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_11, 0)) AS outlay_month_11,
        SUM(IF(o.type = ‘Outlay $ (Reported in FACTS)’, month_12, 0)) AS outlay_month_12,

        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_1, 0)) AS pm_actuals_month_1,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_2, 0)) AS pm_actuals_month_2,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_3, 0)) AS pm_actuals_month_3,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_4, 0)) AS pm_actuals_month_4,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_5, 0)) AS pm_actuals_month_5,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_6, 0)) AS pm_actuals_month_6,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_7, 0)) AS pm_actuals_month_7,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_8, 0)) AS pm_actuals_month_8,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_9, 0)) AS pm_actuals_month_9,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_10, 0)) AS pm_actuals_month_10,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_11, 0)) AS pm_actuals_month_11,
        SUM(IF(o.type = ‘PM Actuals (Invoiced) Outlay $:’, month_12, 0)) AS pm_actuals_month_12

        FROM projects
        RIGHT JOIN budget_centers AS bc ON projects.uid = bc.project_id
        RIGHT JOIN budget_center_contracts AS bcc ON bcc.budget_center_id = bc.uid
        RIGHT JOIN obligations_outlays AS o ON o.project_id = projects.uid
        WHERE o.year = 2013 AND o.year_count = 1
        AND (o.type = ‘Reported FACTS Obligated $:’ OR o.type = ‘Outlay $ (Reported in FACTS)’ OR o.type = ‘PM Actuals (Invoiced) Outlay $:’)
        GROUP BY funding_id