Revision: 7714
http://playerstage.svn.sourceforge.net/playerstage/?rev=7714&view=rev
Author: natepak
Date: 2009-05-23 18:08:49 +0000 (Sat, 23 May 2009)
Log Message:
-----------
More ode consolidation
Modified Paths:
--------------
code/gazebo/branches/bullet/server/CMakeLists.txt
code/gazebo/branches/bullet/server/physics/Geom.cc
code/gazebo/branches/bullet/server/physics/Geom.hh
code/gazebo/branches/bullet/server/physics/Mass.cc
code/gazebo/branches/bullet/server/physics/Mass.hh
code/gazebo/branches/bullet/server/physics/ode/ODEGeom.cc
code/gazebo/branches/bullet/server/physics/ode/ODEGeom.hh
code/gazebo/branches/bullet/server/physics/ode/ODEPhysics.cc
code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.cc
code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.hh
code/gazebo/branches/bullet/server/sensors/ir/IRSensor.hh
Removed Paths:
-------------
code/gazebo/branches/bullet/build.py
Deleted: code/gazebo/branches/bullet/build.py
===================================================================
--- code/gazebo/branches/bullet/build.py 2009-05-23 16:29:36 UTC (rev
7713)
+++ code/gazebo/branches/bullet/build.py 2009-05-23 18:08:49 UTC (rev
7714)
@@ -1,253 +0,0 @@
-import sys
-import SCons.Util
-import SCons.SConf as SConf
-import string
-import os
-import re
-
-version = '0.8-pre3'
-
-#
-# Function used to test for ODE library, and TriMesh support
-#
-ode_test_source_file = """
-#include <ode/ode.h>
-int main()
-{
- dGeomTriMeshDataCreate();
- return 0;
-}
-"""
-
-def CreateRelease():
- os.system('scons -c')
- sysCmd = 'mkdir gazebo-'+version
- os.system(sysCmd)
- sysCmd = "cp -r server Media doc examples libgazebo player worlds SConstruct
AUTHORS ChangeLog NEWS README TODO build.py gazebo-"+version
- os.system(sysCmd)
- sysCmd = "find gazebo-"+version+"/. -name .svn -exec rm -rf {} \;
2>>/dev/null"
- os.system(sysCmd)
- print 'Creating tarball gazebo-'+version+'.tar.gz'
- sysCmd = 'tar czf gazebo-'+version+'.tar.gz gazebo-'+version
- os.system(sysCmd)
- sysCmd = "rm -rf gazebo-"+version
- os.system(sysCmd)
-
-
-def CheckPkgConfig(context, version):
- context.Message( 'Checking for pkg-config... ' )
- ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' %
version)[0]
- context.Result( ret )
- return ret
-
-def CheckPkg(context, name):
- context.Message( 'Checking for %s...' % name)
- pkg_config_cmd = "pkg-config"
- if os.environ.has_key("PKG_CONFIG_PATH"):
- pkg_config_cmd = "PKG_CONFIG_PATH="+os.environ["PKG_CONFIG_PATH"]+"
pkg-config"
- action = '%s --exists \'%s\'' % (pkg_config_cmd, name);
-
- ret = context.TryAction(action)[0]
- context.Result(ret)
- return ret
-
-def CheckODELib(context):
- context.Message('Checking for ODE trimesh support...')
- oldLibs = context.env['LIBS']
- context.env.Replace(LIBS='ode')
- result = context.TryLink(ode_test_source_file, '.cpp')
- context.Result(result)
- context.env.Replace(LIBS=oldLibs)
- return result
-
-#
-# Create the pkg-config file
-#
-def createPkgConfig(target,source, env):
- f = open(str(target[0]), 'wb')
- prefix = source[0].get_contents()
- f.write('prefix=' + prefix + '\n')
- f.write('Name: gazebo\n')
- f.write('Description: Simplified interface to Player\n')
- f.write('Version:' + version + '\n')
- f.write('Requires: OGRE\n')
- f.write('Libs: -L' + prefix + '/lib -lgazeboServer -lode\n')
- f.write('Cflags: -I' + prefix + '/include\n')
- f.close()
-
-#
-# Create the .gazeborc file
-#
-def createGazeborc(target, source, env):
- f = open(str(target[0]),'wb')
- prefix=source[0].get_contents()
- ogre=commands.getoutput('pkg-config --variable=plugindir OGRE')
- f.write('<?xml version="1.0"?>\n')
- f.write('<gazeborc>\n')
- f.write(' <gazeboPath>' + prefix + '/share/gazebo</gazeboPath>\n')
- f.write(' <ogrePath>' + ogre + '</ogrePath>\n')
- f.write(' <RTTMode>PBuffer</RTTMode>\n')
- f.write('</gazeborc>\n')
- f.close()
- # Use a python command because scons won't copy files to a home directory
- if not os.path.exists(os.environ['HOME']+'/.gazeborc'):
- os.system('cp gazeborc ~/.gazeborc')
-
-
-
-
-#
-# Add optimizations to compiler flags based on the architecture
-#
-#TODO:search architecture
-def optimize_for_cpu(env):
- cpuAtr = ['mmx', 'sse', 'sse2', 'sse3', '3dnow']
- line_atr =""
- if (os.path.isfile("/proc/cpuinfo")):
- f_proc = open("/proc/cpuinfo")
- for line in f_proc:
- if (re.match('flags', line)):
- for atr in cpuAtr:
- if (re.search(atr, line) and not re.search(atr, line_atr)):
- line_atr+= "-m" + atr + " "
-
- env['CCFLAGS'] += Split (line_atr)
- print "detected CPU atributes: " +line_atr
-
-
-def Config(env, packages):
- simpleEnv = Environment(CC="g++")
-
- # Setup the configuration environment.
- conf = Configure(simpleEnv, custom_tests = {'CheckODELib' : CheckODELib,
- 'CheckPkgConfig' : CheckPkgConfig,
- 'CheckPkg' : CheckPkg})
-
- print '\n=== 3rd Party Dependency Checks === '
-
- # Check for pkg-config
- if not conf.CheckPkgConfig(PKG_CONFIG_VERSION):
- print ' Error: pkg-config version >= ' + PKG_CONFIG_VERSION + ' not
found.'
- Exit(1)
-
- #
- # Parse all the pacakge configurations
- #
- for key in packages:
- pkgcfg =''
- header=''
- lib=''
- check=''
- requred = True
-
- if packages[key].has_key('pkgcfg'):
- pkgcfg = packages[key]['pkgcfg']
-
- if packages[key].has_key('header'):
- header = packages[key]['header']
-
- if packages[key].has_key('lib'):
- lib = packages[key]['lib']
-
- if packages[key].has_key('check'):
- check = packages[key]['check']
-
- if packages[key].has_key('required'):
- required = packages[key]['required']
-
-
- msg = packages[key]['msg']
- web = packages[key]['web']
- flags = packages[key]['flags']
-
- docfg = True
- valid = True
-
- # Check for the package
- if check and not conf.CheckPkg(check):
- docfg = False
- valid = False
- print ' !!' + msg + key + ' not found.'
- print ' See: ' + web
- if required:
- env['HAS_ERROR'] = True;
-
- # Try parsing the pkg-config
- if docfg and pkgcfg:
- try:
- if not check:
- print "Checking for "+key+"...",
- if os.environ.has_key("PKG_CONFIG_PATH"):
- pkgcfg = "PKG_CONFIG_PATH="+os.environ["PKG_CONFIG_PATH"]+" "+pkgcfg;
- env.ParseConfig(pkgcfg)
- if not check:
- print 'yes'
- except OSError,e:
- valid = False
- if not check:
- print 'no'
- print "Unable to parse config ["+pkgcfg+"]"
- print ' !!' + msg + key + ' not found.'
- print ' See: ' + web
- if required:
- env['HAS_ERROR'] = True;
- elif header and lib:
- if not conf.CheckLibWithHeader(lib, header, 'c'):
- valid = False
- print msg
- else:
- env.Append(LIBS = lib)
- valid = True
-
- # If valid so far, apply any flags to the environment
- if valid:
- env.Append(CCFLAGS = flags)
-
- # Check for trimesh support in ODE
- #if not conf.CheckODELib():
- # print ' Error: ODE not compiled with trimesh support.'
- # Exit(1)
-
- if not conf.CheckCHeader('avformat.h'):
- if conf.CheckCHeader('libavformat/avformat.h'):
- env.Append( CCFLAGS = '-DSPECIAL_LIBAVFORMAT')
- else:
- print "Unable to find libavformat"
-
- if not conf.CheckCHeader('avcodec.h'):
- if conf.CheckCHeader('libavcodec/avcodec.h'):
- env.Append( CCFLAGS = '-DSPECIAL_LIBAVCODEC')
- else:
- print "Unable to find libavcodec"
-
-
- simpleEnv = conf.Finish()
-
- #simpleenv = Environment(CPPPATH="/usr/include/AL")
- #simpleconf = Configure(simpleenv)
- #
- ## Test for libtool
- #if not simpleconf.CheckLibWithHeader('ltdl','ltdl.h','CXX'):
- # print " Warning: Failed to find ltdl, no plugin support will be included"
- # env["HAVE_LTDL"]=False
- #else:
- # env["HAVE_LTDL"]=True
- # env.Append(CCFLAGS = " -DHAVE_LTDL")
- # env.Append(LIBS = "ltdl")
-
- #if not simpleconf.CheckHeader('boost/signal.hpp',language='C++'):
- # print "Error: Boost signals not found. Please install."
- # Exit(0)
- #
- #simpleconf.Finish()
-
- # # Check for boost_python
- #if not conf.CheckLibWithHeader('boost_python', 'boost/python.hpp', 'C'):
- # print 'Did not find libboost_python exiting'
- # Exit(1)
- #else:
- # conf.env.Append(LIBS="boost_python")
-
- print '=== Done ===\n'
-
-
Modified: code/gazebo/branches/bullet/server/CMakeLists.txt
===================================================================
--- code/gazebo/branches/bullet/server/CMakeLists.txt 2009-05-23 16:29:36 UTC
(rev 7713)
+++ code/gazebo/branches/bullet/server/CMakeLists.txt 2009-05-23 18:08:49 UTC
(rev 7714)
@@ -119,7 +119,7 @@
)
-TARGET_LINK_LIBRARIES( gazebo_server ${ODE_LIBRARIES} ${libtool_library}
gazebo)
+TARGET_LINK_LIBRARIES( gazebo_server ${libtool_library} gazebo)
INSTALL (TARGETS gazebo-exec DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
INSTALL (TARGETS gazebo_server DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
Modified: code/gazebo/branches/bullet/server/physics/Geom.cc
===================================================================
--- code/gazebo/branches/bullet/server/physics/Geom.cc 2009-05-23 16:29:36 UTC
(rev 7713)
+++ code/gazebo/branches/bullet/server/physics/Geom.cc 2009-05-23 18:08:49 UTC
(rev 7714)
@@ -381,3 +381,31 @@
{
return this->contact;
}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Set the contact force
+void Geom::SetContactForce(double x, double y, double z)
+{
+ this->contactForce.Set(x,y,z);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Get the contact force
+Vector3 Geom::GetContactForce() const
+{
+ return this->contactForce;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Set the contact torque
+void Geom::SetContactTorque(double x, double y, double z)
+{
+ this->contactTorque.Set(x,y,z);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Set the contact torque
+Vector3 Geom::GetContactTorque() const
+{
+ return this->contactTorque;
+}
Modified: code/gazebo/branches/bullet/server/physics/Geom.hh
===================================================================
--- code/gazebo/branches/bullet/server/physics/Geom.hh 2009-05-23 16:29:36 UTC
(rev 7713)
+++ code/gazebo/branches/bullet/server/physics/Geom.hh 2009-05-23 18:08:49 UTC
(rev 7714)
@@ -145,6 +145,19 @@
/// \brief Get a pointer tot the contact Params
public: ContactParams *GetContactParams();
+ /// \brief Set the contact force
+ public: void SetContactForce(double x, double y, double z);
+
+ /// \brief Get the contact force
+ public: Vector3 GetContactForce() const;
+
+ /// \brief Set the contact torque
+ public: void SetContactTorque(double x, double y, double z);
+
+ /// \brief Set the contact torque
+ public: Vector3 GetContactTorque() const;
+
+
/// Contact parameters
protected: ContactParams *contact;
@@ -175,6 +188,8 @@
protected: PhysicsEngine *physicsEngine;
protected: Mass *mass;
+
+ protected: Vector3 contactForce, contactTorque;
};
/// \}
Modified: code/gazebo/branches/bullet/server/physics/Mass.cc
===================================================================
--- code/gazebo/branches/bullet/server/physics/Mass.cc 2009-05-23 16:29:36 UTC
(rev 7713)
+++ code/gazebo/branches/bullet/server/physics/Mass.cc 2009-05-23 18:08:49 UTC
(rev 7714)
@@ -62,7 +62,7 @@
////////////////////////////////////////////////////////////////////////////////
/// Set the mass
-double Mass::SetMass(double m)
+void Mass::SetMass(double m)
{
this->mass = m;
}
Modified: code/gazebo/branches/bullet/server/physics/Mass.hh
===================================================================
--- code/gazebo/branches/bullet/server/physics/Mass.hh 2009-05-23 16:29:36 UTC
(rev 7713)
+++ code/gazebo/branches/bullet/server/physics/Mass.hh 2009-05-23 18:08:49 UTC
(rev 7714)
@@ -48,7 +48,7 @@
public: virtual ~Mass();
/// \brief Set the mass
- public: double SetMass(double m);
+ public: void SetMass(double m);
/// \brief Get the mass value
public: double GetMass() const;
Modified: code/gazebo/branches/bullet/server/physics/ode/ODEGeom.cc
===================================================================
--- code/gazebo/branches/bullet/server/physics/ode/ODEGeom.cc 2009-05-23
16:29:36 UTC (rev 7713)
+++ code/gazebo/branches/bullet/server/physics/ode/ODEGeom.cc 2009-05-23
18:08:49 UTC (rev 7714)
@@ -371,20 +371,6 @@
}
////////////////////////////////////////////////////////////////////////////////
-/// Set the contact joint id
-void ODEGeom::SetContactJointID(dJointID id)
-{
- this->contactId = id;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-/// Get the contact joint id
-dJointID ODEGeom::GetContactJointID() const
-{
- return this->contactId;
-}
-
-////////////////////////////////////////////////////////////////////////////////
/// Get the bodies space ID
dSpaceID ODEGeom::GetSpaceId() const
{
Modified: code/gazebo/branches/bullet/server/physics/ode/ODEGeom.hh
===================================================================
--- code/gazebo/branches/bullet/server/physics/ode/ODEGeom.hh 2009-05-23
16:29:36 UTC (rev 7713)
+++ code/gazebo/branches/bullet/server/physics/ode/ODEGeom.hh 2009-05-23
18:08:49 UTC (rev 7714)
@@ -120,21 +120,12 @@
/// \brief Get the bounding box, defined by the physics engine
public: virtual void GetBoundingBox( Vector3 &min, Vector3 &max );
- /// \brief Set the contact joint id
- public: void SetContactJointID(dJointID id);
-
- /// \brief Get the contact joint id
- public: dJointID GetContactJointID() const;
-
/// \brief Get the geom's space ID
public: dSpaceID GetSpaceId() const;
/// \brief Set the geom's space ID
public: void SetSpaceId(dSpaceID spaceid);
- /// Contact joint id
- private: dJointID contactId;
-
/// ID for the transform geom
protected: dGeomID transId;
Modified: code/gazebo/branches/bullet/server/physics/ode/ODEPhysics.cc
===================================================================
--- code/gazebo/branches/bullet/server/physics/ode/ODEPhysics.cc
2009-05-23 16:29:36 UTC (rev 7713)
+++ code/gazebo/branches/bullet/server/physics/ode/ODEPhysics.cc
2009-05-23 18:08:49 UTC (rev 7714)
@@ -436,6 +436,7 @@
ODEGeom *geom2 = NULL;
int i;
int numc = 0;
+ dJointFeedback *feedback;
dContactGeom contactGeoms[64];
dContact contact;
@@ -512,11 +513,19 @@
dJointID c = dJointCreateContact (self->GetWorldId(),
self->GetContactGroup(), &contact);
- // save "dJointID *c" in Geom, so we can do a
- // dJointFeedback *jft = dJointGetFeedback( c[i] ) later
- geom1->SetContactJointID( c );
- geom2->SetContactJointID( c );
+ // Get the contact joint feedback
+ feedback = dJointGetFeedback(c);
+ // Store the feedback info
+ geom1->SetContactForce(feedback->f1[0], feedback->f1[1],
+ feedback->f1[2]);
+ geom1->SetContactTorque(feedback->t1[0],feedback->t1[1],
+ feedback->t1[2]);
+ geom2->SetContactForce(feedback->f2[0], feedback->f2[1],
+ feedback->f2[2]);
+ geom2->SetContactTorque(feedback->t2[0],feedback->t2[1],
+ feedback->t2[2]);
+
//std::cout << "Collision G1[" << geom1->GetName() << "] G2[" <<
geom2->GetName() << "]\n";
// Call the geom's contact callbacks
cp1->contactSignal( geom1, geom2 );
Modified: code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.cc
===================================================================
--- code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.cc
2009-05-23 16:29:36 UTC (rev 7713)
+++ code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.cc
2009-05-23 18:08:49 UTC (rev 7714)
@@ -29,20 +29,15 @@
#include <sstream>
#include "Global.hh"
-//#include "World.hh"
-//#include "Controller.hh"
#include "GazeboError.hh"
#include "XMLConfig.hh"
#include "Simulator.hh"
#include "SensorFactory.hh"
#include "Geom.hh"
-#include "ODEGeom.hh"
#include "ContactParams.hh"
#include "ContactSensor.hh"
-#include "Vector3.hh"
-
using namespace gazebo;
GZ_REGISTER_STATIC_SENSOR("contact", ContactSensor);
@@ -117,16 +112,7 @@
return std::string("");
}
-//////////////////////////////////////////////////////////////////////////////
-/// Return the contact feedback forces and torques
-dJointFeedback ContactSensor::GetContactFeedback(unsigned int index) const
-{
- if (index < this->contactCount)
- return this->contactFeedbacks[index];
- return dJointFeedback();
-}
-
//////////////////////////////////////////////////////////////////////////////
/// Return the self geom name
std::string ContactSensor::GetGeomName(unsigned int index) const
@@ -162,6 +148,7 @@
ParamT<std::string> *geomName = new ParamT<std::string>("geom","",1);
geomName->SetValue( geomNode->GetValue() );
this->geomNamesP.push_back(geomName);
+
geomNode = geomNode->GetNext("geom");
}
Param::End();
@@ -169,12 +156,10 @@
this->contactCount = this->geomNamesP.size();
this->contactTimes = new double[ this->contactCount ];
this->contactStates = new uint8_t[ this->contactCount ];
- for (unsigned int i=0; i< this->contactCount; i++)
- this->contactNames.push_back("");
+ this->contactNames = new std::string[ this->contactCount ];
memset(this->contactTimes,0, sizeof(double) * this->contactCount);
memset(this->contactStates,0, sizeof(uint8_t) * this->contactCount);
- memset(this->contactTimes,0, sizeof(double) * this->contactCount);
}
//////////////////////////////////////////////////////////////////////////////
@@ -203,7 +188,8 @@
// Set the callback
if (geom)
{
- geom->GetContactParams()->Callback( &ContactSensor::ContactCallback,
this );
+ geom->GetContactParams()->Callback( &ContactSensor::ContactCallback,
+ this );
}
else
{
@@ -229,47 +215,18 @@
/// Contact callback
void ContactSensor::ContactCallback(Geom *g1, Geom *g2)
{
-
- ODEGeom *odeGeom1 = dynamic_cast<ODEGeom*>(g1);
- ODEGeom *odeGeom2 = dynamic_cast<ODEGeom*>(g2);
-
- // somehow here, extract contact information when user requests it
- //
-
-
std::vector< ParamT<std::string> *>::iterator iter;
int i = 0;
-
- for (iter = this->geomNamesP.begin(); iter != this->geomNamesP.end();
+ for (iter = this->geomNamesP.begin(), i=0; iter != this->geomNamesP.end();
iter++, i++)
{
if ( **(*iter) == g1->GetName() || **(*iter) == g2->GetName() )
{
- if (i < GAZEBO_MAX_CONTACT_FB_DATA)
- {
- dJointSetFeedback(odeGeom1->GetContactJointID(),
- this->contactFeedbacks+i);
-
- // std::cout << "contact id:" << i
- // << " geom1:" << g1->GetName()
- // << " geom2:" << g2->GetName();
- // std::cout << " contact joint ID:" << g1->cID
- // << "
f1:"<<this->contactFeedbacks[i].f1[0]<<","<<this->contactFeedbacks[i].f1[1]<<","<<this->contactFeedbacks[i].f1[2]<<","<<this->contactFeedbacks[i].f1[3]
- // << "
t1:"<<this->contactFeedbacks[i].t1[0]<<","<<this->contactFeedbacks[i].t1[1]<<","<<this->contactFeedbacks[i].t1[2]<<","<<this->contactFeedbacks[i].t1[3]
- // << " f1_magnitude:" <<
dLENGTH(this->contactFeedbacks[i].f1)
- // << "
f2:"<<this->contactFeedbacks[i].f2[0]<<","<<this->contactFeedbacks[i].f2[1]<<","<<this->contactFeedbacks[i].f2[2]<<","<<this->contactFeedbacks[i].f2[3]
- // << "
t2:"<<this->contactFeedbacks[i].t2[0]<<","<<this->contactFeedbacks[i].t2[1]<<","<<this->contactFeedbacks[i].t2[2]<<","<<this->contactFeedbacks[i].t2[3]
- // << " f2_magnitude:" <<
dLENGTH(this->contactFeedbacks[i].f2)
- // << std::endl;
- }
-
this->contactStates[i] = 1;
this->contactTimes[i] = Simulator::Instance()->GetRealTime();
- this->contactNames[i] = **(*iter)==g1->GetName()? g2->GetName() :
g1->GetName();
+ this->contactNames[i] = **(*iter)==g1->GetName()? g2->GetName() :
+ g1->GetName();
}
}
-
}
-
-
Modified: code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.hh
===================================================================
--- code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.hh
2009-05-23 16:29:36 UTC (rev 7713)
+++ code/gazebo/branches/bullet/server/sensors/contact/ContactSensor.hh
2009-05-23 18:08:49 UTC (rev 7714)
@@ -29,12 +29,11 @@
#include <vector>
+#include "Vector3.hh"
#include "Angle.hh"
#include "Sensor.hh"
#include "Body.hh"
-#define GAZEBO_MAX_CONTACT_FB_DATA 10
-
namespace gazebo
{
@@ -54,7 +53,7 @@
class ContactSensor: public Sensor
{
/// \brief Constructor
- /// \param body The underlying collision test uses an ODE geom, so
+ /// \param body The underlying collision test uses a geom, so
/// ray sensors must be attached to a body.
public: ContactSensor(Body *body);
@@ -73,8 +72,10 @@
/// \brief Return contact geometry name
public: std::string GetContactGeomName(unsigned int index) const;
- /// \brief Return contact feedback, f1,f2,t1,t2
- public: dJointFeedback GetContactFeedback(unsigned int index) const;
+ public: Vector3 GetForceOnBody1(unsigned int index);
+ public: Vector3 GetTorqueOnBody1(unsigned int index);
+ public: Vector3 GetForceOnBody2(unsigned int index);
+ public: Vector3 GetTorqueOnBody2(unsigned int index);
/// \brief Return geometry name
public: std::string GetGeomName(unsigned int index) const;
@@ -104,15 +105,11 @@
/// Geom name parameter
private: std::vector< ParamT<std::string> *> geomNamesP;
- private: std::vector<std::string> geomNames;
+ private: unsigned int contactCount;
+ private: std::string *contactNames;
private: uint8_t *contactStates;
private: double *contactTimes;
- private: unsigned int contactCount;
- private: std::vector<std::string> contactNames;
- /// \brief a place for storing joint feedbacks, including contact joints
- private: dJointFeedback contactFeedbacks[GAZEBO_MAX_CONTACT_FB_DATA];
-
};
/// \}
/// \}
Modified: code/gazebo/branches/bullet/server/sensors/ir/IRSensor.hh
===================================================================
--- code/gazebo/branches/bullet/server/sensors/ir/IRSensor.hh 2009-05-23
16:29:36 UTC (rev 7713)
+++ code/gazebo/branches/bullet/server/sensors/ir/IRSensor.hh 2009-05-23
18:08:49 UTC (rev 7714)
@@ -55,7 +55,7 @@
class IRSensor: public Sensor
{
/// \brief Constructor
- /// \param body The underlying collision test uses an ODE geom, so
+ /// \param body The underlying collision test uses a geom, so
/// ray sensors must be attached to a body.
public: IRSensor(Body *body);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit