ars / TODO.txt


Packaging and distribution
-Fix according to output of tool "check-manifest"
-Add to README.txt a "Contributors" section and/or a "Thanks also to" section to list the names of people who’ve helped.

-Simulation has nothing to do with "frames". So, replace attributes FPS and _STEPS_PF with 'time_step'.
-what is 'time' for in ScreenshotRecorder.write?
-replace access to world._inner_object with its property (world.inner_object)
-rename Simulation.get_joint as get_sim_joint
-IROS/example4_sinusoidal_terrain: extract the *_heightfield funtions

Code structure (modules and packages)
-convert sensors module into a package
-make JointSensor.__init__ be able to receive a Joint OR a SimulatedJoint, which
wraps a Joint. The idea is to avoid confusing calls such as "x.get_joint().get_joint()"
-rename package "model" to "core"?

Conventions and consistency:
-rename demos modules in CamelCase
-IROS/example4_sinusoidal_terrain: rename 'get_arm_compensation' to 'calc_arm_compensation'
-rename '_inner_object'/'inner_object' to '_inner_obj'/'inner_obj'

Python "idioms":
-verify if it's pythonic to have explicit default values (tuples) instead of `None`
and setting the value inside the function, as when using mutable objects (it's a must in this case).
For example, see graphics Engine constructor.

-dBodySetFiniteRotationAxis. is it necessary to set this if dBodySetFiniteRotationMode = true?
-wrap code in factory functions with a try/except, like joint constructors.

-split 'tests' and what are examples of how to use external libs
-move tests in utils.mathematical to a test file
-extract functions from trimesh_collision: '*_heightfield', 'get_faces', 'swap_faces_indices'

-document that 'Queue' is a wrapper of 'deque', one of the high performance
container datatypes in built-in 'collections' module

-create a subclass of vtkInteractorStyleTrackball (
-remove the event bindings for this class which interfere with the desired behavior
-see VTK/Tutorials/InteractorStyleSubclass ( for ideas
-for a plane use a PlaneSource instead of a slim box
-add shadows
-draw joints: use a point for the anchor, and an arrow for each axis
-use the position argument to create Axes object

-store joint rotation limits and resistive force factors

-Qt integration
	from PyQt4 import QtCore, QtGui, uic
	# Create a PyQt window using a .ui file generated with Qt Designer ...
	application = QtGui.QApplication(sys.argv)
	window = uic.loadUi("gui.ui")
	vertex_slider = window.findChild(QtGui.QSlider, "vertexCount")
	edge_slider = window.findChild(QtGui.QSlider, "edgeCount")

-simple, useful example: