Merge lp:~ulrika-dreifaldt/forssim/ulrika_new_doc into lp:forssim

Proposed by Ulrika Dreifaldt
Status: Merged
Merged at revision: not available
Proposed branch: lp:~ulrika-dreifaldt/forssim/ulrika_new_doc
Merge into: lp:forssim
Diff against target: None lines
To merge this branch: bzr merge lp:~ulrika-dreifaldt/forssim/ulrika_new_doc
Reviewer Review Type Date Requested Status
Ulrika Dreifaldt Approve
Review via email: mp+8816@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Ulrika Dreifaldt (ulrika-dreifaldt) wrote :

Changed documentation. Only spelling and grammar changes.

Revision history for this message
Ulrika Dreifaldt (ulrika-dreifaldt) wrote :

looks amazing!

review: Approve
Revision history for this message
Jonas Forsslund (jonas.forsslund) wrote :

Well done!
jonas@ubuntu:~/forssim.datastructdoc$ bzr merge
lp:~ulrika-dreifaldt/forssim/ulrika_new_doc
jonas@ubuntu:~/forssim.datastructdoc$ ./makedoc
nice. I try to reply email with command:
 +1

2009/7/15 Ulrika Dreifaldt <email address hidden>

> Ulrika Dreifaldt has proposed merging
> lp:~ulrika-dreifaldt/forssim/ulrika_new_doc into lp:forssim.
>
> Requested reviews:
> Forsslund Systems (forsslundsystems)
>
> Changed documentation. Only spelling and grammar changes.
> --
>
> https://code.launchpad.net/~ulrika-dreifaldt/forssim/ulrika_new_doc/+merge/8816<https://code.launchpad.net/%7Eulrika-dreifaldt/forssim/ulrika_new_doc/+merge/8816>
> Your team Forsslund Systems is subscribed to branch lp:forssim.
>

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'doc/02_Theory_and_user_guide.dox'
2--- doc/02_Theory_and_user_guide.dox 2009-05-18 09:14:14 +0000
3+++ doc/02_Theory_and_user_guide.dox 2009-07-15 12:38:40 +0000
4@@ -15,7 +15,7 @@
5 \li Teem
6 \li OpenHaptics: (proprietary drivers)
7 \li QT: GUI and window-handling. Installed with Ubuntu.
8- \li Pygame: Is needed to get events from the pedals. Install even if the pedal is not used.
9+ \li Pygame: Is needed to get events from the pedals, install even if the pedals are not used.
10
11 \b H3D
12
13@@ -27,20 +27,19 @@
14 \b H3D - Fields
15
16 Fields are the most important building block of the whole API. In its simplest form, a Field is simply
17-an event handling mechanism. The fields are arranged in a network through which data is sent and handled by each field in turn. The connection between the fields is called routes and can be
18-of different types: one-to-one, one-to-many or many-to-many.
19+an event handling mechanism. The fields are arranged in a network through which data is sent and handled by each field in turn. The connection between the fields is called routes and can be of different types: one-to-one, one-to-many or many-to-many.
20
21
22 \b H3D - Nodes
23
24-Nodes are the traditional building blocks of a scene graph. Nodes have only one function in H3D, to be containers for fields for easier management. An entire application can be set up without the use of nodes, however such an application would soon become very hard to survey as the application becomes more complex.
25+Nodes are the traditional building blocks of a scene graph. Nodes have only one function in H3D, to be containers for fields for easier management. An entire application can be set up without the use of nodes. However such an application would soon become very hard to survey, as the application becomes more complex.
26
27-More useful information about programming with H3D in H3D API Manual: http://www.h3dapi.org/uploads/api/H3DAPI_20_beta/H3D%20API%20Manual.pdf
28+More useful information about programming with H3D can be found in the H3D API Manual: http://www.h3dapi.org/uploads/api/H3DAPI_20_beta/H3D%20API%20Manual.pdf
29
30
31 \b X3D
32
33-X3D is the ISO standard XML-based file format for representing 3D computer graphics, the successor to the Virtual Reality Modeling Language (VRML). The base for every scene is a x3d file containing information about haptic device calibration, stylus (drill graphics), which paths to use and their respective properties including properties of the force feedback calculation and carving .
34+X3D is the ISO standard, XML-based, file format for representing 3D computer graphics, the successor to the Virtual Reality Modeling Language (VRML). The base for every scene is a x3d file containing information about haptic device calibration, stylus (drill graphics), which paths to use and their respective properties including properties of the force feedback calculation and carving.
35
36 Read more about X3D: http://en.wikipedia.org/wiki/X3D
37
38@@ -53,14 +52,14 @@
39
40 \b Teem
41
42-Teem is a coordinated group of libraries for representing, processing, and visualizing scientific raster data. Teem includes command-line tools that permit the library functions to be quickly applied to files and streams without having to write any code. The most important and useful libraries in Teem are: nrrd (and the unu command-line tool on top of it) supports a range of operations for transforming N-dimensional raster data (resample, crop, slice, project, histogram, etc.), as well as the NRRD file format for storing arrays and their meta-information.
43+Teem is a coordinated group of libraries for representing, processing, and visualizing scientific raster data. Teem includes command-line tools that permit the library functions to be quickly applied to files and streams without having to write any code. The most important and useful libraries in Teem are: nrrd (and the unu command-line tool on top of it) it supports a range of operations for transforming N-dimensional raster data (resample, crop, slice, project, histogram, etc.), as well as the NRRD file format for storing arrays and their meta-information.
44
45 Read more: http://teem.sourceforge.net
46
47
48 \b MedX3D
49
50-MedX3D is an implementation of Volume Rendering component of X3D. MedX3D contains nodes for visual rendering of volume data, such as medical data from CT/MRI-scans. A X3D file using X3D volume rendering component nodes must specify a volume data node, a volume style node and the data (NRRD file) for which to apply this style. Forssim project also use the toolkit to include an implemetation of the Marching cubes algorithm.MedX3d requires Teem.
51+MedX3D is an implementation of Volume Rendering component of X3D. MedX3D contains nodes for visual rendering of volume data, such as medical data from CT/MRI-scans. A X3D file using X3D volume rendering component nodes must specify a volume data node, a volume style node and the data (NRRD file) for which to apply this style. Forssim project also use the toolkit to include an implementation of the Marching cubes algorithm.MedX3d requires Teem.
52
53 Read more:http://www.h3dapi.org/modules/mediawiki/index.php/MedX3D
54
55@@ -72,16 +71,16 @@
56 \section PolygonBasedModels Polygon Based Models
57 The traditional way to render computer graphics is with the use of polygons. A polygon is a flat surface with three or more sides. Usually only triangles are used since they are the simplest possible surface element. Any model is then created by putting lots of polygons together to make up its surface. Each polygon can then be painted in a specific color or with a more complex coloring by the use of textures, which are pictures that are pasted on to the polygon.
58
59-If you only use solid objects, and are never interested in what's below the surface, polygon based models are a very functional simplification. We use polygon based models for the surronding objects that you do not need to drill in.
60+If you only use solid objects, and are never interested in what's below the surface, polygon based models are a very functional simplification. We use polygon based models for the surrounding objects that you do not need to drill in.
61
62
63 \section VoxelBasedModels Voxel Based Models
64 If you need objects that actually have something on the inside -- either because you want to be able to see partly through them, or if you want to be able to remove arbitrary parts of the model and see what's behind them -- then you need voxel based models instead.
65
66-A voxel based model is built up of voxels instead of polygons. A voxel i a small volume element, and means that the entire volume is modelled and not just its surfaces. This is puts a harder strain on the processor than using polygons, but in some cases the advantages outweigh the costs. We use it for the teeth we drill in for a number of reasons.
67+A voxel based model is built up of voxels instead of polygons. A voxel is a small volume element, and means that the entire volume is modelled and not just its surfaces. This puts a harder strain on the processor than using polygons, but in some cases the advantages outweigh the costs. We use it for the teeth we drill in for a number of reasons.
68
69 -# Since we are making an oral surgery simulator, we tend do do a lot of drilling in teeth and bone. This means that we very often remove parts of the surface and bares what lies beneath.
70- -# The original data is taken from a CT-scan and is therefor already in a voxel based format.
71+ -# The original data is taken from a CT-scan and is therefore already in a voxel based format.
72 -# We want to be able to make different parts of the teeth transparent, to allow the user to see what parts of the tooth (even inside it) that need to be removed.
73
74 Our voxel based model has the size 113 x 190 x 131 voxels, which is fairly small. Normal sizes are 256 x 256 x 256, and nowadays even 512 x 512 x 512.
75@@ -94,51 +93,51 @@
76 The Material Segmentation Model Node defines each material expected within the volume under consideration. These include the likes of Air and Tooth Enamel. Using this Node, we can also define the hardness of each material.
77
78 \subsection PartitionModel Partition Model
79- The Partition Model is used to specify the parts that make up the volume. Regarding our application, we wish to divide a tooth into two parts, namely the Crown and the Root. It is import to note that the Crown consists of a number of different materials. Likewise, a single material can be found in both the Crown and Root.
80+ The Partition Model is used to specify the parts that make up the volume. Regarding our application, we wish to divide a tooth into two parts, namely the Crown and the Root. It is important to note that the Crown consists of a number of different materials. Likewise, a single material can be found in both the Crown and the Root.
81
82 \subsection DrillingSteps Drilling Steps
83- The removal of a tooth can be defined in terms of a number of drilling steps. For example, one step might include the removal of the Crown. The drilling steps Node defines each of these steps. This node also contains functionality so that drilling steps can be added or edited.
84+ The removal of a tooth can be defined in terms of a number of drilling steps, for example, one step might include the removal of the Crown. The Drilling Steps Node defines each of these steps. This node also contains functionality so that drilling steps can be added or edited.
85
86 \subsection VolumeModel Volume Model
87- The Volume Model Node contains data for every voxel contained within our volume. For example, we store here which material and which partition each voxel belongs to. In order to establish such information, a material nrrd file and a partitions nrrd file are passed to the Volume Model Node. Additionally, we pass our Material Segmentation Model and our Partition Model objects as fields to the Volume Model Node. This allows us to confirm that the nrrd files contain information for only those materials and partitions defined previously by the Material Segmentation Model and Partition Model Nodes.
88-
89- Likewise the same idea applies for the drilling steps, with the Volume Model also storing the drilling steps for each voxel. This infomation is again read from a nrrd file.
90-
91- The Volume Model Node also has a field which stores how much material remains for each voxel. This information is updated as we bore within the volume.
92-
93- We also have a field which stores for each voxel the time at which it was completely removed via the drilling process. This information can be saved to nrrd file and used again for such purposes as playback.
94+ The Volume Model Node contains data for every voxel contained within our volume, for example; here we store which material and which partition each voxel belongs to. In order to establish such information, a material nrrd file and a partition nrrd file are passed to the Volume Model Node. Additionally, we pass our Material Segmentation Model and our Partition Model objects as fields to the Volume Model Node. This allows us to confirm that the nrrd files contain information for only those materials and partitions defined previously by the Material Segmentation Model and Partition Model Nodes.
95+
96+ Likewise, the same idea applies for the drilling steps, with the Volume Model also storing the drilling steps for each voxel. This infomation is again read from a nrrd file.
97+
98+ The Volume Model Node also has a field which stores how much material that remains for each voxel. This information is updated as we bore within the volume.
99+
100+ We also have a field which stores the time at which it was completely removed via the drilling process, for each voxel. This information can be saved to nrrd file and used again for such purposes as playback.
101
102
103 \subsection VibrationNode Vibration Node
104- This node adds a small vibration in all 3 dimensions of the haptic device to mimic the feeling of a activated drill. The drill is activated by a switch. No more functionallity is present in this node, it is purely an X3D node.
105+ This node adds a small vibration in all 3 dimensions of the haptic device to mimic the feeling of an activated drill. The drill is activated by a switch. No more functionallity is present in this node, it is purely an X3D node.
106
107
108 \subsection StateMachine State Machine
109- The State Machine Node keeps trac of all the stages in an exercise and what requirements needs to be fullfiled in order to advance to the next state.
110-The field of requirements which can be used are:
111+ The State Machine Node keeps track of all the stages in an exercise and which requirements that need to be fulfilled in order to advance to the next state.
112+The fields of requirements which can be used are:
113 - triggerPointsRequiredField, the points in space to which the distance from the probe is calculated.
114-- distancesRequiredField, the distance between the probe and the trigger point which must be less than.
115+- distancesRequiredField, the distance between the probe and the trigger point which must be less than a predefined value set in a X3D-file.
116 - forcesRequiredField, the minimum force which must be exceeded in order to pass to the next state.
117-- deviceShapesRequiredField, the device used e.g drill or elevator.
118-- fractionOfExpertRequiredField, the fraction of how the expert has drilled in comparsion to what the user has done in this drill step.
119+- deviceShapesRequiredField, the device used, e.g. drill or elevator.
120+- fractionOfExpertRequiredField, the fraction of how the expert has drilled in comparison to what the user has done in this drill step.
121 - rotationAnglesRequiredField, the minimum angle in radians which the probe must be rotated around its axis to pass the state.
122
123-In addition to the requreiments there are some fields which specify the action taken when the requirements above are all passed.
124-- partitionNamesField, the name of the partition that will be removed during the completion of this state, e.g Crown, Root etc.
125-- drillingStepsField, the drillstep to whitch the current drill is connected.
126+In addition to the requirements there are some fields which specify the action taken when the requirements above are all passed.
127+- partitionNamesField, the name of the partition that will be removed during the completion of this state, e.g. Crown, Root etc.
128+- drillingStepsField, the drill-step to which the current drill is connected.
129 - stateField, the current state, should initially be set to 0.
130
131
132 \subsection DefaultValues Default Values
133- The default value node contains surtain values which are not directly connected to any other node. The values are premerly used by the UI in order to set parameters for other fields, e.g max drillspeed. The fields curretnly present in the default value node are
134+ The default value node contains certain values which are not directly connected to any other node. The values are primly used by the UI in order to set parameters for other fields, e.g. max drill-speed. The fields currently present in the default value node are:
135 - scaleFactorField, which are not currently used by anything
136 - rotationZoomFactorField, the initial zoom factor of rotational calibration of the model.
137 - translationZoomFactorField, the initial zoom factor of translational calibration of the model.
138-- drillSpeedMaxField, the max drillspeed that the user can currently achive by pressing the pedal to the floor.
139+- drillSpeedMaxField, the maximum drill-speed that the user can currently achieve by pressing the pedal to the floor.
140 - cutRadiusField, the radius of the drill head
141 - objectToMoveField, the index of the initial object to move when using the rotation or translation buttons.
142
143-This node is a pure X3D node and has no implementation, however the node is used by the UI for easy access of initial values.
144+This node is a pure X3D node and has no implementation. However, the node is used by the UI for easy access of initial values.
145
146
147 \subsection ADrillableNode ADrillable Node
148@@ -152,7 +151,7 @@
149 \subsection SaveVolume SaveVolume Node
150 <em>OBS: This node is depricated! Timestamp is saved using the saveTimeStamps() function in the VolumeModel node.</em>
151
152- The save volume node saves the current timestamp-values, stored in a field (and a multimap whch is used by AVolumePlaybackNode), to a nrrd file with
153+ The Save Volume Node saves the current timestamp-values, stored in a field (and a multimap whch is used by AVolumePlaybackNode), to a nrrd file with
154 the same size as the image nrrd file.
155
156 \subsection AVolumePlaybackNode AVolumePlayback Node
157@@ -162,19 +161,18 @@
158
159 Fields that are set from outside the node (GUI for example):
160 - direction: When set time is moved 0.1s in chosen direction. Direction is set by assigning value -1 (back) or 1 (forward) to field. <em>Currently not used in GUI.</em>
161-- directionFastPlayback: When set time is moved 1s in chosen direction. If faster rewind/forward functionality is needed change this value in AVolumePlaybackNode.cpp to another value higher than 1.
162+- directionFastPlayback: When Set Time is moved 1s in chosen direction. If faster rewind/forward functionality is needed change this value in AVolumePlaybackNode.cpp to another value higher than 1.
163 Direction is set by assigning value -1 (back) or 1 (forward) to field.
164-- volumeModel: A reference to VolumeModel node. Used for accessing the timestamp_map, a multimap holding all timestamp values and for removing voxels/reseting
165-voxels to original value during playback.
166+- volumeModel: A reference to VolumeModel node. Used for accessing the timestamp_map, a multimap holding all timestamp values and for removing voxels/resetting voxels to original value during playback.
167 - isPlay: When set to True the complete saved scenario will be played starting from current playback time. When set to False playback is stopped at
168 current playback time.
169-- resetPlaybackTimeField: When set to True playback-time is set to 0 and image is reset to beginning of scenario (before any drilling).
170+- resetPlaybackTimeField: When set to True playback time is set to 0 and the image is reset to beginning of scenario (before any drilling).
171 - playbackTimeField: The current playback time which corresponds to image displayed.
172
173 Local variables:
174 - elapsedTime: Time elapsed since last call to traverseSG().
175 - oldTime: Prevoious playbackTime.
176-- timeStep: The value playbackTime should be changed with when pressing rewind or fast forwad in paus-mode. Either 0.1s or 1s.
177+- timeStep: The value playbackTime should be changed when pressing rewind or fast forward in pause-mode. Either 0.1s or 1s.
178
179
180 When playback time is increasing (play-mode or fast forward) the voxels that should be removed are extracted from timestamp_map by using playback time as
181@@ -183,15 +181,14 @@
182 When playback time is decreasing (rewind) the voxels that should be reset are extracted from timestamp_map by using playbackTime as start-key
183 and oldTime as end-key. Playback time is decreased by timeStep.
184
185-Reset will cause playbackTimeField to be set to 0 and the image reset to original image (before drilling). Playback will be stopped i.e.
186+Reset will cause playbackTimeField to be set to 0 and the image reset to original image (before drilling). Playback will be stopped, i.e.
187 isPlay is set to false.<br>
188-Rewind/fast forward will cause the playback time to in-/decrease with 1s. If playback is currently running (isPlay=true) playback is first stopped before
189-the current playback time is updated. Otherwise playback time would be changed according to elapsedTime. The image is updated according to the new playback
190+Rewind/fast forward will cause the playback time to increase/decrease with 1s. If playback is currently running (isPlay=true) playback is first stopped before
191+the current playback time is updated. Otherwise, playback time would be changed according to elapsedTime. The image is updated according to the new playback
192 time and the playback is started again (isPlay=false). This was needed to make it possible to do rewind/fast forward during playback.
193
194-<b>Removing voxels</b> is done by using function setImageValue() in Volumemodel, setting the imagevalue of a particular voxel and corresponding material remaining to 0.<br>
195-<b>Adding a voxel</b> (doing Reset or Rewind) is done by setting the imagevalue of a particular voxel to its original value. This value is fetched from VolumeModel
196-using getOriginalImageValue(). Corresponding material remaining is set to 1.0 using setMaterialRemaining() in VolumeModel.
197+<b>Removing voxels</b> is done by using function setImageValue() in Volumemodel, setting the image-value of a particular voxel and corresponding material remaining to 0.<br>
198+<b>Adding a voxel</b> (doing Reset or Rewind) is done by setting the image-value of a particular voxel to its original value. This value is fetched from VolumeModel using getOriginalImageValue(). Corresponding material remaining is set to 1.0 using setMaterialRemaining() in VolumeModel.
199
200
201
202@@ -199,43 +196,43 @@
203 \section VisualRendering Visual Rendering
204
205 \subsection MarchingCubes Marching Cubes
206-Marching cubes is an alorithm that creates a polygonal surface from a volume of voxels. It generates a so called iso-surfaces at a density value in the data. It works by marching through the voxels in cubic groups of eight voxels at a time and checking whether any of them lies on different sides of the iso-value. For each group of eight voxels there are 256 different permutations possible, but due to symmetry it can be reduced to 15. These 15 cases each have a different polygon associated with them which are then combined into a continous surface.
207+Marching Cubes is an algorithm that creates a polygonal surface from a volume of voxels. It generates a so called iso-surface at a density value in the data. It works by marching through the voxels in cubic groups of eight voxels at a time and checking whether any of them lies on different sides of the iso-value. For each group of eight voxels there are 256 different permutations possible, but due to symmetry it can be reduced to 15. Each of these 15 cases have a different polygon associated with them, which are then combined into a continuous surface.
208
209
210 \subsection DirectVolumeRendering Direct Volume Rendering
211
212 There are a number of different types of volume renderings, but the following steps are common.
213
214-<em>Data traversal</em>. A number of sampling positions are chosen in the volume and is used to discretize the continous volume rendering integral.
215-
216-\em Interpolation. The sampling positions are most oftenly not aligned with the voxel grid. A continous 3D-field needs to be interpolated from the voxel grid to obtain the value for each sample point. The most common reconstruction method is trilinear interpolation, which is simply linerar interpolation in all three dimensions.
217-
218-\em Gradient computation. To enable shading and local illumination a set of normal vectors is needed. These can be obtained my calculating the gradient of the scalar voxel grid. Boundaries between objects in the volume are found where the values change most rapidly, i.e. where the gradient is large.
219-
220-\em Classification. Different sections of the volume can be classified as different materials, and can then be given differing optical properties. This enables you to filter out important regions of data. The transfer functions sets different colors an opacity to each segment.
221+<em>Data traversal</em>. A number of sampling positions are chosen in the volume and is used to discretize the continuous volume rendering integral.
222+
223+\em Interpolation. The sampling positions are most often not aligned with the voxel grid. A continuous 3D-field needs to be interpolated from the voxel grid to obtain the value for each sample point. The most common reconstruction method is trilinear interpolation, which is simply linear interpolation in all three dimensions.
224+
225+\em Gradient computation. To enable shading and local illumination a set of normal vectors is needed. These can be obtained by calculating the gradient of the scalar voxel grid. Boundaries between objects in the volume are found where the values change most rapidly, i.e. where the gradient is large.
226+
227+\em Classification. Different sections of the volume can be classified as different materials, and can then be given differing optical properties. This enables you to filter out important regions of data. The transfer functions set different colors and opacity to each segment.
228
229 <em> Shading and illumination</em>. Shading can be used to add a sense of depth in the image. It is applied after the transfer function has set the color of a pixel and changes this color depending on if the pixel is illuminated by a light source, or if it lies in shadow.
230
231-\em Compositing. The discretized volume integral is calculated iterativly by compositing. The volume can be traversed front-to-back or back-to-front. Front -to-back is what is used in this project and cast a set of rays from the eye point of the viewer into te volume.
232+\em Compositing. The discretized volume integral is calculated iteratively by compositing. The volume can be traversed front-to-back or back-to-front. Front -to-back is what is used in this project and cast a set of rays from the eye point of the viewer into the volume.
233
234
235 \subsection DVR_TransferFunctions Direct Volume Rendering - Transfer Functions
236-To separate interesting parts of a volume, transfer functions can be used. These transfer function sets different optical properties to each voxel depending on its original value. The simplest case is when only the scalar value of the voxel is used. The scalar value is most often based on the density of the material, and different objects in the volume have different densities. However, since the voxel grid is discrete there are sample errors near the boundaries of objects. The boundaries between enamel and air, for instance, should be quite distinct. However, due to the limited resolution, the voxels which lie directly on the boundary between the two materials get a value which lies somewhere in between. Since some other material, in our case gum, might have the same value as this average value the teeth will look covered by a thin layer of gum.
237+To separate interesting parts of a volume, transfer functions can be used. These transfer functions set different optical properties to each voxel depending on its original value. The simplest case is when only the scalar value of the voxel is used. The scalar value is most often based on the density of the material, and different objects in the volume have different densities. However, since the voxel grid is discrete there are sample errors near the boundaries of objects. The boundaries between enamel and air, for instance, should be quite distinct. However, due to the limited resolution, the voxels which lie directly on the boundary between the two materials get a value which lies somewhere in between. Since some other material, in our case gum, might have the same value as this average value the teeth will look covered by a thin layer of gum.
238
239-These errors can be avoided by using multidimentional transfer functions which also take into account the first and second derivative of the voxel field. Then you can se which voxels that lie in a homogenous surrounding and which lies in areas where values change rapidly. The voxels with a high derivative are most likely on the boundary between two materials and should be classified as either one of the surrounding materials.
240+These errors can be avoided by using multidimensional transfer functions which also take into account the first and second derivative of the voxel field, then you can see which voxels that lie in a homogeneous surrounding and which lies in areas where values change rapidly. The voxels with a high derivative are most likely on the boundary between two materials and should be classified as either one of the surrounding materials.
241
242
243 \subsection DVR_UseOfSegments Direct Volume Rendering - Use of segments
244
245 Even with the use of multidimensional transfer functions, the result is not perfect. The solution is to manually segment the volume and divide the volume into distinct sections. This can be done by giving each voxel an ID which maps it to a certain material. In our case we've divided the volume into enamel, dentin, jawbone, pulp and air.
246
247-Segmentation can be done in an ordinary image editor by first slicing the volume into 1-voxel thick slices and then simply paint the different segments on each slice. There are a few disadvantages to this method, though. First of all you get quite a large number of images to edit. It is also difficult to see what you did in a preceeding slice, since you open each slice as a new image. Therefor there are programs dedicated to the sole purpose of segmentation where you can inspect the volume from different viewpoints. They also have various helpful tools such as interpolating selections between slices, which means you do not have to edit each slice.
248+Segmentation can be done in an ordinary image editor by first slicing the volume into 1-voxel thick slices and then simply paint the different segments on each slice. There are a few disadvantages to this method, though. First of all you get quite a large number of images to edit. It is also difficult to see what you did in a preceeding slice, since you open each slice as a new image. Therefore there are programs dedicated to the sole purpose of segmentation where you can inspect the volume from different viewpoints. They also have various helpful tools such as interpolating selections between slices, which means you do not have to edit each slice.
249
250-When you have created a segmented volume you can use it as a look-up table, and by combining it with the original data you can render the segmented parts of the volume with different styles to help distinguishing between objects.
251+When you have created a segmented volume you can use it as a look-up table, and by combining it with the original data you can render the segmented parts of the volume with different styles to help distinguish between objects.
252
253
254 \section AudioRendering Audio Rendering
255-The Sound Node enables audio rendering. The audio rendering is controlled by the volumeDistributionField, which specifies the volume of each sound in the range [0,1]. The maximum of simulatious audiofiles are limited to 256. By routing the volumeDistribution from ADrillableNode to the sound node it is possible to make sound change depending on the material touched by the drill head. For sounds to be enabled at all drillSpeed must be set to more than 0.05, i.e the drill must be activated. drillPosField enable the possibility for the sound be played from a specific position within the scene. If this is done the order and number of soundfiles should match the materials in the MaterialSegmentationModel node.
256+The Sound Node enables audio rendering. The audio rendering is controlled by the volumeDistributionField, which specifies the volume of each sound in the range [0,1]. The maximum of simultaneous audio-files are limited to 256. By routing the volumeDistribution from ADrillableNode to the sound node it is possible to make sound change depending on the material touched by the drill head. For sounds to be enabled at all, drillSpeed must be set to more than 0.05, i.e. the drill must be activated. drillPosField enables the possibility for the sound be played from a specific position within the scene. If this is done the order and number of sound-files should match the materials in the MaterialSegmentationModel node.
257
258
259
260@@ -246,38 +243,38 @@
261 \section PolygonDeformation Polygon Deformation
262 \section ExtraPeripherals Extra peripherals (pedals)
263 \section GUI_ GUI
264-The graphical interface is premerily a for easy display and manipulation of fields present within the nodes. It supplies an easy access and runtime manipulation of the scen, state but also recording of new scenarios. The interface is consists of a few parts which are described below. The two main part are the login screen which follows by the main window, where some general settings can be made and formost some of the scenarios are choosen. During the actual exercise there are two modes, user and superuser. The super user mode gives more detailed information about the system and also the ability to calibrate the scene and model.
265+The graphical interface is primary a for easy display and manipulation of fields present within the nodes. It supplies an easy access and run-time manipulation of the scene state as well as recording of new scenarios. The interface consists of a few parts which are described below. The two main parts are the login screen and the main window, where some general settings can be made and foremost some of the scenarios are chosen. During the actual exercise there are two modes, user and superuser. The super user mode gives more detailed information about the system and also the ability to calibrate the scene and model.
266
267 \subsection MainWindow Main Window
268 \subsubsection LoginScreen Login Screen
269-When first starting the application one ends up in a login screen, this is no a security measurement just to distinguish between different users so that the right files are loaded if for instance the users chooses to run a playback of a performed exercise.
270+When first starting the application one sees a login screen, this is not a security measurement, it's just to distinguish between different users so that the right files are loaded if, for instance, the users chooses to run a playback of a performed exercise.
271 \subsubsection Main Select Case
272-From this view the users are allowed to choose between a number of prerecorded exercise scenarios, each of them presenting different aspects of dental surgery. The file will be loaded together with the graphical interface diplaying data related to the scenario, i.e fraction drilled by user vs the prerecorded expert, which state the user currenty have reached etc.
273+From this view the users are allowed to choose between a number of prerecorded exercise scenarios, each of them presenting different aspects of dental surgery. The file will be loaded together with the graphical interface displaying data related to the scenario, i.e. fraction drilled by user vs the prerecorded expert and which state the user currently have reached, etc.
274
275 \subsubsection LaunchX3DFile Launch a X3D File
276-Launching a X3D file via the file browser will not load the graphical interface displayed using the select case scene. That UI can only handle specially designed x3D files and since all X3D files can be loaded this way it is better to be safe than sorry.
277+Launching a X3D file via the file browser will not load the graphical interface displayed using the select case scene. That UI can only handle specially designed X3D files and since all X3D files can be loaded this way it is better to be safe than sorry.
278
279 \subsubsection Settings Settings
280-There are two settings in the settings tab, mirrored and stereo. Both of them conserning the display of the H3D window. mirrored, i.e the scene is mirrored to be used in a simulator which uses an mirror to display the scene. Stereo to enable real 3D using specially designed glasses.
281+There are two settings in the settings tab, mirrored and stereo. Both of them concerning the display of the H3D window. Mirrored, i.e. the scene is mirrored to be used in a simulator which uses a mirror to display the scene. Stereo to enable real 3D using specially designed glasses.
282
283 \subsubsection Output Output
284-Under this tab the standard output from the program is displayed as well as the standard error. This enables the developer team to see more about the core status of the program and easier debuging.
285+Under this tab the standard output from the program is displayed as well as the standard error. This enables the developer team to see more about the core status of the program and easier debugging.
286
287
288 \subsection ForssApp Running a Scenario
289-When a scenario is launched from the select scenario view a UI will be displayed which enables maipulation of some key parameters of the current scene.
290+When a scenario is launched from the select scenario view an UI will be displayed which enables manipulation of some key parameters of the current scene.
291
292 \subsubsection SuperUserMode Super User Mode
293 The super users mode consists of several blocks, each of them dedicated to a specific group of fields specifying the model or the users interaction with it.
294
295-\b Model Configuration
296-Within this block all aspects of the model can be changed, i.e all parts of the model can individually be moved or ortated in any direction. The step size of the movement or rotations is set by the sliders. Pushing the buttons will translate or rotate the selected model part one step in that direction. Holding down the button will auto manipulate it in the decired direction until the button is released.
297+<b> Model Configuration</b>
298+Within this block all aspects of the model can be changed, i.e. all parts of the model can individually be moved or rotated in any direction. The step size of the movement or rotations is set by the sliders. Pushing the buttons will translate or rotate the selected model part one step in that direction. Holding down the button will auto-manipulate it in the desired direction until the button is released.
299
300 \b Playback
301-Here the last recorded scenario can be played. Reset will move the indicator to the beginning (which is the time of the first voxel removed by the drill). During play the voxels will be removed and the drill steps, taken as if the user where actually performing the operations once more, but this time without the drill head beeing present. It can be useful to hide the head during playback to enhance the view, see facts about the user mode for more information.
302+Here the last recorded scenario can be played. Reset will move the indicator to the beginning (which is the time of the first voxel removed by the drill). During play the voxels will be removed and the drill steps, taken as if the user where actually performing the operations once more, but this time without the drill-head being present. It can be useful to hide the drill-head during playback to enhance the view, see facts about the user mode for more information.
303
304 \b Parameters
305-Here all paramters which will effect the drilling senceation can be set, i.e the diameter of the drilling head. The speed, or consequently the impact of the drill can be adjusted. Also all the hardness of the materials present in the current model can be individually changed to increase the fealing drilling in different materials. The colloring can also be adjusted to show where the expert has drilled, where the user has drilled, forbidden areas and also de difference between user and expert, all in order to guide the student trough the proper procedure.
306+Here all parameters which will effect the drilling sensation can be set, i.e. the diameter of the drilling head, the speed, or consequently the impact of the drill, can be adjusted. Also, all the hardness of the materials present in the current model can be individually changed to increase the feeling of drilling in different materials. The coloring can also be adjusted to show where the expert has drilled, where the user has drilled, forbidden areas and also the difference between user and expert, all in order to guide the student through the proper procedure.
307
308 \b Information
309
310
311=== modified file 'doc/03_Examples_and_Howtos.dox'
312--- doc/03_Examples_and_Howtos.dox 2009-05-20 23:21:47 +0000
313+++ doc/03_Examples_and_Howtos.dox 2009-07-15 12:38:40 +0000
314@@ -13,7 +13,7 @@
315
316 This is a very simple example showing a rotating cube.
317
318-To start it stand in the <tt>forssim/examples/x3d</tt> directory and type
319+To start it; stand in the <tt>forssim/examples/x3d</tt> directory and type
320 \code
321 QtH3DLoad AnimationExample.x3d
322 \endcode
323@@ -21,29 +21,28 @@
324 \section ExampleMouseDrill Drill without a haptic device
325 You can use your mouse to control the drill in the example mousedrill_cylinder.x3d
326
327-To start it stand in the <tt>forssim/examples/x3d</tt> directory and type
328+To start it; stand in the <tt>forssim/examples/x3d</tt> directory and type
329 \code
330 QtH3DLoad mousedrill_cylinder.x3d
331 \endcode
332
333-You can now use your mouse to drill into the cylinder. By pressing the left mouse button and moving the mouse the mouse moves in the x- and y-direction. By pressing the middle button the mouse moves in the z-direction when you move the mouse up and down. To make it
334-easier to drill the drill head has been enlarged.
335+You can now use your mouse to drill into the cylinder. When pressing the left mouse button and moving the mouse, it moves in the x- and y-direction. When pressing the middle button, the mouse instead moves in the z-direction, when you move the mouse up and down. To make it easier to drill the drill-head has been enlarged.
336
337 \subsection HowtoChangeIntoMouseDevice How to change existing files into using mouse as haptic device
338
339-It is possible to use the system without the access to a haptic device. Then edit the desired .x3d-file. First, add the libCandy.so to the included libraries. Then change the device, i.e AnyDevice, HapticDevice, PhantomDevice etc. to MouseHapticsDevice. Finally, if the MouseManager is present at the bottom of the .x3d-file remove it or comment it out.
340+It is possible to use the system without the access to a haptic device. To do so edit the desired .x3d-file. First, add the libCandy.so to the included libraries, then change the device, i.e. AnyDevice, HapticDevice, PhantomDevice etc. to MouseHapticsDevice and finally, if the MouseManager is present at the bottom of the .x3d-file remove it or comment it out.
341
342 TODO: Make into a script.
343
344 \section ExampleTouch Touchable cylinder
345-If you have a haptic device you can use touchable_cylinder.x3d to try it out.
346+If you have a haptic device you can use touchable_cylinder.x3d to try it.
347
348-To start it stand in the <tt>forssim/examples/x3d</tt> directory and type
349+To start it; stand in the <tt>forssim/examples/x3d</tt> directory and type
350 \code
351 QtH3DLoad touchable_cylinder.x3d
352 \endcode
353
354-You should now be able to feel the cylinder with the drill head.
355+You should now be able to feel the cylinder with the drill-head.
356
357
358 \section ExampleDrill Drillable cylinder
359
360=== modified file 'doc/04_Install_GNU.dox'
361--- doc/04_Install_GNU.dox 2009-05-20 23:21:47 +0000
362+++ doc/04_Install_GNU.dox 2009-07-15 12:38:40 +0000
363@@ -15,12 +15,12 @@
364 - HapticStation - a computer as above, with IEEE1394 (firewire) port plus a Sensable Omni haptic device
365 - Alban - a computer with Core2Quad, Nvidia Quadro 3700, printer port, IEEE1394 (firewire), StereoGraphics emitter and shutter glasses plus Phantom Desktop haptic device
366
367-* *) We only use Nvidia cards ourself, and do not recommend use of ATI/AMD based cards due to infamous driver issues. If you have such card and it does work well for you, please contact us and we will perhaps change the recommendation.
368+* *) We only use Nvidia cards ourselves, and do not recommend use of ATI/AMD based cards due to infamous driver issues. If you have such card and it does work well for you, please contact us and we will perhaps change the recommendation.
369
370 \section GNUUbuntu Install Ubuntu 9.04
371
372 Ubuntu 9.04 was released in April 2009 and is our main supported distribution. This is because of its ease of install and large user base.
373-If you have Windows and want to keep it, we recommend using wubi-installer (this is also a great way if you have a Mac an run dualboot already):
374+If you have Windows and want to keep it, we recommend using wubi-installer (this is also a great way if you have a Mac and run dual-boot already):
375
376 \subsection UbuntuEmpty Install Ubuntu 9.04 on empty computer
377 Install Ubuntu 9.04, preferably on an empty hard disk. Preferably set the partition(s) to 80Gb maximum. Set language to English.
378@@ -30,14 +30,14 @@
379 Go to http://www.wubi-installer.org
380 Download wubi.exe
381 Run it from a terminal with \c wubi\c .exe \c -\c -32bit (Important!)
382-As of a current bug in wubi, (May 17, 2009) you can't change the language settings in the installer. Since we recommend using the english version of Ubuntu, and if your Windows is configured for another language, do the following:
383+Due to a current bug in wubi, (May 17, 2009) you can't change the language settings in the installer. Since we recommend using the English version of Ubuntu, and if your Windows is configured for another language, do the following:
384
385 -# Change windows language to English (US) in control panel.
386 -# Start wubi from terminal with \c wubi\c .exe \c -<tt>-32bit</tt>
387 -# Default language should now be English. Click install.
388- -# Reboot upon request and choose "Ubuntu" in the Windows bootloader.
389+ -# Reboot upon request and choose "Ubuntu" in the Windows boot-loader.
390
391-When it's done, restart computer and choose Ubuntu in the Windows boot loader.
392+When it's done, restart computer and choose Ubuntu in the Windows boot-loader.
393
394 \section UbuntuConfigure Configure Ubuntu
395
396@@ -55,13 +55,13 @@
397
398 \section forsdep Install Forssim Dependencies
399
400-Now get forssim dependencies to bootstrap this software stack. To do so, we need bzr.
401+Now get Forssim Dependencies to bootstrap this software stack. To do so, we need bzr. Type the following in the terminal.
402
403 \code
404 sudo apt-get install bzr
405 \endcode
406
407-Then you will need to install some packages, as listed in provided script: DOC_TODO: (make the actual apt-get script be included in doxygen)
408+Then you will need to download our dependencies, where we've also includes some scripts to help with the installation. \c ./setup_ubuntu installs the extra packages we need for the project. DOC_TODO: (make the actual apt-get script be included in doxygen)
409
410 \code
411 cd Desktop
412@@ -77,25 +77,23 @@
413
414 Then, from \c forssim_dependencies, just run
415 \code
416-./make
417+./make
418 \endcode
419
420+to build all dependencies and locally install some shaders for the volume rendering.
421 HINT: You can build faster by running <tt>./make -j3</tt> for a dualcore and <tt>./make -j5</tt> for a quadcore.
422-You also need to install some shaders. In \c forssim_dependencies do:
423-\code
424-./install_shaders
425-\endcode
426
427 That's it. You should now be able to build forssim.
428
429 \section GNUCheckoutAndBuild Code checkout & build
430
431-When all dependencies are installed, you need to checkout (branch) our last release, compile, install and test it.
432+When all dependencies are installed, you need to checkout (branch) our latest release, compile, install and test it.
433 \code
434 cd Desktop
435 bzr branch lp:forssim
436 cd forssim
437 ./makeAll
438+sudo ldconfig
439 \endcode
440
441 Test now:
442@@ -105,29 +103,48 @@
443
444 That's it!
445
446-\section GNURegular Regular computer
447-If you have a regular computer, you wont have that much fun. However, you can still run one of the examples using your mouse to imitate a haptic device.
448-While standing in directory \c forssim type
449-
450-\code
451-cd examples/x3d/
452-QtH3DLoad mousedrill_cylinder.x3d
453-\endcode
454-
455-You will find more information on this example, and others in chapter 3. TODO: Should be autoreferenced.
456-
457-If you do not have a haptic device, then installation as described in this chapter is now completed. Refer to the other main chapters in the manual for
458-usage and examples of the forssim package. If you do have a haptic device or a full scale simulator, please continue with section 4.7 or 4.8.
459+\section FsWisdomSettings Editing the settings for FsWisdom
460+You can try some sample test cases in the simulator but to be able to download them,
461+ you will need to have obtained a password from Forsslund Systems.
462+
463+At the moment you might need to start the program once to create the settings file. Type
464+
465+\code
466+FsWisdom
467+\endcode
468+
469+from any location in a terminal.
470+
471+Press cancel to exit the program.
472+
473+Open up the settings file
474+\code
475+gedit .config/Forsslund\ Systems\ AB/FsWisdom.conf
476+\endcode
477+
478+and enter the password where it says
479+
480+\code
481+[database]
482+password=
483+\endcode
484+
485+Save and close the settings file.
486+
487+Then you can start \c FsWisdom again. See chapter 10 for a description of the program, or
488+chapter 3 for some simple examples,
489+but make sure to continue the installation first if you need to install a haptic device.
490+
491
492 \section GNUOmni HapticStation - Omni
493-If you do not have a Sensable Omni device, ignore this section.
494-
495-
496-If you have a Sensable Phantom Omni or Sensable Phantom Desktop haptic device, you need to install the proprietary OpenHaptics drivers provided from Sensable only (not for redistribution). There are some known issues with proprietary Sensable Phantom drivers, also known as Openhaptics, and IEEE1394 on modern kernels. A forum post on the internal sensable developer site describes the problem:
497+If you do not have a SensAble Phantom device, ignore this section.
498+
499+
500+If you have a SensAble Phantom Omni or SensAble Phantom Desktop haptic device, you need to install the proprietary OpenHaptics drivers provided from SensAble only (not for redistribution). There are some known issues with proprietary SensAble Phantom drivers, also known as OpenHaptics, and IEEE1394 on modern kernels. A forum post on the internal SensAble developer site describes the problem:
501
502 "Along with the new version of fedora a kernel upgrade to 2.6.25.x was necessary. Since then, (...) we are not able to continue our research with this device because the driver is too old. It uses a deprecated isochronous transfer mode that was dropped in mid 07 from the kernel." (Housetrek)
503
504-One work-around (until the day openhaptics is open source) is to downgrade the kernel.
505+One work-around (until the day OpenHaptics is open source) is to downgrade the kernel.
506
507 \subsection UbuntuKernelDowngrade Ubuntu kernel downgrade
508
509@@ -139,7 +156,7 @@
510 sudo apt-get install linux-image-2.6.22-14-generic linux-headers-2.6.22-14-generic
511 \endcode
512
513-The commands above is also provided in a script in the \c forssim_dependencies folder
514+The commands above are also provided in a script in the \c forssim_dependencies folder
515 \code
516 ./downgrade_kernel
517 \endcode
518@@ -156,7 +173,7 @@
519
520 \subsection InOH Install Open Haptics:
521
522-To install the propritary drivers (that you need to aquire directly from Sensable), do the following.
523+To install the proprietary drivers (that you need to acquire directly from Sensable), do the following.
524 Put the \c OpenHaptics_AE_LinuxV2.0.zip file in \c forssim_dependencies/
525
526 \code
527@@ -166,15 +183,14 @@
528 ./setup_openhaptics
529 \endcode
530
531-That will install \c alien (and \c libstdc++5), which converts the RPM packed drivers to debian packages and installes the drivers. Now all the device driver configuration is completed. We need to recompile the dependencies with
532-to support the new haptic device:
533+That will install \c alien (and \c libstdc++5), which converts the RPM packed drivers to debian packages and installs the drivers. Now all the device driver configuration is completed. We need to recompile the dependencies to support the new haptic device:
534
535 \code
536 cd forssim_dependencies
537 ./make
538 \endcode
539
540-You can configure PHANToM device with command:
541+You can configure the PHANToM device with command:
542 \code
543 PHANToMConfiguration
544 \endcode
545@@ -216,14 +232,14 @@
546 If you do not have a Sensable Desktop device, ignore this section.
547
548 \subsection Configure Nvidia drivers for Stereo glasses etc
549-Press <tt>Ctrl-Alt-F1</tt> to enter a real console. Then enter following:
550+Press <tt>Ctrl-Alt-F1</tt> to enter a real console, then enter following:
551
552 \code
553sudo /etc/init.d/gdm stop
554 cd Desktop
555 sudo chmod 755 NVIDIA-Linux-x86-180.44.pkg1.run
556 ./NVIDIA-Linux-x86-180.44.pkg1.run
557 \endcode
558-Answer yes to all questions in the setup program. Then copy in our \c xorg.conf
559+Answer yes to all questions in the setup program,then copy in our \c xorg.conf
560
561 \code
562sudo cp forssim_dependencies/xorg/xorg.conf.alban_ubuntu_0904 /etc/X11/xorg.conf
563 \endcode
564@@ -234,7 +250,7 @@
565 That should be all that's needed.
566
567 \subsubsection InstallPhantomDeviceDrivers Install Phantom Device Drivers with parallel port
568-We will now configure parallell ports to be used with Sensable Phantom Desktop. The first part is to get the parallell port working. After that, the proprietary drivers are installed.
569+We will now configure parallel ports to be used with Sensable Phantom Desktop. The first part is to get the parallel port working. After that, the proprietary drivers are installed.
570
571 Add the following line at the end of <tt>/etc/modprobe.d/options</tt>
572 \code
573@@ -246,13 +262,13 @@
574 sudo ln -s /dev/parport0 /dev/phnepp
575 \endcode
576
577-TODO: <tt>60-symlinks.rules</tt> does not exist in Ubuntu 9.04. Modify udev rules to make this soft link permenantly: add the following line at the end of <tt>/etc/udev/rules.d/60-symlinks.rules</tt>:
578+TODO: <tt>60-symlinks.rules</tt> does not exist in Ubuntu 9.04. Modify udev rules to make this soft link permanently: add the following line at the end of <tt>/etc/udev/rules.d/60-symlinks.rules</tt>:
579 \code
580 KERNEL=="parport*", SYMLINK+="phnepp"
581 \endcode
582
583-Enable any user to access parallel port: add the user to the same group as the port belongs to.
584-First check the permisson on the device (usually \c lp is the group)
585+Enable any user to access the parallel port: add the user to the same group as the port belongs to.
586+First check the permission on the device (usually \c lp is the group)
587 \code
588 #ls -l /dev/parport0
589 crw-rw---- 1 lp lp 99, 0 2009-01-13 11:04 /dev/parport0
590@@ -264,7 +280,7 @@
591 You need to logout and login again to enable the new group permission.
592
593
594-To install the propritary drivers (that you need to aquire directly from Sensable), do the following.
595+To install the proprietary drivers (that you need to acquire directly from Sensable), do the following.
596 Put the <tt>OpenHaptics_AE_LinuxV2.0.zip</tt> file in \c forssim_dependencies/
597
598 \code
599@@ -274,18 +290,18 @@
600 ./install_openhaptics
601 \endcode
602
603-That will install \c alien (and \c libstdc++5), which converts the RPM packed drivers to debian packages and installes the drivers. Now all the device driver configuration is completed. You need to rebuild dependencies (H3D) to support the new haptic device:
604+That will install \c alien (and \c libstdc++5), which converts the RPM packed drivers to debian packages and installs the drivers. Now all the device driver configurations are completed. You need to rebuild dependencies (H3D) to support the new haptic device:
605
606 \code
607 cd forssim_dependencies
608 ./make
609 \endcode
610
611-You can configure PHANToM device with command:
612+You can configure PHANToM device with the command:
613 \code
614 PHANToMConfiguration
615 \endcode
616-In the configuration window, choose <tt>Default PHANToM</tt> as hardware, \c Desktop as PHANToM Model and the base adress is set to 0x378.
617+In the configuration window, choose <tt>Default PHANToM</tt> as hardware, \c Desktop as PHANToM Model and the base address is set to 0x378.
618 Use \c PHANToMTest to calibrate device and run some box tests.
619
620 \code
621
622=== modified file 'doc/06_Setup_development_enviroment.dox'
623--- doc/06_Setup_development_enviroment.dox 2009-03-11 14:04:04 +0000
624+++ doc/06_Setup_development_enviroment.dox 2009-07-15 12:38:40 +0000
625@@ -3,7 +3,7 @@
626 \section GNUEnvironment GNU Environment
627 \subsection EclispeSetup Eclipse
628
629-Ubuntu 8.10 comes with Eclipse 3.2 (if you install it) so we need to install manually.
630+Ubuntu 8.10 doesn't install Eclipse automatically so you need to install Eclipse 3.4.2 manually.
631
632 \code
633 sudo apt-get remove eclipse
634@@ -29,7 +29,7 @@
635 \subsection EclipseQt Eclipse Qt
636
637 <b>Install QT plugin</b>\n
638-1: Download qt-eclipse integrationpackage from: \n
639+1: Download qt-eclipse integration-package from: \n
640 http://dist.trolltech.com/developer/download/qt-eclipse-integration-linux.x86-1.4.3.tar.gz \n
641 2: If you have installed Eclipse under your home directory, e.g. /home/daliangwe, unpack the package there:
642 \code
643@@ -77,48 +77,48 @@
644
645 Step 2: Install bazaar – eclipse plugin:
646
647- -# Launch eclipse
648- -# Go to *Help* --> *Software updates*
649- -# Click *Available Software* --> *Add Site...*
650- -# In the location field, enter the URL: http://verterok.com.ar/bzr-eclipse/update-site/
651- -# Click *refresh*, enter "bazaar"
652- -# Select "Eclipse plugin for Bazaar"
653+ -# Launch eclipse.
654+ -# Go to *Help* --> *Software updates*.
655+ -# Click *Available Software* --> *Add Site...*.
656+ -# In the location field, enter the URL: http://verterok.com.ar/bzr-eclipse/update-site/.
657+ -# Click *refresh*, enter "bazaar".
658+ -# Select "Eclipse plugin for Bazaar".
659 -# Click *Install*, and this will launch a wizard (license agreement, etc).
660 -# Restart Eclipse.
661 -# If needed: Go to: Window --> Preferences --> Team --> Bazaar and Enter the path to the bzr executable. The path should be /usr/bin/bzr.
662- -# Click ok, thats it, you should now have an working Eclipse with bazaar-plugin.
663+ -# Click OK, that's it, you should now have a working Eclipse with bazaar-plugin.
664
665 Optional:
666
667 -# To activate icon decorators go to: Preferences --> General --> Appearence --> Label Decorations and check Bazaar.
668- -# To activate text decorators go to: Preferences --> Team --> Bazaar --> Text Decorators
669- -# Customize console output: Preferences --> Team --> Bazaar --> Console
670+ -# To activate text decorators go to: Preferences --> Team --> Bazaar --> Text Decorators.
671+ -# Customize console output: Preferences --> Team --> Bazaar --> Console.
672
673-Step 3: Start an Eclipse project with bazaar.
674+Step 3: Start an Eclipse project with bazaar:
675
676 -# Download the latest source code from Forssim, by typing *bzr branch lp:forssim*. This will create an forssim folder with all the source code inside.
677 -# cd forssim
678 -# autoreconf -i
679 -# ./configure
680- -# Launch eclipse
681- -# During workspace promt, choose the folder where you have your forssim folder, e.g if you have your forssim folder in “Desktop” you choose *Desktop* as your workspace.
682- -# Create a new c++ projekt in eclipse
683- -# Choose *Makefile project --> empty project*
684- -# Type in forssim as project name
685- -# Click on finish
686- -# Click on *Ok* on the prompt about overide
687+ -# Launch eclipse.
688+ -# During workspace prompt, choose the folder where you have your forssim folder, e.g. if you have your forssim folder in “Desktop” you choose *Desktop* as your workspace.
689+ -# Create a new c++ project in eclipse.
690+ -# Choose *Makefile project --> empty project*.
691+ -# Type in forssim as project name.
692+ -# Click on finish.
693+ -# Click on *Ok* on the prompt about override.
694
695- -# Now you should have all the files in a new project called forssim in eclipse with bazaar and buidling support
696- -# To verify, try to build the project
697+ -# Now you should have all the files in a new project called forssim in eclipse with bazaar and building support.
698+ -# To verify, try to build the project.
699 -# Also for bazaar commands, right click on the project folder and go to team. This will open up the bazaar syntax view.
700- -# Verify that you can commit and push
701-
702-Step 4: Run X3D files from eclipse
703-
704- -# Open Eclipse
705- -# Select Run > External Tools > External Tools configuration
706- -# Click on Program in the Configurations pane
707- -# Click the New button to create a new configuration
708+ -# Verify that you can commit and push.
709+
710+Step 4: Run X3D files from eclipse:
711+
712+ -# Open Eclipse.
713+ -# Select Run > External Tools > External Tools configuration.
714+ -# Click on Program in the Configurations panel.
715+ -# Click the New button to create a new configuration.
716 -# Fill in the following values:
717
718 - Name: H3DLoad
719@@ -128,7 +128,7 @@
720 -# Click Apply and close the External Tools dialog box
721 -# Verify that *foot.x3d* is working by running the code from eclipse *H3DLoad*
722
723-NOTE: I've hardcoded in the arguments to run foot.x3d all the time which is not so good. There should be a better way to configure this so that all .x3d files can be run from eclipse. But for now this is the solution. Another issue that I came uppon was that even if you build everything In eclipse you need to run *sudo make install* in the terminal for the changes to go trough to the files. Maybe there is a solution for that also so that eclipse can do the *sudo make install* from some kind of script.
724+NOTE: I've hardcoded in the arguments to run foot.x3d all the time, which is not so good. There should be a better way to configure this so that all .x3d files can be ran from eclipse. But for now this is the solution. Another issue that I came upon was that even if you build everything in eclipse you need to run *sudo make install* in the terminal for the changes to go through to the files. Maybe there is a solution for that also so that eclipse can do the *sudo make install* from some kind of script.
725
726
727 \section WindowsEnvironment Windows Environment
728
729=== modified file 'doc/07_Join_team.dox'
730--- doc/07_Join_team.dox 2009-03-11 14:04:04 +0000
731+++ doc/07_Join_team.dox 2009-07-15 12:38:40 +0000
732@@ -21,7 +21,7 @@
733 ssh-keygen -t rsa
734 \endcode
735
736-When prompted, press Enter to accept the default file name for your key. Next, enter then confirm a password to protect your SSH key. Your key pair is stored in ~/.ssh/ as id_rsa.pub (public key) and id_rsa (private key).
737+When prompted, press Enter to accept the default file name for your key. Next, enter and confirm a password to protect your SSH key. Your key pair is stored in ~/.ssh/ as id_rsa.pub (public key) and id_rsa (private key).
738
739 Do:
740
741@@ -75,11 +75,12 @@
742
743 \subsection DoxygenML Doxygen mark up language
744
745-And how to use doxygen Doxygen is a source code documentation generator tool for C++, C, Java, Objective-C and Python. To download, install and compile Doxygen on your computer follow the instructions below. You will need GNU tools flex and bison to build the executable.
746+Doxygen is a source code documentation generator tool for C++, C, Java, Objective-C and Python. To download, install and compile Doxygen on your computer follow the instructions below. You will need GNU tools flex and bison to build the executable.
747
748 \code
749 sudo apt-get install doxygen flex bison
750 \endcode
751+
752
753 To allow Doxygen to use your comments to generate the documentation you need to comment your code in a specific way. To include a brief comment use three forward slashes instead of the usual two:
754
755
756=== modified file 'doc/08_Dev_method.dox'
757--- doc/08_Dev_method.dox 2009-03-11 14:04:04 +0000
758+++ doc/08_Dev_method.dox 2009-07-15 12:38:40 +0000
759@@ -1,16 +1,16 @@
760 /**
761 \page DevMethod Development method
762-\section VersioningPolicy Versioning policy
763+\section VersioningPolicy Version policy
764 (stable, unstable)
765 \section DevScrum Scrum
766
767 We are using Scrum as a process framework for the development of the Forssim project. Scrum is an iterative incremental process of software development commonly used with agile software development.
768
769-Each sprint is 2 week long and at the end of a sprint cycle a demo is presented to the product owner and a new open source release is uploaded to the Launchpad team site.
770+Each sprint is 2 weeks long and at the end of a sprint cycle a demo is presented to the product owner and a new open source release is uploaded to the Launchpad team site.
771
772 Daily scrum meetings at 09.30.
773
774-\b TODO: Tickets/post it notes and how we use them
775+\b TODO: Tickets/post it notes and how we use them.
776
777
778 \section GevBzr Bzr
779@@ -22,13 +22,13 @@
780 bzr launchpad-login <username>
781 \endcode
782
783-If everything went ok you should see no message. Tell bazaar who you are.
784+If everything went OK you shouldn't see any message. Tell bazaar who you are:
785
786 \code
787 bzr whoami
788 \endcode
789
790-Update the information
791+Update the information:
792
793 \code
794 bzr whoami "Lucas mylastname <myemail@example.com>"
795@@ -51,7 +51,7 @@
796 sudo make install
797 \endcode
798
799-Note, if you'r running a newly installed system it may be necessary to relink the libraries:
800+Note, if you're running a newly installed system it may be necessary to relink the libraries:
801
802 \code
803 sudo ln -s /usr/local/lib/* /usr/lib/
804
805=== modified file 'doc/09_FAQ.dox'
806--- doc/09_FAQ.dox 2009-04-28 09:21:29 +0000
807+++ doc/09_FAQ.dox 2009-07-15 12:38:40 +0000
808@@ -2,7 +2,7 @@
809 \page FAQ FAQ
810
811 \section NoHeader The first word is missing from the section title
812-If you've added a \c \\section or \c \\subsection with a title with more than one word, you will notice that the first word after \c \\section is missing. This is because Doxygen sets this word as a label, that you can later refer to with either \c \\ref (which inserts a reference) or \c \\sa (which inserts a "see also" paragraph). If it's just one word Doxygen will use it both as a label and as the title of the section. The solution when using a title with more than one word is to simply add a word -- which needs to be unique -- immediately after the \c \\section tag. E.g.:
813+If you've added a \c \\section or \c \\subsection with a title with more than one word, you will notice that the first word after \c \\section is missing. This is because Doxygen sets this word as a label that you can later refer to with either \c \\ref (which inserts a reference) or \c \\sa (which inserts a "see also" paragraph). If it's just one word Doxygen will use it both as a label and as the title of the section. The solution when using a title with more than one word is to simply add a word -- which needs to be unique -- immediately after the \c \\section tag. E.g.:
814
815 \code
816 \section ASimpleSection A simple section
817@@ -25,30 +25,30 @@
818 \section PedalIssues Issues when using pedals
819
820 \subsection UsePedals How do I get the pedals to work?
821-Since pygame loads some kind of sound manager it causes the simulator to crash since we have to use the downgraded kernel with which the sound doesn't work. Because of that we have commented out all code connected to pygame while we develop.
822+Since pygame loads some kind of sound manager it causes the simulator to crash because we have to use the downgraded kernel with which the sound doesn't work. Because of that we have commented out all code connected to pygame while we develop.
823
824-If however, you have a Phantom Desktop you can use the pedals by simply commenting the code back in. Its the code that starts with \c #pygame.init() and ends at the end of the file.
825+If however, you have a Phantom Desktop you can use the pedals by simply commenting the code back in. It's the code that starts with \c #pygame.init() and ends at the end of the file.
826
827 \subsection CalibratePedals Calibrate Pedals
828-If you use the Logitech wheel & pedals you will need to calibrate them. To do this type
829+If you use the Logitech wheel & pedals you will need to calibrate them. To do this type:
830
831 \code
832 sudo jscal -c /dev/input/js0
833 \endcode
834
835-then complete the following routine:
836+Then complete the following routine:
837
838-- Turn wheel to its LEFTMOST position, press Enter
839-- Turn wheel to its CENTERED position, press Enter
840-- Turn wheel to its RIGHTMOST position, press Enter
841-- Press the RIGHT pedal. When it is FULLY pressed, press Enter
842-- Release the pedal. When NONE of the pedals are pressed, press Enter
843-- Press the LEFT pedal. When it is FULLY pressed, press Enter
844+- Turn wheel to its LEFTMOST position, press Enter.
845+- Turn wheel to its CENTERED position, press Enter.
846+- Turn wheel to its RIGHTMOST position, press Enter.
847+- Press the RIGHT pedal. When it is FULLY pressed, press Enter.
848+- Release the pedal. When NONE of the pedals are pressed, press Enter.
849+- Press the LEFT pedal. When it is FULLY pressed, press Enter.
850
851 Your wheel & pedals should now be calibrated.
852
853 \section BzrHowTo Bzr how-to
854-The biggest difference between bzr and subversion is that bzr don't need any server, not even a local server. It is just a bunch of meta-files. This means that you can create a new repository extremly quick, and start committing, branching, merging and publish your results immediatley. You can even physically move the repository with a usb stick to a friends computer and continue commiting locally there. Launchpad, our main repository holder, should be more seen as a file area than a revision control server (altough it do have extra features). This how-to or - as put it in swedish/english: lazy dog, explains the commands necessary for our development:
855+The biggest difference between bzr and subversion is that bzr don't need any server, not even a local server. It is just a bunch of meta-files. This means that you can create a new repository extremely quick, and start committing, branching, merging and publish your results immediately. You can even physically move the repository with an usb stick to a friend's computer and continue committing locally there. Launchpad, our main repository holder, should be more seen as a file area than a revision control server (although it do have extra features). This how to put it in Swedish/English: lazy dog, explains the commands necessary for our development:
856
857 \b TODO: Describe with images how we do it best
858
859@@ -73,7 +73,7 @@
860 \code
861 > bzr branch pelle pelle.hack
862 \endcode
863-gives you a directory pelle.hack with a perfect branch of commited files
864+gives you a directory pelle.hack with a perfect branch of committed files
865 of pelle repository
866
867
868@@ -148,9 +148,9 @@
869 \subsection BzrSuggestMerge Suggest merge
870
871
872-\section Ubuntufaq Ubuntu FAQ
873+\section Ubuntufaq Ubuntu
874
875-I seem to miss a certain command? For example I get thiss error "make: xelatex: Command not found"
876+I seem to miss a certain command, for example, I get this error "make: xelatex: Command not found"
877 \code
878 jonas@ubuntu:~/forssim/Doxypaper/latex$ apt-cache search xelatex
879 texlive-xetex - TeX Live: XeTeX macros
880@@ -177,7 +177,7 @@
881 \code
882 ffmpeg2theora -p preview input_file.dv -o output_file.ogg
883 \endcode
884-if lower quality is ok.
885+if lower quality is OK.
886
887
888 \section Debian
889@@ -190,6 +190,6 @@
890 \code
891 root ALL=(ALL) ALL
892 \endcode
893-with username istead of root
894+with username instead of root
895
896 */
897
898=== modified file 'doc/10_Demo.dox'
899--- doc/10_Demo.dox 2009-03-05 11:24:37 +0000
900+++ doc/10_Demo.dox 2009-07-15 12:38:40 +0000
901@@ -1,7 +1,7 @@
902 /**
903 \page DemoDoc Demo
904
905-Detail description of full scale demo
906+Detail description of full-scale demo
907
908
909 */
910
911=== modified file 'doc/FsWisdom_quick_install.odt'
912Binary files doc/FsWisdom_quick_install.odt 2009-07-10 13:15:54 +0000 and doc/FsWisdom_quick_install.odt 2009-07-15 12:42:30 +0000 differ
913=== modified file 'doc/MainPage.dox'
914--- doc/MainPage.dox 2009-03-05 11:24:37 +0000
915+++ doc/MainPage.dox 2009-07-15 12:38:40 +0000
916@@ -2,7 +2,7 @@
917
918 \mainpage Introduction to Forssim
919
920-Forssim is a foss project aiming at being the reference implementation of haptic (force feedback) algorithms for virutal hard material collision handling and data modification. Typical application is surgical simulation of drill-bone interaction.
921+Forssim is a foss project aiming at being the reference implementation of haptic (force feedback) algorithms for virtual hard material collision handling and data modification. Typical application is surgical simulation of drill-bone interaction.
922
923 To get involved with development please send an e-mail to the mailinglist, or to jonas@forsslundsystems.se
924
925@@ -13,7 +13,7 @@
926 - Here we add something about oralsim
927 - Work in progress is demonstration for liver surgery planning
928
929-\section DevPotentials Future development possibilites and application areas
930+\section DevPotentials Future development possibilities and application areas
931
932 */
933
934
935=== modified file 'doc/intro.DEPRECATED'
936--- doc/intro.DEPRECATED 2009-03-11 14:04:04 +0000
937+++ doc/intro.DEPRECATED 2009-07-15 12:38:40 +0000
938@@ -1,7 +1,7 @@
939 /**
940
941 \page Project_Introduction_Document DEPRECATED Project Introduction Document
942- See 3.5 for an overview of the filestructure in forssim and different models such as oralsim.
943+ See 3.5 for an overview of the file-structure in forssim and different models such as oralsim.
944 \section Forssim Forssim
945
946 About this document...
947@@ -14,7 +14,7 @@
948 \subsection Introduction Introduction
949
950 We are using the following general technologies:\n
951-\b TODO: Add about QT? Sort of a general technology for crossplatform GUI development.
952+\b TODO: Add about QT? Sort of a general technology for cross-platform GUI development.
953
954 \b H3D
955
956@@ -26,13 +26,12 @@
957 \b H3D - Fields
958
959 Fields are the most important building block of the whole API. In its simplest form, a Field is simply
960-an event handling mechanism. The fields are arranged in a network through which data is sent and handled by each field in turn. The connection between the fields is called routes and can be
961-of different types: one-to-one, one-to-many or many-to-many.
962+an event handling mechanism. The fields are arranged in a network through which data is sent and handled by each field in turn. The connection between the fields is called routes and can be of different types: one-to-one, one-to-many or many-to-many.
963
964
965 \b H3D - Nodes
966
967-Nodes are the traditional building blocks of a scene graph. Nodes have only one function in H3D, to be containers for fields for easier management. An entire application can be set up without the use of nodes, however such an application would soon become very hard to survey as the application becomes more complex.
968+Nodes are the traditional building blocks of a scene graph. Nodes have only one function in H3D, to be containers for fields for easier management. An entire application can be set up without the use of nodes. However, such an application would soon become very hard to survey as the application becomes more complex.
969
970 More useful information about programming with H3D in H3D API Manual: http://www.h3dapi.org/uploads/api/H3DAPI_20_beta/H3D%20API%20Manual.pdf
971
972@@ -58,7 +57,7 @@
973
974 \b MedX3D
975
976-MedX3D is an implementation of Volume Rendering component of X3D. MedX3D contains nodes for visual rendering of volume data, such as medical data from CT/MRI-scans. A X3D file using X3D volume rendering component nodes must specify a volume data node, a volume style node and the data (NRRD file) for which to apply this style. Forssim project also use the toolkit to include an implemetation of the Marching cubes algorithm.MedX3d requires Teem.
977+MedX3D is an implementation of Volume Rendering component of X3D. MedX3D contains nodes for visual rendering of volume data, such as medical data from CT/MRI-scans. A X3D file using X3D volume rendering component nodes must specify a volume data node, a volume style node and the data (NRRD file) for which to apply this style. Forssim project also use the toolkit to include an implementation of the Marching cubes algorithm.MedX3d requires Teem.
978
979 Read more:http://www.h3dapi.org/modules/mediawiki/index.php/MedX3D
980
981@@ -68,10 +67,10 @@
982
983 This project uses these projects as dependencies:
984
985- \li SenseGraphics: H3D API, Consist of the libraries: H3DAPI, HAPI and H3DUtil
986- \li SenseGraphics: MedX3D, for visual volume rendering
987- \li Teem
988- \li OpenHaptics: (proprietary drivers)
989+ \li SenseGraphics: H3D API, Consist of the libraries: H3DAPI, HAPI and H3DUtil.
990+ \li SenseGraphics: MedX3D, for visual volume rendering.
991+ \li Teem.
992+ \li OpenHaptics: (proprietary drivers).
993 \li QT: GUI and window-handling. Installed with Ubuntu.
994 \li Pygame: Is needed to get events from the pedals. Install even if the pedal is not used.
995
996@@ -82,7 +81,7 @@
997 \section Section_2 Install and setup dependencies
998
999 \subsection Documentation Documentation
1000-Before you do anything else, install Ubuntu 8.10 i386. Then you need to install Bazaar and checkout Forssim to get this document
1001+Before you do anything else, install Ubuntu 8.10 i386, then you need to install Bazaar and checkout Forssim to get this document
1002 and related files:
1003 \code
1004 sudo apt-get install bzr
1005@@ -108,7 +107,7 @@
1006
1007 \subsection Ubuntu Ubuntu Base Packages
1008
1009-Install Ubuntu GNU/Linux 8.10. Then you need to install the following packages: \n
1010+Install Ubuntu GNU/Linux 8.10, then you need to install the following packages: \n
1011 bzr cmake gcc g++ libxerces-c28 libxerces-c2-dev ftgl-dev libopenal1 libalut0
1012 libalut-dev libopenal-dev libglew1.5-dev freeglut3 libglut3-dev
1013 libcurl4-openssl-dev libaudiofile-dev libfontconfig1-dev libfontconfig1
1014@@ -125,7 +124,7 @@
1015 ./forssim/dep/setup_ubuntu
1016 \endcode
1017
1018-If you have a Sensable Phantom Omni or Sensable Phantom Desktop haptic device, you need to install the proprietary OpenHaptics drivers provided from Sensbale only (not for redistribution). If you don't have a haptic device or trying with for example Novint Falcon, you can skip this step.
1019+If you have a SensAble Phantom Omni or SensAble Phantom Desktop haptic device, you need to install the proprietary OpenHaptics drivers provided from Sensbale only (not for redistribution). If you don't have a haptic device or trying with for example Novint Falcon, you can skip this step.
1020
1021 \subsection OpenHaptics Open Haptics
1022
1023@@ -167,13 +166,13 @@
1024
1025
1026 \subsection System System configuration
1027-If you have Omni (developer station) or Phantom (full Simulator station) the setup is diffrent. Follow the right one.
1028+The setup is different if you have Phantom Omni (developer station) or Phantom Desktop (full Simulator station), so make sure you follow the right instructions.
1029
1030 \subsection ystem System configuration: Developer station Omni
1031
1032 \subsubsection PhantomDeviceDrivers Phantom Device Drivers with IEEE1394 (OmniSetup)
1033
1034-There are some known issues with proprietary Sensable Phantom drivers, also known as Openhaptics, and IEEE1394 on modern kernels. A forum post on the internal sensable developer site describes the problem:
1035+There are some known issues with proprietary SensAble Phantom drivers, also known as Openhaptics, and IEEE1394 on modern kernels. A forum post on the internal SensAble developer site describes the problem:
1036
1037 "Along with the new version of fedora a kernel upgrade to 2.6.25.x was necessary. Since then, (...) we are not able to continue our research with this device because the driver is too old. It uses a deprecated isochronous transfer mode that was dropped in mid 07 from the kernel." (Housetrek)
1038
1039@@ -189,20 +188,20 @@
1040 sudo gedit /etc/apt/sources.list
1041 \endcode
1042
1043-Add the following line
1044+Add the following line:
1045
1046 \code
1047 deb http://se.archive.ubuntu.com/ubuntu/ gutsy main
1048 \endcode
1049
1050-Then run
1051+Then run:
1052
1053 \code
1054 sudo apt-get update
1055 sudo apt-get install linux-image-2.6.22-14-generic
1056 \endcode
1057
1058-And reboot. Choose 2.6.22-14 in the boot loader. It is as easy as that. If you need proprietary graphics drivers (which we do), you probably need to update them too. A suggestion is to use envy:
1059+And reboot. Choose 2.6.22-14 in the boot loader, it is as easy as that. If you need proprietary graphics drivers (which we do), you probably need to update them too. A suggestion is to use envy:
1060
1061 \code
1062 sudo apt-get install envyng-core
1063@@ -296,7 +295,7 @@
1064
1065
1066 \subsubsection InstallPhantomDeviceDrivers Install Phantom Device Drivers with parallel port
1067-We will now configure parallell ports to be used with Sensable Phantom Desktop.
1068+We will now configure parallel ports to be used with SensAble Phantom Desktop.
1069 Add the following line at the end of /etc/modprobe.d/options
1070 \code
1071 options parport_pc io=0x378 irq=7
1072@@ -306,18 +305,18 @@
1073 \code
1074 ls -l /dev/phnepp
1075 \endcode
1076-If there is no /dev/phnepp file, then one must be created and softlinked to /dev/parport0
1077+If there is no /dev/phnepp file, then one must be created and soft-linked to /dev/parport0
1078 \code
1079 sudo ln -s /dev/parport0 /dev/phnepp
1080 \endcode
1081
1082-Modify udev rules to make this soft link permenantly: add the following line at the end of /etc/udev/rules.d/60-symlinks.rules:
1083+Modify udev rules to make this soft link permanently: add the following line at the end of /etc/udev/rules.d/60-symlinks.rules:
1084 \code
1085 KERNEL=="parport*", SYMLINK+="phnepp"
1086 \endcode
1087
1088 Enable any user to access parallel port: add the user to the same group as the port belongs to.
1089-First check the permisson on the device (usually lp is the group)
1090+First check the permission on the device (usually lp is the group)
1091 \code
1092 #ls -l /dev/parport0
1093 crw-rw---- 1 lp lp 99, 0 2009-01-13 11:04 /dev/parport0
1094@@ -332,7 +331,7 @@
1095 \code
1096 PHANToMConfiguration
1097 \endcode
1098-In the configuration window, choose "Default PHANToM" as hardware, "desktop" as PHANTomModel and the base adress is set to 0x378.
1099+In the configuration window, choose "Default PHANToM" as hardware, "desktop" as PHANTomModel and the base address is set to 0x378.
1100
1101 \subsection Test Verify installation
1102 Use the following program to verify the driver is installed correctly
1103@@ -374,7 +373,7 @@
1104 sudo ln -s /usr/local/lib /usr/lib
1105 \endcode
1106
1107-Test now:
1108+Now test:
1109 \code
1110 H3DLoad foot.x3d
1111 \endcode
1112@@ -393,7 +392,7 @@
1113 \endcode
1114
1115
1116-\subsubsection hapticdevice How to run with phantom haptic device:
1117+\subsubsection hapticdevice How to run with PHANTOM haptic device:
1118
1119 \code
1120 sudo modprobe raw1394
1121@@ -412,20 +411,20 @@
1122 PHANToMTest
1123 \endcode
1124
1125-\subsubsection Troubleshoot_phantom Troubleshoot erros with haptic device:
1126+\subsubsection Troubleshoot_phantom Troubleshoot errors with haptic device:
1127
1128 -# Are you running right kernel?
1129 \code
1130 jonas@jonas-desktop:~$ uname -a
1131 Linux jonas-desktop 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux
1132 \endcode
1133- -# Reboot computer with phantom connected
1134- -# Make sure you run the commands above
1135+ -# Reboot computer with phantom connected.
1136+ -# Make sure you run the commands above.
1137
1138 \section Section_3 Development process
1139 \subsection GenerateDocumentation Generate Documentation
1140
1141-And how to use doxygen Doxygen is a source code documentation generator tool for C++, C, Java, Objective-C and Python. To download, install and compile Doxygen on your computer follow the instructions below. You will need GNU tools flex and bison to build the executable.
1142+Doxygen is a source code documentation generator tool for C++, C, Java, Objective-C and Python. To download, install and compile Doxygen on your computer follow the instructions below. You will need GNU tools flex and bison to build the executable.
1143
1144 \code
1145 sudo apt-get install doxygen flex bison
1146@@ -497,7 +496,7 @@
1147 doxygen doxygenDoc
1148 \endcode
1149
1150-A output directory called Doxygen will be generated with the code documentation.
1151+An output directory called Doxygen will be generated with the code documentation.
1152
1153 To see the generated html documentation type:
1154
1155@@ -525,7 +524,7 @@
1156 sudo apt-get remove eclipse
1157 \endcode
1158
1159-Go to http://www.eclipse.org and download "Eclipse IDE for C/C++ Developers (68 MB)" then,
1160+Go to http://www.eclipse.org and download "Eclipse IDE for C/C++ Developers (68 MB)" then;
1161 \code
1162 cd ~/Desktop
1163 tar -xzvf eclipse-cpp-ganymede-SR1-linux-gtk.tar.gz
1164@@ -541,7 +540,7 @@
1165 \endcode
1166
1167 <b>Install QT plugin</b>\n
1168-1: Download qt-eclipse integrationpackage from: \n
1169+1: Download qt-eclipse integration-package from: \n
1170 http://dist.trolltech.com/developer/download/qt-eclipse-integration-linux.x86-1.4.3.tar.gz \n
1171 2: If you have installed Eclipse under your home directory, e.g. /home/daliangwe, unpack the package there:
1172 \code
1173@@ -579,16 +578,16 @@
1174
1175 Step 2: Install bazaar – eclipse plugin:
1176
1177- -# Launch eclipse
1178+ -# Launch eclipse.
1179 -# Go to *Help* --> *Software updates*
1180 -# Click *Available Software* --> *Add Site...*
1181 -# In the location field, enter the URL: http://verterok.com.ar/bzr-eclipse/update-site/
1182- -# Click *refresh*, enter "bazaar"
1183- -# Select "Eclipse plugin for Bazaar"
1184+ -# Click *refresh*, enter "bazaar".
1185+ -# Select "Eclipse plugin for Bazaar".
1186 -# Click *Install*, and this will launch a wizard (license agreement, etc).
1187 -# Restart Eclipse.
1188 -# If needed: Go to: Window --> Preferences --> Team --> Bazaar and Enter the path to the bzr executable. The path should be /usr/bin/bzr.
1189- -# Click ok, thats it, you should now have an working Eclipse with bazaar-plugin.
1190+ -# Click OK, that's it, you should now have an working Eclipse with bazaar-plugin.
1191
1192 Optional:
1193
1194@@ -603,23 +602,23 @@
1195 -# autoreconf -i
1196 -# ./configure
1197 -# Launch eclipse
1198- -# During workspace promt, choose the folder where you have your forssim folder, e.g if you have your forssim folder in “Desktop” you choose *Desktop* as your workspace.
1199- -# Create a new c++ projekt in eclipse
1200+ -# During workspace prompt, choose the folder where you have your forssim folder, e.g. if you have your forssim folder in “Desktop” you choose *Desktop* as your workspace.
1201+ -# Create a new c++ project in eclipse
1202 -# Choose *Makefile project --> empty project*
1203 -# Type in forssim as project name
1204 -# Click on finish
1205- -# Click on *Ok* on the prompt about overide
1206+ -# Click on *Ok* on the prompt about override
1207
1208- -# Now you should have all the files in a new project called forssim in eclipse with bazaar and buidling support
1209- -# To verify, try to build the project
1210+ -# Now you should have all the files in a new project called forssim in eclipse with bazaar and building support.
1211+ -# To verify, try to build the project.
1212 -# Also for bazaar commands, right click on the project folder and go to team. This will open up the bazaar syntax view.
1213- -# Verify that you can commit and push
1214+ -# Verify that you can commit and push.
1215
1216-Step 4: Run X3D files from eclipse
1217+Step 4: Run X3D files from eclipse:
1218
1219 -# Open Eclipse
1220 -# Select Run > External Tools > External Tools configuration
1221- -# Click on Program in the Configurations pane
1222+ -# Click on Program in the Configurations panel
1223 -# Click the New button to create a new configuration
1224 -# Fill in the following values:
1225
1226@@ -630,7 +629,7 @@
1227 -# Click Apply and close the External Tools dialog box
1228 -# Verify that *foot.x3d* is working by running the code from eclipse *H3DLoad*
1229
1230-NOTE: I've hardcoded in the arguments to run foot.x3d all the time which is not so good. There should be a better way to configure this so that all .x3d files can be run from eclipse. But for now this is the solution. Another issue that I came uppon was that even if you build everything In eclipse you need to run *sudo make install* in the terminal for the changes to go trough to the files. Maybe there is a solution for that also so that eclipse can do the *sudo make install* from some kind of script.
1231+NOTE: I've hardcoded in the arguments to run foot.x3d all the time that is not so good. There should be a better way to configure this so that all .x3d files can be ran from eclipse. But for now this is the solution. Another issue that I came uppon was that even if you build everything in eclipse you need to run *sudo make install* in the terminal for the changes to go through to the files. Maybe there is a solution for that also so that eclipse can do the *sudo make install* from some kind of script.
1232
1233
1234
1235@@ -674,7 +673,7 @@
1236 bzr launchpad-login <username>
1237 \endcode
1238
1239-If everything went ok you should see no message. Tell bazaar who you are.
1240+If everything went OK you shouldn't see any message. Tell bazaar who you are:
1241
1242 \code
1243 bzr whoami
1244@@ -703,7 +702,7 @@
1245 sudo make install
1246 \endcode
1247
1248-Note, if you'r running a newly installed system it may be necessary to relink the libraries:
1249+Note, if you're running a newly installed system it may be necessary to relink the libraries:
1250
1251 \code
1252 sudo ln -s /usr/local/lib/* /usr/lib/
1253@@ -727,7 +726,7 @@
1254
1255 We are using Scrum as a process framework for the development of the Forssim project. Scrum is an iterative incremental process of software development commonly used with agile software development.
1256
1257-Each sprint is 2 week long and at the end of a sprint cycle a demo is presented to the product owner and a new open source release is uploaded to the Launchpad team site.
1258+Each sprint is 2 weeks long and at the end of a sprint cycle a demo is presented to the product owner and a new open source release is uploaded to the Launchpad team site.
1259
1260 Daily scrum meetings at 09.00 o'clock.
1261 \subsection ComponentImplementation Component implementation and test strategy
1262@@ -883,7 +882,7 @@
1263
1264 \subsection Ubuntufaq Ubuntu FAQ
1265
1266-I seemd to miss a certain command? For example I get thiss error "make: xelatex: Command not found"
1267+I seem to miss a certain command. For example, I get this error "make: xelatex: Command not found"
1268 \code
1269 jonas@ubuntu:~/forssim/Doxypaper/latex$ apt-cache search xelatex
1270 texlive-xetex - TeX Live: XeTeX macros

Subscribers

People subscribed via source and target branches