|
From: <stu...@us...> - 2008-08-07 18:57:33
|
Revision: 2725
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=2725&view=rev
Author: stuglaser
Date: 2008-08-07 18:57:41 +0000 (Thu, 07 Aug 2008)
Log Message:
-----------
Added a factory for registering and instantiating controllers.
Modified Paths:
--------------
pkg/trunk/controllers/generic_controllers/include/generic_controllers/controller.h
pkg/trunk/controllers/generic_controllers/manifest.xml
pkg/trunk/controllers/generic_controllers/src/joint_controller.cpp
pkg/trunk/mechanism/mechanism_control/manifest.xml
Modified: pkg/trunk/controllers/generic_controllers/include/generic_controllers/controller.h
===================================================================
--- pkg/trunk/controllers/generic_controllers/include/generic_controllers/controller.h 2008-08-07 18:55:46 UTC (rev 2724)
+++ pkg/trunk/controllers/generic_controllers/include/generic_controllers/controller.h 2008-08-07 18:57:41 UTC (rev 2725)
@@ -42,6 +42,7 @@
*/
/***************************************************/
+#include <misc_utils/factory.h>
#include <mechanism_model/robot.h>
class TiXmlElement;
@@ -63,6 +64,14 @@
CONTROLLER_VELOCITY, CONTROLLER_AUTOMATIC, ETHERDRIVE_SPEED
};
+class Controller;
+typedef Factory<Controller> ControllerFactory;
+
+#define ROS_REGISTER_CONTROLLER(c) \
+ controller::Controller *ROS_New_##c() { return new c(); } \
+ bool ROS_CONTROLLER_##c = \
+ controller::ControllerFactory::instance().registerType(#c, ROS_New_##c);
+
class Controller
{
public:
Modified: pkg/trunk/controllers/generic_controllers/manifest.xml
===================================================================
--- pkg/trunk/controllers/generic_controllers/manifest.xml 2008-08-07 18:55:46 UTC (rev 2724)
+++ pkg/trunk/controllers/generic_controllers/manifest.xml 2008-08-07 18:57:41 UTC (rev 2725)
@@ -7,6 +7,7 @@
<depend package="mechanism_model" />
<depend package="wg_robot_description_parser" />
<depend package="stl_utils" />
+ <depend package="misc_utils" />
<url>http://pr.willowgarage.com</url>
<repository>http://pr.willowgarage.com/repos</repository>
<export>
Modified: pkg/trunk/controllers/generic_controllers/src/joint_controller.cpp
===================================================================
--- pkg/trunk/controllers/generic_controllers/src/joint_controller.cpp 2008-08-07 18:55:46 UTC (rev 2724)
+++ pkg/trunk/controllers/generic_controllers/src/joint_controller.cpp 2008-08-07 18:57:41 UTC (rev 2725)
@@ -41,6 +41,8 @@
using namespace controller;
+ROS_REGISTER_CONTROLLER(JointController)
+
//-------------------------------------------------------------------------//
//CONSTRUCTION/DESTRUCTION CALLS
//-------------------------------------------------------------------------//
Modified: pkg/trunk/mechanism/mechanism_control/manifest.xml
===================================================================
--- pkg/trunk/mechanism/mechanism_control/manifest.xml 2008-08-07 18:55:46 UTC (rev 2724)
+++ pkg/trunk/mechanism/mechanism_control/manifest.xml 2008-08-07 18:57:41 UTC (rev 2725)
@@ -9,6 +9,7 @@
<depend package="tinyxml"/>
<depend package="mechanism_model"/>
<depend package="generic_controllers"/>
+<depend package="misc_utils" />
<export>
<cpp cflags='-I${prefix}/include' lflags='-Wl,-rpath,${prefix}/lib -L${prefix}/lib -lmechanism_control'/>
</export>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|