- deployed new FA
- ingest COGNOS works!
- found Advanced Query not working properly when Select All is clicked – fixed
Monthly Archives: August 2013
Phil 8.7.13
8:00 – 11:30 SR
- Backups
- Training
11:30 – 4:00 FP
- Basically spent the whole day figuring out how the 4×4 phantom matrix equates to the rendering matrix (I would have said OpenGL, but that’s not true anymore. I am using the lovely math libraries from the OpenGL SuperBible 5th Edition, which makes it kinda look like the OGL of Yore. Initially I thought I’d just use the vector components of the rotation 3×3 from the Phantom to get the orientation of the tip, but for some reason, parts of the matrix appear inverted. So instead of using them directly, I multiply the modelviewmatrix by the phantom matrix, Amazingly, this works perfectly. To make sure that this works, I rendered a sphere at the +X, +Y and +Z axis in the local coordinate frame. Everything tracks. So now I can create my gripper class and get the positions of the end effectors from the class. And since the position is in the global coordinate frame, it kind of comes along for free,
- Here’s a picture of everything working:

- Tomorrow, I’ll build the gripper class and start feeding that to the Phantom. THe issue will be to sum the force vectors from all the end effectors in a reasonable way.
Dong Shin 08.07.2013
- continue working on FA
- removed COGNOS conflict resolution
- started migrating FA to Flex 4.6 – panels and canvases behave better!
Dong Shin 08.06.2013
- group meeting at R&E
- talked with Lenny about the duplicate COGNOS Contract – no need to keep old data
- continue working on FA
- remove old COGNOS data on new import
- fixed sum of the dollars not working for some data (NULL contracts)
- more tooltips!
Phil 8.6.13
8:00 – 11:00 SR
- Backups
- Group meeting
- Spent some time chasing down the duplicated bug. The decision is to truncate the contracts_cognos table before ingest. There is still a problem where multiple rows are not being summed even though they are claimed (where contract numbers are NULL)
11:00 – 4:00 FP
- Integrating all the pieces into one test platform. The test could be to move a collection of physically-based spheres (easy collision detect) from one area to another. Time would be recorded from the indication of a start and stop (spacebar, something in the sim, etc). Variations would be:
- Open loop: Measure position and pressure, but no feedback
- Force Feedback (Phantom) only
- Vibrotactile feedback only
- Both feedbacks
- Probably only use two actuators for the simplicity of the test rig. It would bean that I could use the laptop’s headphone output. Need to test this by wiring up the actuators to a micro stereo plug. Radio Shack tonight.
- Got two-way communication running between Phantom and sim.
- Have force magnitude adjusting a volume.
- Added a SimpleSphere class for most of the testing.
Dong Shin 08.05.2013
- continue working on FA
- added Search filter to QueryBuilder
- fixed datagrid width problem in QueryBuilder
- added delete contracts for COGNOS
Phil 8.5.13
8:00 – 10:00
- Backups
- Status Report
- Helped Dong with column spacing for query returns
- Burned a disk with the new deployable and status report.
FP 10:00 – 4:00
- This could be interesting: Indoor Location Estimation Using Visible Light Communication and Image Sensors
- Worked on the shared memory system. Data is now passed robustly between the Phantom app and the sim.
Dong Shin 08.02.2013
- continue working on FA
- working on COGNOS data conflict resolution
- got the list of tooltips and added to FA
- datagrid and advancedDataGrid behaves differently.
Phil 8.2.13
8:00 – 10:00 SR
- Backups
- Sent a note to the system security folks asking to clarify what I was responsible for installing on my virtual server.
- Need to do a status report for Tangie
- Got tooltips for RA/FA
- Meeting with Chris and Lenny. Mostly we discussed the issue of bad data in Cognos.
10:00 – 4:00
- Integrating Phantom
- Code is in and compiling, but there are mysterious errors:


- I think I need a more robust startup. Looking at more examples….
- Hmm. After looking at other examples, the HD_TIMER_ERROR problem appears to crop up for anything more than trivially complex. Since both programs seem to run just fine by themselves, I’m going to make two separate executables that communicate using Named Shared Memory. Uglier than I wanted, but not terrible.
- Created a new project, KF_Phantom to hold the Phantom code
- Stripped out all the Phantom (OpenHaptics) references from the KF_Virtual_Hand_3 project;
- Added shared memory to KF_Phantom and tested it by creating a publisher and subscriber class within the program. It all works inside the program. Next will be to add the class to the KF_VirtualHand project (same code, I’m guessing? Not sure if MSVC is smart enough to share). Then we can see if it works there. If it does, then it’ll be time to start getting the full interaction running. And since the data transfer is essentially memcpy, I can pass communication objects around.
Dong Shin 08.01.2013
- no VizTool meeting today, set for tomorrow morning
- continue working on FA
- working on COGNOS Contracts Mgmt
Phil 8.1.13
8:00 – 10:00 SR
- Backups
- Need to write up monthly status reports for Tangie
10:00 – 4:30 FP
- Continue integrating Phantom into testbed
- Need to bring headphones back for microphone
- Spent most of the day trying to figure out how to deal with geometry that has to be available to both the haptic and graphics subsystems. The haptics subsystem has to run fast – about 1000hz and gets its own callback-based loop from the HD haptic libraries. The graphics run as fast as they can, but they get bogged down. So the idea for the day was to structure the code so that a stable geometry patch can be downloaded from the main system to the haptics subsystem. I’m thinking that they could be really simple, maybe just a plane and a concave/convex surface. I started by creating a BaseGeometryPatch class that takes care of all the basic setup and implements a sphere patch model. Other inheriting classes simple override the patchCalc() method and everything should work just fine. I also built a really simple test main loop that runs at various rates using Sleep(). The sphere is nice and stable regardless of the main loop update rate, though the transitions as the positionis updated can be a little sudden. It may make sense to add some interpolation rather than just jumping to the next position. But it works. The next thing will be to make the sphere work as a convex shape by providing either a flag or using a negative length. Once that’s done (with a possible detour into interpolation), I’ll try adding it to the graphics code. In the meanwhile, here’s a video of a dancing Phantom for your viewing pleasure:

You must be logged in to post a comment.