Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changes between Version 13 and Version 14 of pps/tutorial


Ignore:
Timestamp:
Sep 13, 2010, 2:42:55 PM (14 years ago)
Author:
dafrick
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • pps/tutorial

    v13 v14  
    11= Basic PPS Tutorial =
    2 This is a basic tutorial for new PPS students to get familiar with our framework and build environment. The process is described for tardis here. If you use another system first go to the [wiki:download#Source] page and make sure you have all dependencies installed.
     2This is a basic tutorial for new PPS students to get familiar with our framework and build environment. The process is described for tardis here. If you use another system first go to the [wiki:download#Source download] page and make sure you have all dependencies installed.
    33
    44== Preparations ==
     
    1515 3. Now get the latest revision of the tutorial:
    1616{{{
    17 svn co https://svn.orxonox.net/game/code/branches/tutorial
     17svn co https://svn.orxonox.net/game/code/branches/tutorial2 tutorial
    1818}}}
    1919 4. Prepare to build:
     
    2121mkdir tutorial/build
    2222cd tutorial/build
    23 cmake-2.6.2 ..
     23cmake-2.6.4 ..
    2424}}}
    2525 5. Now build for the first time (may take some time, further builds will be faster):
     
    3636
    3737== Before you start coding ==
    38 Before you start coding there's one [wiki:howto/XMLPort page] which is extremely usefull for the following tasks. You might want to have a look at it.
     38Before you start coding there's one [wiki:howto/XMLPort page] which is extremely useful for the following tasks. You might want to have a look at it.
    3939
    40 == The Drone ==
     40== The AutonomousDrone ==
    4141{{{
    4242#!html
    4343<p style="text-align: left; color: red">Note: Do not just copy & paste! Most commands / codelines need to be edited.</p> Otherwise you'll get tons of compiler errors ;)
    4444}}}
    45 We created for you the skeleton of an autonomous drone. You can find the code in the files 'src/orxonox/worldentities/Drone.{cc|h}' and 'src/orxonox/controllers/DroneController.{cc|h}'.
     45We created for you the skeleton of an autonomous drone. You can find the code in the files 'src/orxonox/worldentities/AutonomousDrone.{cc|h}' and 'src/orxonox/controllers/AutonomousDroneController.{cc|h}'.
    4646
    47  1. open the file Drone.cc and have a look at the code
    48  2. in order to be able to create a Drone object from the xml file or somewhere else just by the class name you need to add a call of CreateFactory(Classname) somewhere inside the cc file (global, inside the namespace)
     47 1. Open the file AutonomousDrone.cc and have a look at the code.
     48 2. In order to be able to create an AutonomousDrone object from the XML file or somewhere else just by the class name, you need to add a call of CreateFactory(Classname) somewhere inside the .cc file (global, inside the namespace).
    4949{{{
    5050CreateFactory(ClassX)
    5151}}}
    52  3. make sure the each drone object gets registered to the core by adding a call of RegisterObject(Classname) inside the constructor
     52 3. Make sure the each drone object gets registered to the core by adding a call of RegisterObject(Classname) inside the constructor
    5353{{{
    5454RegisterObject(ClassXY)
    5555}}}
    56  4. now go to the XMLPort function and add the calls for the three variables primaryThrust_, auxilaryThrust_ and rotationThrust_.
     56 4. Now go to the XMLPort function and add the calls for the two variables auxiliaryThrust_ and rotationThrust_. As you can see, the XMLPort function for the variable 'primaryThurst_' has already been specified.
    5757{{{
    5858XMLPortParam(Classname, "xml-attribute-name (i.e. variablename)", setFunction, getFunction, xmlelement, mode)
    5959}}}
    60  '''Note: You need to add set- and get-functions for auxilaryThrust_ and rotationThrust_ inside the Drone.h file (have a look at {get/set}PrimaryThrust).'''
    61  5. now you need to add the Drone to the build system. Open the file src/orxonox/worldentities/CMakeLists.txt and add Drone.cc to the ORXONOX_SRC_FILES. This makes cmake consider the Drone.cc file for further builds.
     60 '''Note: You need to add set- and get-functions for auxiliaryThrust_ and rotationThrust_ inside the AutonomousDrone.h file (have a look at {get/set}PrimaryThrust).'''
     61 5. Now you need to add the AutonomousDrone to the build system. Open the file src/orxonox/worldentities/CMakeLists.txt and add AutonomousDrone.cc to the ORXONOX_SRC_FILES. This makes cmake consider the AutonomousDrone.cc file for further builds.
    6262
    63 That's it for the Drone class
     63That's it for the AutonomousDrone class.
    6464
    65 == The DroneController ==
    66 Now you will finish the DroneController which gets called each tick and steers the drone.
    67  1. open the file DroneController.cc and look at it
    68  2. have a look at the constructor and make sure nothing is missing (think of the core)
     65== The AutonomousDroneController ==
     66Now you will finish the AutonomousDroneController which gets called each tick and steers the drone.
     67 1. Open the file AutonomousDroneController.cc and look at it.
     68 2. Have a look at the constructor and make sure nothing is missing (think of the core).
    6969 3. now look at the tick function. it gets called each time before a new frame is drawn. you can put in some steering code here. if you want you can use some functions provided by Math.h:
    7070{{{
     
    7373// many other functions (have a look at src/util/Math.h for details)
    7474}}}
    75  4. repeat step 5 (CMakeLists) of the Drone for the DroneController.
     75 4. repeat step 5 (CMakeLists) of the AutonomousDrone for the AutonomousDroneController.
    7676
    7777== The XML Part ==
    7878Now that you finished the classes you can recompile the project. Afterwards open the level file:
    79  1. open tutorial/data/levels/tutorial.oxw
    80  2. we want to add a drone to the level now, so put in an entry for it (below the Light definition). look at this example:
     79 1. Open tutorial/data/levels/tutorial.oxw
     80 2. We want to add a drone to the level now, so put in an entry for it (below the comment that tells you to do so). look at this example:
    8181{{{
    8282<ClassX variable1="2" string1="blabla" coord1="1,0,0">
    8383</ClassX>
    8484}}}
    85  3. now add the appropriate entries for the variables you defined in Drone/4. (Have a look at data/levels/spaceshiptemplates_physics.oxw for example values)
    86  4. as we want our drone to be visible we have to attach a model to it. add the following code between the above 2 lines:
     85 3. Now add the appropriate entries for the variables you defined in AutonomousDrone/4. (Have a look at data/levels/templates/spaceship_assff.oxt for example values)
     86 4. As we want our drone to be visible we have to attach a model to it. Add the following code between the above 2 lines:
    8787{{{
    8888  <attached>
     
    9292 this adds a model with the mesh drone.mesh and the defined textures at the position of our drone object.
    9393
    94  5. because the physics engine needs a collision shape to work with, we will add the following entry (before </ClassX>):
     94 5. Because the physics engine needs a collision shape to work with, we will add the following entry (before </ClassX>):
    9595{{{
    9696  <collisionShapes>
    97     <BoxCollisionShape position="0,0,0"      halfExtents="10, 10, 10" />
     97    <BoxCollisionShape position="0,0,0" halfExtents="10, 10, 10" />
    9898  </collisionShapes>
    9999}}}
    100  this will tell the physics engine what dimensions our drone has (in this case its just a cube)
    101  6. now we define the mass and two damping parameters of our drone. Append definitions for the following variables as attributes to your drone (as in 3.)
     100 this will tell the physics engine what dimensions our drone has (in this case its just a cube).
     101 6. Now we define the mass and two damping parameters of our drone. Append definitions for the following variables as attributes to your drone (as in 3.)
    102102{{{
    103103mass = 50
     
    107107 Note: The Drone definition should now look like this:
    108108 {{{
    109  <Drone primaryThrust_="<...>" <...> mass=50 linearDamping=0.9 angularDamping=0.7>
     109 <AutonomousDrone primaryThrust="<...>" <...> mass=50 linearDamping=0.9 angularDamping=0.7>
    110110 }}}
    111111
    112 == Have a look at your Drone ==
     112== Have a look at your AutonomousDrone ==
    113113 - Now recompile the code, start the game again and have a look at how your drone behaves.
    114114 - Don't worry if it does not react to your steering commands as expected. Try to modify some things.
    115  - If you want to do some more things you can try to let the drone fly in circles or helixes
    116  - Play around a little bit with the linear/angular-Damping parameters
     115 - If you want to do some more things you can try to let the drone fly in circles or helixes.
     116 - Play around a little bit with the linear/angular-Damping parameters.
    117117
    118118== Commit your code to the repository ==
    119119We may want to use your steering function later on, so commit it now:
    120  1. make sure you have a recent version of the branch
     120 1. Make sure you have a recent version of the branch
    121121{{{
    122122~/orxonox/tutorial$ svn up
    123123}}}
    124  2. in order to avoid conflicts copy your file (DroneController.cc)
     124 2. In order to avoid conflicts copy your file (AutonomousDroneController.cc)
    125125{{{
    126 ~/orxonox/tutorial$ svn cp src/orxonox/objects/controllers/DroneController.cc src/orxonox/objects/controllers/DroneController.cc_myUserName
     126~/orxonox/tutorial$ svn cp src/orxonox/objects/controllers/AutonomousDroneController.cc src/orxonox/objects/controllers/AutonomousDroneController_myUserName.cc
    127127}}}
    128  3. make sure you dont commit any changes of the original file, so revert your local changes on it:
     128 3. Make sure you don't commit any changes of the original file, so revert your local changes on it:
    129129{{{
    130 ~/orxonox/tutorial$ svn revert src/orxonox/objects/controllers/DroneController.cc
     130~/orxonox/tutorial$ svn revert src/orxonox/objects/controllers/AutonomousDroneController.cc
    131131}}}
    132  4. now commit
     132 4. Now commit
    133133{{{
    134 ~/orxonox/tutorial$ svn ci -m"this is my version of the Drone steering function" src/orxonox/controllers/DroneController.cc_myUserName
     134~/orxonox/tutorial$ svn ci -m "this is my version of the Drone steering function" src/orxonox/controllers/AutonomousDroneController_myUserName.cc
    135135}}}