|
From: <is...@us...> - 2008-08-18 21:48:43
|
Revision: 3220
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3220&view=rev
Author: isucan
Date: 2008-08-18 21:48:42 +0000 (Mon, 18 Aug 2008)
Log Message:
-----------
added path interpolation option for motion plans + fixed call parameters
Modified Paths:
--------------
pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp
pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp
pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv
pkg/trunk/robot_srvs/srv/KinematicPlanState.srv
Modified: pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
===================================================================
--- pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-18 20:57:28 UTC (rev 3219)
+++ pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-18 21:48:42 UTC (rev 3220)
@@ -197,6 +197,8 @@
p.si->smoother->smoothVertices(path);
double tsmooth = (ros::Time::now() - startTime).to_double();
printf("Smoother spent %f seconds (%f seconds in total)\n", tsmooth, tsmooth + tsolve);
+ if (req.interpolate)
+ p.si->interpolatePath(path);
}
m_collisionSpace->unlock();
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h 2008-08-18 20:57:28 UTC (rev 3219)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h 2008-08-18 21:48:42 UTC (rev 3220)
@@ -85,11 +85,11 @@
class StateValidityChecker
{
public:
- /** Destructor */
- virtual ~StateValidityChecker(void){
-
- }
-
+ /** Destructor */
+ virtual ~StateValidityChecker(void)
+ {
+ }
+
/** Return true if the state is valid */
virtual bool operator()(const State_t state) = 0;
};
@@ -101,10 +101,10 @@
class StateDistanceEvaluator
{
public:
- /** Destructor */
- virtual ~StateDistanceEvaluator(void){
-
- }
+ /** Destructor */
+ virtual ~StateDistanceEvaluator(void)
+ {
+ }
/** Return true if the state is valid */
virtual double operator()(const State_t state1, const State_t state2) = 0;
};
@@ -302,9 +302,9 @@
}
/** Clear the goal. Memory is freed. */
- void clearGoal(bool free = true)
+ void clearGoal(void)
{
- if (free && m_goal)
+ if (m_goal)
delete m_goal;
m_goal = NULL;
}
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-18 20:57:28 UTC (rev 3219)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-18 21:48:42 UTC (rev 3220)
@@ -189,11 +189,10 @@
state->values[k] = s1->values[k] + (double)j * step[k];
newStates.push_back(state);
}
-
- newStates.push_back(s2);
}
+ newStates.push_back(path->states[n1]);
- path->states.swap(newStates);
+ path->states.swap(newStates);
}
void ompl::SpaceInformationKinematic::printSettings(FILE *out) const
Modified: pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp
===================================================================
--- pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp 2008-08-18 20:57:28 UTC (rev 3219)
+++ pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp 2008-08-18 21:48:42 UTC (rev 3220)
@@ -56,6 +56,16 @@
return m_haveBasePos;
}
+ void initialState(robot_msgs::KinematicState &state)
+ {
+ state.set_vals_size(45);
+ for (unsigned int i = 0 ; i < state.get_vals_size() ; ++i)
+ state.vals[i] = 0.0;
+ for (unsigned int i = 0 ; i < 3 ; ++i)
+ state.vals[i] = m_basePos[i];
+ }
+
+
void runTestBase(void)
{
robot_srvs::KinematicPlanState::request req;
@@ -63,20 +73,15 @@
req.model_id = "pr2::base";
req.threshold = 0.01;
req.distance_metric = "L2Square";
+ req.interpolate = 1;
- req.start_state.set_vals_size(45);
- for (unsigned int i = 0 ; i < req.start_state.vals_size ; ++i)
- req.start_state.vals[i] = 0.0;
+ initialState(req.start_state);
req.goal_state.set_vals_size(3);
for (unsigned int i = 0 ; i < req.goal_state.vals_size ; ++i)
- {
- req.goal_state.vals[i] = m_basePos[i];
req.start_state.vals[i] = m_basePos[i];
- }
req.goal_state.vals[0] += 3.5;
-
req.allowed_time = 5.0;
req.volumeMin.x = -5.0 + m_basePos[0]; req.volumeMin.y = -5.0 + m_basePos[1]; req.volumeMin.z = 0.0;
@@ -92,11 +97,10 @@
req.model_id = "pr2::leftArm";
req.threshold = 0.01;
req.distance_metric = "L2Square";
+ req.interpolate = 1;
+
+ initialState(req.start_state);
- req.start_state.set_vals_size(45);
- for (unsigned int i = 0 ; i < req.start_state.vals_size ; ++i)
- req.start_state.vals[i] = 0.0;
-
req.goal_state.set_vals_size(7);
for (unsigned int i = 0 ; i < req.goal_state.vals_size ; ++i)
req.goal_state.vals[i] = 0.0;
@@ -118,11 +122,10 @@
req.model_id = "pr2::rightArm";
req.threshold = 0.01;
req.distance_metric = "L2Square";
+ req.interpolate = 1;
+
+ initialState(req.start_state);
- req.start_state.set_vals_size(45);
- for (unsigned int i = 0 ; i < req.start_state.vals_size ; ++i)
- req.start_state.vals[i] = 0.0;
-
req.goal_state.set_vals_size(7);
for (unsigned int i = 0 ; i < req.goal_state.vals_size ; ++i)
req.goal_state.vals[i] = 0.0;
@@ -187,9 +190,23 @@
while (!plan.haveBasePos())
dur.sleep();
- // plan.runTestLeftArm();
- // plan.runTestBase();
- plan.runTestRightArm();
+ char test = (argc < 2) ? 'b' : argv[1][0];
+
+ switch (test)
+ {
+ case 'l':
+ plan.runTestLeftArm();
+ break;
+ case 'b':
+ plan.runTestBase();
+ break;
+ case 'r':
+ plan.runTestRightArm();
+ break;
+ default:
+ printf("Unknown test\n");
+ break;
+ }
plan.shutdown();
Modified: pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp
===================================================================
--- pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp 2008-08-18 20:57:28 UTC (rev 3219)
+++ pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp 2008-08-18 21:48:42 UTC (rev 3220)
@@ -103,7 +103,7 @@
PlanningWorldViewer(const std::string &robot_model) : ros::node("planning_world_viewer"),
planning_node_util::NodeODECollisionModel(dynamic_cast<ros::node*>(this), robot_model)
{
- subscribe("display_kinematic_path", m_displayPath, &PlanningWorldViewer::displayPathCallback);
+ subscribe("display_kinematic_path", m_displayPath, &PlanningWorldViewer::displayPathCallback, 1);
m_follow = true;
m_displayRobot = true;
@@ -130,6 +130,20 @@
m_collisionSpace->unlock();
}
+ bool checkCollision(void)
+ {
+ bool result = false;
+ if (m_checkCollision && m_collisionSpace && m_collisionSpace->getModelCount() == 1)
+ {
+ m_collisionSpace->lock();
+ ros::Time startTime = ros::Time::now();
+ result = m_collisionSpace->isCollision(0);
+ printf("Collision: %d [%f s]\n", result, (ros::Time::now() - startTime).to_double());
+ m_collisionSpace->unlock();
+ }
+ return result;
+ }
+
void baseUpdate(void)
{
planning_node_util::NodeODECollisionModel::baseUpdate();
@@ -140,12 +154,8 @@
m_collisionSpace->lock();
m_collisionSpace->getModel(0)->computeTransforms(m_basePos, group);
m_collisionSpace->updateRobotModel(0);
- if (m_checkCollision)
- {
- ros::Time startTime = ros::Time::now();
- printf("Collision: %d [%f s]\n", m_collisionSpace->isCollision(0), (ros::Time::now() - startTime).to_double());
- }
m_collisionSpace->unlock();
+ checkCollision();
}
}
@@ -167,13 +177,14 @@
{
bool follow = m_follow;
m_follow = false;
- ros::Duration sleepTime(0.2);
+ ros::Duration sleepTime(0.4);
int groupID = m_kmodel->getGroupID(m_displayPath.name);
for (unsigned int i = 0 ; i < m_displayPath.path.get_states_size() ; ++i)
{
m_kmodel->computeTransforms(m_displayPath.path.states[i].vals, groupID);
m_collisionSpace->updateRobotModel(0);
+ checkCollision();
sleepTime.sleep();
}
m_follow = follow;
@@ -240,8 +251,6 @@
void display(void)
{
- // printf("disp\n");
-
m_displayLock.lock();
m_spaces.displaySpaces();
m_displayLock.unlock();
Modified: pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv
===================================================================
--- pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv 2008-08-18 20:57:28 UTC (rev 3219)
+++ pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv 2008-08-18 21:48:42 UTC (rev 3220)
@@ -25,7 +25,11 @@
# No state in the produced motion plan will violate these constraints
robot_msgs/KinematicConstraint[] constraints
+# Boolean flag: if true, the returned path will contain interpolated
+# states as well
+byte interpolate
+
# The maximum amount of time the motion planner is allowed to plan for
float64 allowed_time
Modified: pkg/trunk/robot_srvs/srv/KinematicPlanState.srv
===================================================================
--- pkg/trunk/robot_srvs/srv/KinematicPlanState.srv 2008-08-18 20:57:28 UTC (rev 3219)
+++ pkg/trunk/robot_srvs/srv/KinematicPlanState.srv 2008-08-18 21:48:42 UTC (rev 3220)
@@ -28,6 +28,11 @@
# No state in the produced motion plan will violate these constraints
robot_msgs/KinematicConstraint[] constraints
+# Boolean flag: if true, the returned path will contain interpolated
+# states as well
+
+byte interpolate
+
# The maximum amount of time the motion planner is allowed to plan for
float64 allowed_time
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mor...@us...> - 2008-08-18 23:24:05
|
Revision: 3226
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3226&view=rev
Author: morgan_quigley
Date: 2008-08-18 23:24:13 +0000 (Mon, 18 Aug 2008)
Log Message:
-----------
pulling borg_tuner out of the attic
Added Paths:
-----------
pkg/trunk/vision/borg_tuner/
Removed Paths:
-------------
pkg/trunk/unported/borg_tuner/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tf...@us...> - 2008-08-19 06:19:12
|
Revision: 3240
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3240&view=rev
Author: tfoote
Date: 2008-08-19 06:19:18 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
Converting libTF to use strings natively. There is no more need for namelookup.
r6920@zug: tfoote | 2008-08-18 12:59:48 -0700
creating branch for libTF change to names
r6941@zug: tfoote | 2008-08-18 15:54:15 -0700
libTF compiling with new API
r6948@zug: tfoote | 2008-08-18 16:50:14 -0700
testServer and testClient now talk
r6979@zug: tfoote | 2008-08-18 17:38:04 -0700
2dnav-stage running with new API
r6982@zug: tfoote | 2008-08-18 17:43:40 -0700
removing unnecessary namelookup server
r6985@zug: tfoote | 2008-08-18 18:07:39 -0700
2dnav-stage and 2dnav-gazebo running sucessfully
r6986@zug: tfoote | 2008-08-18 18:15:19 -0700
removing lookup from exec_trex
r6987@zug: tfoote | 2008-08-18 18:18:34 -0700
added needed std_srvs
r6999@zug: tfoote | 2008-08-18 20:04:11 -0700
removing name lookup
r7000@zug: tfoote | 2008-08-18 20:06:04 -0700
no longer depending on namelookup
r7001@zug: tfoote | 2008-08-18 20:09:03 -0700
no more namelookup
r7002@zug: tfoote | 2008-08-18 20:11:47 -0700
no more tf client in Ros_Camera
r7015@zug: tfoote | 2008-08-18 23:06:00 -0700
exec_trex compiling until it hits java
Modified Paths:
--------------
pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-fake_localization.xml
pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-test.xml
pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-wg.xml
pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml
pkg/trunk/demos/2dnav-stage/2dnav-stage.xml
pkg/trunk/drivers/cam/dc1394_cam/manifest.xml
pkg/trunk/drivers/cam/dc1394_cam/src/dc1394_node/dc1394_node.cpp
pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc
pkg/trunk/drivers/laser/hokuyourg_player/manifest.xml
pkg/trunk/drivers/laser/sicktoolbox_wrapper/manifest.xml
pkg/trunk/drivers/laser/sicktoolbox_wrapper/ros/sicklms/sicklms.cpp
pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Camera.cc
pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Laser.cc
pkg/trunk/exec_trex/CalcGraspPositionConstraint.cc
pkg/trunk/exec_trex/ROSNode.cc
pkg/trunk/exec_trex/manifest.xml
pkg/trunk/nav/amcl_player/amcl_player.cc
pkg/trunk/nav/fake_localization/fake_localization.cpp
pkg/trunk/nav/nav_view/nav_view.cpp
pkg/trunk/nav/wavefront_player/wavefront_player.cc
pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp
pkg/trunk/simulators/rosgazebo/test/groundtruthtransform.cpp
pkg/trunk/simulators/rosstage/rosstage.cc
pkg/trunk/util/libTF/include/libTF/libTF.h
pkg/trunk/util/libTF/src/libTF.cpp
pkg/trunk/util/libTF/src/test/main.cpp
pkg/trunk/util/libTF/src/test/test_interp.cc
pkg/trunk/util/libTF/src/test/testtf.cc
pkg/trunk/util/rosTF/CMakeLists.txt
pkg/trunk/util/rosTF/include/rosTF/rosTF.h
pkg/trunk/util/rosTF/manifest.xml
pkg/trunk/util/rosTF/msg/TransformDH.msg
pkg/trunk/util/rosTF/msg/TransformEuler.msg
pkg/trunk/util/rosTF/msg/TransformMatrix.msg
pkg/trunk/util/rosTF/msg/TransformQuaternion.msg
pkg/trunk/util/rosTF/src/rosTF.cpp
pkg/trunk/util/rosTF/src/testClient.cc
pkg/trunk/util/rosTF/src/testServer.cc
Property Changed:
----------------
pkg/trunk/
Property changes on: pkg/trunk
___________________________________________________________________
Modified: svk:merge
- 920d6130-5740-4ec1-bb1a-45963d5fd813:/wgpkgtrunk:5865
+ 920d6130-5740-4ec1-bb1a-45963d5fd813:/frameidpr:7015
920d6130-5740-4ec1-bb1a-45963d5fd813:/wgpkgtrunk:5865
Modified: pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-fake_localization.xml
===================================================================
--- pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-fake_localization.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-fake_localization.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -1,6 +1,5 @@
<launch>
<group name="wg">
- <node pkg="namelookup" type="namelookup_server" respawn="false"/>
<include file="$(find wg_robot_description)/send.xml"/>
<node pkg="gazebo" type="run-gazebo.sh" args="$(find gazebo_robot_description)/world/robot_rosgazebo.world" respawn="true" />
<node pkg="map_server" type="map_server" args="$(find gazebo_robot_description)/world/Media/materials/textures/map3.png 0.1" respawn="false" />
Modified: pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-test.xml
===================================================================
--- pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-test.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-test.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -1,6 +1,5 @@
<launch>
<group name="wg">
- <node pkg="namelookup" type="namelookup_server" respawn="false"/>
<include file="$(find wg_robot_description)/send.xml"/>
<node pkg="gazebo" type="run-gazebo.sh" args="$(find gazebo_robot_description)/world/robot_test.world" respawn="true" />
<node pkg="map_server" type="map_server" args="$(find gazebo_robot_description)/world/Media/materials/textures/map3.png 0.1" respawn="false" />
Modified: pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-wg.xml
===================================================================
--- pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-wg.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo-wg.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -1,6 +1,5 @@
<launch>
<group name="wg">
- <node pkg="namelookup" type="namelookup_server" respawn="false"/>
<include file="$(find wg_robot_description)/send.xml"/>
<node pkg="gazebo" type="run-gazebo.sh" args="$(find gazebo_robot_description)/world/robot_rosgazebo_wg.world" respawn="true" />
<node pkg="map_server" type="map_server" args="$(find gazebo_robot_description)/world/Media/materials/textures/willowMap.png 0.1" respawn="false" />
Modified: pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml
===================================================================
--- pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -1,6 +1,5 @@
<launch>
<group name="wg">
- <node pkg="namelookup" type="namelookup_server" respawn="false"/>
<include file="$(find wg_robot_description)/send.xml"/>
<node pkg="gazebo" type="run-gazebo.sh" args="$(find gazebo_robot_description)/world/robot_rosgazebo.world" respawn="true" />
<node pkg="map_server" type="map_server" args="$(find gazebo_robot_description)/world/Media/materials/textures/map3.png 0.1" respawn="false" />
Modified: pkg/trunk/demos/2dnav-stage/2dnav-stage.xml
===================================================================
--- pkg/trunk/demos/2dnav-stage/2dnav-stage.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/demos/2dnav-stage/2dnav-stage.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -1,7 +1,6 @@
<launch>
<group name="wg">
- <node pkg="namelookup" type="namelookup_server" respawn="true"/>
<node pkg="rosstage" type="rosstage" args="$(find 2dnav-stage)/willow-erratic.world" respawn="false" />
<node pkg="map_server" type="map_server" args="$(find 2dnav-stage)/willow-full.png 0.1" respawn="false" />
<node pkg="amcl_player" type="amcl_player" respawn="false" />
Modified: pkg/trunk/drivers/cam/dc1394_cam/manifest.xml
===================================================================
--- pkg/trunk/drivers/cam/dc1394_cam/manifest.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/cam/dc1394_cam/manifest.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -6,7 +6,6 @@
<depend package="roscpp"/>
<depend package="std_msgs"/>
<depend package="libdc1394v2"/>
- <depend package="namelookup"/>
<depend package="sdl"/>
<depend package="opencv"/>
<export>
Modified: pkg/trunk/drivers/cam/dc1394_cam/src/dc1394_node/dc1394_node.cpp
===================================================================
--- pkg/trunk/drivers/cam/dc1394_cam/src/dc1394_node/dc1394_node.cpp 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/cam/dc1394_cam/src/dc1394_node/dc1394_node.cpp 2008-08-19 06:19:18 UTC (rev 3240)
@@ -41,7 +41,6 @@
#include "std_msgs/Empty.h"
#include "std_msgs/String.h"
#include "dc1394_cam/dc1394_cam.h"
-#include <namelookup/nameLookupClient.hh>
#include <newmat10/newmat.h>
#include <newmat10/newmatio.h>
@@ -149,14 +148,14 @@
}
- Dc1394Node() : ros::node("dc1394_node"), nlc(*this)
+ Dc1394Node() : ros::node("dc1394_node")
{
dc1394_cam::init();
int numCams;
param("numCams", numCams, 1);
- videre_frame_id_ = nlc.lookup("FRAMEID_STEREO_BLOCK");
+ videre_frame_id_ = "FRAMEID_STEREO_BLOCK";
for (int i = 0; i < numCams; i++)
{
@@ -697,8 +696,7 @@
private:
- nameLookupClient nlc;
- int videre_frame_id_;
+ std::string videre_frame_id_;
};
int main(int argc, char **argv)
Modified: pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc
===================================================================
--- pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -108,7 +108,6 @@
#include "std_msgs/LaserScan.h"
#include "robot_srvs/SelfTest.h"
-#include "namelookup/nameLookupClient.hh"
#include "urg_laser.h"
@@ -125,7 +124,6 @@
int count;
ros::Time next_time;
- nameLookupClient lookup_client;
public:
URG::laser urg;
@@ -146,7 +144,7 @@
string id;
- HokuyoNode() : ros::node("urglaser"), running(false), count(0), lookup_client(*this)
+ HokuyoNode() : ros::node("urglaser"), running(false), count(0)
{
advertise<std_msgs::LaserScan>("scan");
advertise_service("~self_test", &HokuyoNode::SelfTest);
@@ -264,7 +262,7 @@
scan_msg.set_ranges_size(scan.num_readings);
scan_msg.set_intensities_size(scan.num_readings);
scan_msg.header.stamp = ros::Time(scan.system_time_stamp);
- scan_msg.header.frame_id = lookup_client.lookup(frameid);
+ scan_msg.header.frame_id = frameid;
for(int i = 0; i < scan.num_readings; ++i)
{
Modified: pkg/trunk/drivers/laser/hokuyourg_player/manifest.xml
===================================================================
--- pkg/trunk/drivers/laser/hokuyourg_player/manifest.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/laser/hokuyourg_player/manifest.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -6,7 +6,6 @@
<depend package="std_msgs" />
<depend package="robot_srvs" />
<depend package="urg_driver" />
- <depend package="namelookup" />
<depend package="rosthread" />
<url>http://pr.willowgarage.com/wiki/Hokuyo_TOP-URG</url>
</package>
Modified: pkg/trunk/drivers/laser/sicktoolbox_wrapper/manifest.xml
===================================================================
--- pkg/trunk/drivers/laser/sicktoolbox_wrapper/manifest.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/laser/sicktoolbox_wrapper/manifest.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -5,9 +5,7 @@
</description>
<author>Morgan Quigley</author>
<license>BSD</license>
- <depend package="namelookup"/>
<depend package="sicktoolbox"/>
<depend package="roscpp"/>
<depend package="std_msgs"/>
- <depend package="rosTF"/>
</package>
Modified: pkg/trunk/drivers/laser/sicktoolbox_wrapper/ros/sicklms/sicklms.cpp
===================================================================
--- pkg/trunk/drivers/laser/sicktoolbox_wrapper/ros/sicklms/sicklms.cpp 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/laser/sicktoolbox_wrapper/ros/sicklms/sicklms.cpp 2008-08-19 06:19:18 UTC (rev 3240)
@@ -33,8 +33,6 @@
#include <sicklms-1.0/SickLMS.hh>
#include "ros/node.h"
#include "std_msgs/LaserScan.h"
-#include "rosTF/rosTF.h"
-#include "namelookup/nameLookupClient.hh"
using namespace SickToolbox;
using namespace std;
@@ -44,7 +42,7 @@
got_ctrlc = true;
}
-class SickNode : public ros::node, public nameLookupClient
+class SickNode : public ros::node
{
public:
std_msgs::LaserScan scan_msg;
@@ -52,9 +50,9 @@
string port;
int baud;
double last_print_time;
- SickNode() : ros::node("sicklms"), scan_count(0), last_print_time(0), nameLookupClient(*(ros::node*)this)
+ SickNode() : ros::node("sicklms"), scan_count(0), last_print_time(0)
{
- scan_msg.header.frame_id = this->lookup("FRAMEID_LASER");
+ scan_msg.header.frame_id = "FRAMEID_LASER";
advertise<std_msgs::LaserScan>("scan");
param("sicklms/port", port, string("/dev/ttyUSB1"));
param("sicklms/baud", baud, 500000);
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Camera.cc
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Camera.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Camera.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -42,7 +42,6 @@
#include "MonoCameraSensor.hh"
using namespace gazebo;
-using namespace libTF;
GZ_REGISTER_DYNAMIC_CONTROLLER("ros_camera", Ros_Camera);
@@ -71,7 +70,6 @@
rosnode = new ros::node("ros_gazebo",ros::node::DONT_HANDLE_SIGINT);
printf("-------------------- starting node in camera \n");
}
- tfc = new rosTFClient(*rosnode); //, true, 1 * 1000000000ULL, 0ULL);
}
////////////////////////////////////////////////////////////////////////////////
@@ -173,7 +171,7 @@
this->lock.lock();
// copy data into image
- this->imageMsg.header.frame_id = tfc->nameClient.lookup(this->frameName);
+ this->imageMsg.header.frame_id = this->frameName;
this->imageMsg.header.stamp.sec = (unsigned long)floor(this->cameraIface->data->head.time);
this->imageMsg.header.stamp.nsec = (unsigned long)floor( 1e9 * ( this->cameraIface->data->head.time - this->imageMsg.header.stamp.sec) );
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Laser.cc
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Laser.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/Ros_Laser.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -174,7 +174,7 @@
/* */
/***************************************************************/
this->lock.lock();
- this->laserMsg.header.frame_id = tfc->nameClient.lookup(this->frameName);
+ this->laserMsg.header.frame_id = this->frameName;
this->laserMsg.header.stamp.sec = (unsigned long)floor(this->laserIface->data->head.time);
this->laserMsg.header.stamp.nsec = (unsigned long)floor( 1e9 * ( this->laserIface->data->head.time - this->laserMsg.header.stamp.sec) );
Modified: pkg/trunk/exec_trex/CalcGraspPositionConstraint.cc
===================================================================
--- pkg/trunk/exec_trex/CalcGraspPositionConstraint.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/exec_trex/CalcGraspPositionConstraint.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -56,9 +56,9 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- aPose.frame = rni->tf.lookup("FRAMEID_ARM_R_SHOULDER");
+ aPose.frame = "FRAMEID_ARM_R_SHOULDER";
- libTF::TFPose inShoulderFrame = rni->tf.transformPose(rni->tf.lookup("FRAMEID_ODOM"), aPose);
+ libTF::TFPose inShoulderFrame = rni->tf.transformPose("FRAMEID_ODOM", aPose);
//std::cout << "In shoulder frame in base x " << inShoulderFrame.x << std::endl;
//std::cout << "In shoulder frame in base y " << inShoulderFrame.y << std::endl;
@@ -79,9 +79,9 @@
bPose.pitch = 0;
bPose.yaw = 0;
bPose.time = 0;
- bPose.frame = rni->tf.lookup("FRAMEID_ARM_R_HAND");
+ bPose.frame = "FRAMEID_ARM_R_HAND";
- libTF::TFPose inHandFrame = rni->tf.transformPose(rni->tf.lookup("FRAMEID_ODOM"), bPose);
+ libTF::TFPose inHandFrame = rni->tf.transformPose("FRAMEID_ODOM", bPose);
//std::cout << "In hand frame in base x " << inHandFrame.x << std::endl;
//std::cout << "In hand frame in base y " << inHandFrame.y << std::endl;
Modified: pkg/trunk/exec_trex/ROSNode.cc
===================================================================
--- pkg/trunk/exec_trex/ROSNode.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/exec_trex/ROSNode.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -75,8 +75,8 @@
//copied from wavefront_planner.cc
//TODO change this to broadcast.
- this->tf.setWithEulers(tf.nameClient.lookup("FRAMEID_LASER"),
- tf.nameClient.lookup("FRAMEID_ROBOT"),
+ this->tf.setWithEulers("FRAMEID_LASER",
+ "FRAMEID_ROBOT",
0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0);
this->laser_hitpts_size = this->laser_hitpts_len = 0;
@@ -464,7 +464,7 @@
robotPose.x = 0;
robotPose.y = 0;
robotPose.yaw = 0;
- robotPose.frame = tf.nameClient.lookup("FRAMEID_ROBOT");
+ robotPose.frame = "FRAMEID_ROBOT";
robotPose.time = laserMsg.header.stamp.sec * 1000000000ULL +
laserMsg.header.stamp.nsec; ///HACKE FIXME we should be able to get time somewhere else,
try {
Modified: pkg/trunk/exec_trex/manifest.xml
===================================================================
--- pkg/trunk/exec_trex/manifest.xml 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/exec_trex/manifest.xml 2008-08-19 06:19:18 UTC (rev 3240)
@@ -4,6 +4,7 @@
<license>BSD</license>
<depend package="player" />
<depend package="std_msgs" />
+ <depend package="std_srvs" />
<depend package="pr2_msgs" />
<depend package="trex" />
<depend package="rosTF" />
Modified: pkg/trunk/nav/amcl_player/amcl_player.cc
===================================================================
--- pkg/trunk/nav/amcl_player/amcl_player.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/nav/amcl_player/amcl_player.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -393,7 +393,7 @@
localizedOdomMsg.header.stamp.from_double(hdr->timestamp);
try
{
- localizedOdomMsg.header.frame_id = tf->lookup("FRAMEID_MAP");
+ localizedOdomMsg.header.frame_id = "FRAMEID_MAP";
}
catch(...)
{
Modified: pkg/trunk/nav/fake_localization/fake_localization.cpp
===================================================================
--- pkg/trunk/nav/fake_localization/fake_localization.cpp 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/nav/fake_localization/fake_localization.cpp 2008-08-19 06:19:18 UTC (rev 3240)
@@ -138,7 +138,7 @@
m_currentOdom.pos.x += m_iniPos.x;
m_currentOdom.pos.y += m_iniPos.y;
m_currentOdom.pos.th = math_utils::normalize_angle(m_currentOdom.pos.th + m_iniPos.th);
- m_currentOdom.header.frame_id = m_tfServer->nameClient.lookup("FRAMEID_MAP");
+ m_currentOdom.header.frame_id = "FRAMEID_MAP";
m_tfServer->sendEuler("FRAMEID_ROBOT",
"FRAMEID_MAP",
Modified: pkg/trunk/nav/nav_view/nav_view.cpp
===================================================================
--- pkg/trunk/nav/nav_view/nav_view.cpp 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/nav/nav_view/nav_view.cpp 2008-08-19 06:19:18 UTC (rev 3240)
@@ -321,7 +321,7 @@
robotPose.x = 0;
robotPose.y = 0;
robotPose.yaw = 0;
- robotPose.frame = tf.lookup("FRAMEID_ROBOT");
+ robotPose.frame = "FRAMEID_ROBOT";
robotPose.time = 0;
libTF::TFPose2D mapPose = tf.transformPose2D("FRAMEID_MAP", robotPose);
Modified: pkg/trunk/nav/wavefront_player/wavefront_player.cc
===================================================================
--- pkg/trunk/nav/wavefront_player/wavefront_player.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/nav/wavefront_player/wavefront_player.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -371,8 +371,8 @@
// Static robot->laser transform
double laser_x_offset;
param("laser_x_offset", laser_x_offset, 0.05);
- this->tf.setWithEulers(tf.nameClient.lookup("FRAMEID_LASER"),
- tf.nameClient.lookup("FRAMEID_ROBOT"),
+ this->tf.setWithEulers("FRAMEID_LASER",
+ "FRAMEID_ROBOT",
laser_x_offset, 0.0, 0.0, 0.0, 0.0, 0.0, 0);
advertise<std_msgs::Planner2DState>("state");
@@ -573,7 +573,7 @@
robotPose.x = 0;
robotPose.y = 0;
robotPose.yaw = 0;
- robotPose.frame = tf.nameClient.lookup("FRAMEID_ROBOT");
+ robotPose.frame = "FRAMEID_ROBOT";
robotPose.time = 0; // request most recent pose
//robotPose.time = laserMsg.header.stamp.sec * 1000000000ULL +
// laserMsg.header.stamp.nsec; ///HACKE FIXME we should be able to get time somewhere else
Modified: pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp
===================================================================
--- pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp 2008-08-19 06:19:18 UTC (rev 3240)
@@ -678,7 +678,7 @@
// this->odomMsg.stall = this->positionmodel->Stall();
// TODO: get the frame ID from somewhere
- this->odomMsg.header.frame_id = tf.nameClient.lookup("FRAMEID_ODOM");
+ this->odomMsg.header.frame_id = "FRAMEID_ODOM";
this->odomMsg.header.stamp.sec = (unsigned long)floor(this->simTime);
this->odomMsg.header.stamp.nsec = (unsigned long)floor( 1e9 * ( this->simTime - this->odomMsg.header.stamp.sec) );
Modified: pkg/trunk/simulators/rosgazebo/test/groundtruthtransform.cpp
===================================================================
--- pkg/trunk/simulators/rosgazebo/test/groundtruthtransform.cpp 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/simulators/rosgazebo/test/groundtruthtransform.cpp 2008-08-19 06:19:18 UTC (rev 3240)
@@ -27,7 +27,7 @@
robotPose.roll = 0;
robotPose.time = 0;
try {
- robotPose.frame = tf.lookup("FRAMEID_ROBOT");
+ robotPose.frame = "FRAMEID_ROBOT";
} catch(libTF::TransformReference::LookupException& ex) {
std::cerr << "LookupException in lookup(\"FRAMEID_ROBOT\"): " << ex.what() << "\n";
std::cout << "LookupException in lookup(\"FRAMEID_ROBOT\"): " << ex.what();
Modified: pkg/trunk/simulators/rosstage/rosstage.cc
===================================================================
--- pkg/trunk/simulators/rosstage/rosstage.cc 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/simulators/rosstage/rosstage.cc 2008-08-19 06:19:18 UTC (rev 3240)
@@ -241,7 +241,7 @@
}
// TODO: get the frame ID from somewhere
- this->laserMsg.header.frame_id = tf.lookup("FRAMEID_LASER");
+ this->laserMsg.header.frame_id = "FRAMEID_LASER";
this->laserMsg.header.stamp.from_double(world->SimTimeNow() / 1e6);
//this->laserMsg.header.stamp.sec =
//(unsigned long)floor(world->SimTimeNow() / 1e6);
@@ -262,7 +262,7 @@
this->odomMsg.vel.th = v.a;
this->odomMsg.stall = this->positionmodel->Stall();
// TODO: get the frame ID from somewhere
- this->odomMsg.header.frame_id = tf.lookup("FRAMEID_ODOM");
+ this->odomMsg.header.frame_id = "FRAMEID_ODOM";
this->odomMsg.header.stamp.from_double(world->SimTimeNow() / 1e6);
//this->odomMsg.header.stamp.sec =
Modified: pkg/trunk/util/libTF/include/libTF/libTF.h
===================================================================
--- pkg/trunk/util/libTF/include/libTF/libTF.h 2008-08-19 06:02:45 UTC (rev 3239)
+++ pkg/trunk/util/libTF/include/libTF/libTF.h 2008-08-19 06:19:18 UTC (rev 3240)
@@ -58,7 +58,7 @@
{
double x,y,z;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
/** ** Point2D ****
@@ -72,7 +72,7 @@
{
double x,y;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
@@ -83,7 +83,7 @@
{
double x,y,z;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
/** TFVector2D
@@ -94,7 +94,7 @@
{
double x,y;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
/** TFEulerYPR
@@ -105,7 +105,7 @@
{
double yaw, pitch, roll;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
/** TFYaw
@@ -115,7 +115,7 @@
{
double yaw;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
/** TFPose
@@ -125,7 +125,7 @@
{
double x,y,z,yaw,pitch,roll;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
/** TFPose2D
@@ -135,7 +135,7 @@
{
double x,y,yaw;
unsigned long long time;
- unsigned int frame;
+ std::string frame;
};
@@ -151,7 +151,7 @@
*
* Internal Representation
* libTF will store frames with the parameters necessary for generating the transform into that frame from it's parent and a reference to the parent frame.
- * Frames are designated using an unsigned int
+ * Frames are designated using an std::string
* 0 is a frame without a parent (the top of a tree)
* The positions of frames over time must be pushed in.
*
@@ -190,7 +190,7 @@
*
* Possible exceptions are: TransformReference::InvaildFrame
*/
- void addFrame(unsigned int frameid, unsigned int parentid);
+ void addFrame(std::string frameid, std::string parentid);
/** \brief Set a new frame or update an old one.
* \param frameid The destination frame
@@ -208,22 +208,22 @@
*
* Possible exceptions are: TransformReference::LookupException
*/
- void setWithEulers(unsigned int frameid, unsigned int parentid, double x, double y, double z, double yaw, double pitch, double roll, ULLtime time);
+ void setWithEulers(std::string frameid, std::string parentid, double x, double y, double z, double yaw, double pitch, double roll, ULLtime time);
/** \brief Set a transform using DH Parameters
* Conventions from http://en.wikipedia.org/wiki/Robotics_conventions
* Possible exceptions are: TransformReference::LookupException
*/
- void setWithDH(unsigned int frameid, unsigned int parentid, double length, double alpha, double offset, double theta, ULLtime time);
+ void setWithDH(std::string frameid, std::string parentid, double length, double alpha, double offset, double theta, ULLtime time);
/** \brief Set the transform using a matrix
* Possible exceptions are: TransformReference::LookupException
*/
- void setWithMatrix(unsigned int frameid, unsigned int parentid, const NEWMAT::Matrix & matrix_in, ULLtime time);
+ void setWithMatrix(std::string frameid, std::string parentid, const NEWMAT::Matrix & matrix_in, ULLtime time);
/** \brief Set the transform using quaternions natively
* Possible exceptions are: TransformReference::LookupException
*/
- void setWithQuaternion(unsigned int frameid, unsigned int parentid, double xt, double yt, double zt, double xr, double yr, double zr, double w, ULLtime time);
+ void setWithQuaternion(std::string frameid, std::string parentid, double xt, double yt, double zt, double xr, double yr, double zr, double w, ULLtime time);
/*********** Accessors *************/
@@ -236,31 +236,31 @@
* Possible exceptions TransformReference::LookupException, TransformReference::ConnectivityException,
* TransformReference::MaxDepthException
*/
- NEWMAT::Matrix getMatrix(unsigned int target_frame, unsigned int source_frame, ULLtime time);
+ NEWMAT::Matrix getMatrix(std::string target_frame, std::string source_frame, ULLtime time);
/** \brief Transform a point to a different frame */
- TFPoint transformPoint(unsigned int target_frame, const TFPoint & point_in);
+ TFPoint transformPoint(std::string target_frame, const TFPoint & point_in);
/** \brief Transform a 2D point to a different frame */
- TFPoint2D transformPoint2D(unsigned int target_frame, const TFPoint2D & point_in);
+ TFPoint2D transformPoint2D(std::string target_frame, const TFPoint2D & point_in);
/** \brief Transform a vector to a different frame */
- TFVector transformVector(unsigned int target_frame, const TFVector & vector_in);
+ TFVector transformVector(std::string target_frame, const TFVector & vector_in);
/** \brief Transform a 2D vector to a different frame */
- TFVector2D transformVector2D(unsigned int target_frame, const TFVector2D & vector_in);
+ TFVector2D transformVector2D(std::string target_frame, const TFVector2D & vector_in);
/** \brief Transform Euler angles between frames */
- TFEulerYPR transformEulerYPR(unsigned int target_frame, const TFEulerYPR & euler_in);
+ TFEulerYPR transformEulerYPR(std::string target_frame, const TFEulerYPR & euler_in);
/** \brief Transform Yaw between frames. Useful for 2D navigation */
- TFYaw transformYaw(unsigned int target_frame, const TFYaw & euler_in);
+ TFYaw transformYaw(std::string target_frame, const TFYaw & euler_in);
/** \brief Transform a 6DOF pose. (x, y, z, yaw, pitch, roll). */
- TFPose transformPose(unsigned int target_frame, const TFPose & pose_in);
+ TFPose transformPose(std::string target_frame, const TFPose & pose_in);
/** \brief Transform a planar pose, x,y,yaw */
- TFPose2D transformPose2D(unsigned int target_frame, const TFPose2D & pose_in);
+ TFPose2D transformPose2D(std::string target_frame, const TFPose2D & pose_in);
/** \brief Debugging function that will print the spanning chain of transforms.
* Possible exceptions TransformReference::LookupException, TransformReference::ConnectivityException,
* TransformReference::MaxDepthException
*/
- std::string viewChain(unsigned int target_frame, unsigned int source_frame);
+ std::string viewChain(std::string target_frame, std::string source_frame);
/** \brief A way to see what frames have been cached
* Useful for debugging
@@ -369,6 +369,11 @@
/// How long to cache transform history
ULLtime cache_time;
+ /// Map for storage of name
+ std::map<std::string, unsigned int> nameMap;
+ std::map<unsigned int, std::string> reverseMap;
+ unsigned int last_number; ///\todo init to zero
+
/// whether or not to interpolate or extrapolate
bool interpolating;
@@ -395,7 +400,12 @@
* Possible Exception: TransformReference::LookupException
*/
inline RefFrame* getFrame(unsigned int frame_number) { if (frames[frame_number] == NULL) { s...
[truncated message content] |
|
From: <pof...@us...> - 2008-08-19 07:09:14
|
Revision: 3243
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3243&view=rev
Author: poftwaresatent
Date: 2008-08-19 07:09:23 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
de-blacklist my stuff, cross fingers
Removed Paths:
-------------
pkg/trunk/3rdparty/estar/ROS_BUILD_BLACKLIST
pkg/trunk/3rdparty/libsunflower/ROS_BUILD_BLACKLIST
pkg/trunk/simulators/nepumuk/ROS_BUILD_BLACKLIST
Deleted: pkg/trunk/3rdparty/estar/ROS_BUILD_BLACKLIST
===================================================================
--- pkg/trunk/3rdparty/estar/ROS_BUILD_BLACKLIST 2008-08-19 07:03:57 UTC (rev 3242)
+++ pkg/trunk/3rdparty/estar/ROS_BUILD_BLACKLIST 2008-08-19 07:09:23 UTC (rev 3243)
@@ -1,2 +0,0 @@
-http://pr.willowgarage.com:8011/personalrobots-update-wgs7/builds/7/step-nepumuk%0A/0
-https://prdev.willowgarage.com/trac/personalrobots/ticket/157
Deleted: pkg/trunk/3rdparty/libsunflower/ROS_BUILD_BLACKLIST
===================================================================
--- pkg/trunk/3rdparty/libsunflower/ROS_BUILD_BLACKLIST 2008-08-19 07:03:57 UTC (rev 3242)
+++ pkg/trunk/3rdparty/libsunflower/ROS_BUILD_BLACKLIST 2008-08-19 07:09:23 UTC (rev 3243)
@@ -1 +0,0 @@
-estar
Deleted: pkg/trunk/simulators/nepumuk/ROS_BUILD_BLACKLIST
===================================================================
--- pkg/trunk/simulators/nepumuk/ROS_BUILD_BLACKLIST 2008-08-19 07:03:57 UTC (rev 3242)
+++ pkg/trunk/simulators/nepumuk/ROS_BUILD_BLACKLIST 2008-08-19 07:09:23 UTC (rev 3243)
@@ -1 +0,0 @@
-estar
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tf...@us...> - 2008-08-19 18:48:58
|
Revision: 3259
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3259&view=rev
Author: tfoote
Date: 2008-08-19 18:49:06 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
fixing APIs I missed before, sorry
Modified Paths:
--------------
pkg/trunk/drivers/robot/erratic_player/erratic_player.cc
pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp
pkg/trunk/robot_control_loops/pr2_gazebo/src/RosGazeboControlsNode.cpp
pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp
pkg/trunk/visualization/scene_labeler/include/scene_labeler.h
pkg/trunk/world_models/costmap_2d/src/costmap_2d_ros.cpp
Modified: pkg/trunk/drivers/robot/erratic_player/erratic_player.cc
===================================================================
--- pkg/trunk/drivers/robot/erratic_player/erratic_player.cc 2008-08-19 18:48:16 UTC (rev 3258)
+++ pkg/trunk/drivers/robot/erratic_player/erratic_player.cc 2008-08-19 18:49:06 UTC (rev 3259)
@@ -288,7 +288,7 @@
en.odom.vel.th = pdata->vel.pa;
en.odom.stall = pdata->stall;
- en.odom.header.frame_id = en.tf.lookup("FRAMEID_ODOM");
+ en.odom.header.frame_id = "FRAMEID_ODOM";
en.odom.header.stamp.sec = (long long unsigned int)floor(hdr->timestamp);
en.odom.header.stamp.sec = (long long unsigned int)((hdr->timestamp - floor(hdr->timestamp)) * 1000000000ULL);
Modified: pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp
===================================================================
--- pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp 2008-08-19 18:48:16 UTC (rev 3258)
+++ pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp 2008-08-19 18:49:06 UTC (rev 3259)
@@ -174,11 +174,11 @@
last_motor_time = ros::Time::now();
next_time = ros::Time::now();
- tf.setWithEulers(tf.lookup("FRAMEID_LASER2"), tf.lookup("FRAMEID_TILT_STAGE"),
+ tf.setWithEulers("FRAMEID_LASER2", "FRAMEID_TILT_STAGE",
0.0, 0, .02,
0.0, 0.0, 0.0,
last_motor_time.to_ull());
- tf.setWithEulers(tf.lookup("FRAMEID_TILT_STAGE"), tf.lookup("FRAMEID_TILT_BASE"),
+ tf.setWithEulers("FRAMEID_TILT_STAGE", "FRAMEID_TILT_BASE",
0, 0, 0,
0, 0, 0,
last_motor_time.to_ull());
@@ -239,7 +239,7 @@
u.y = 0;
u.z = 0;
u.time = scans.header.stamp.to_ull();
- u.frame = tf.lookup("FRAMEID_TILT_STAGE");
+ u.frame = "FRAMEID_TILT_STAGE";
libTF::TFVector v = tf.transformVector("FRAMEID_TILT_BASE",u);
@@ -321,7 +321,7 @@
long long inc = scans.time_increment * i * 1000000000;
unsigned long long t = scans.header.stamp.to_ull() + inc;
- rot_point = tf.getMatrix(tf.lookup("FRAMEID_TILT_BASE"),tf.lookup("FRAMEID_LASER2"),t) * point;
+ rot_point = tf.getMatrix("FRAMEID_TILT_BASE","FRAMEID_LASER2",t) * point;
if (valid)
{
Modified: pkg/trunk/robot_control_loops/pr2_gazebo/src/RosGazeboControlsNode.cpp
===================================================================
--- pkg/trunk/robot_control_loops/pr2_gazebo/src/RosGazeboControlsNode.cpp 2008-08-19 18:48:16 UTC (rev 3258)
+++ pkg/trunk/robot_control_loops/pr2_gazebo/src/RosGazeboControlsNode.cpp 2008-08-19 18:49:06 UTC (rev 3259)
@@ -532,7 +532,7 @@
this->laserMsg.intensities[i] = this->intensities[i];
}
- this->laserMsg.header.frame_id = tf.lookup("FRAMEID_LASER");
+ this->laserMsg.header.frame_id = "FRAMEID_LASER";
this->laserMsg.header.stamp.sec = (unsigned long)floor(this->simTime);
this->laserMsg.header.stamp.nsec = (unsigned long)floor( 1e9 * ( this->simTime - this->laserMsg.header.stamp.sec) );
@@ -565,7 +565,7 @@
// this->odomMsg.stall = this->positionmodel->Stall();
// TODO: get the frame ID from somewhere
- this->odomMsg.header.frame_id = tf.lookup("FRAMEID_ODOM");
+ this->odomMsg.header.frame_id = "FRAMEID_ODOM";
this->odomMsg.header.stamp.sec = (unsigned long)floor(this->simTime);
this->odomMsg.header.stamp.nsec = (unsigned long)floor( 1e9 * ( this->simTime - this->odomMsg.header.stamp.sec) );
Modified: pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp
===================================================================
--- pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp 2008-08-19 18:48:16 UTC (rev 3258)
+++ pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp 2008-08-19 18:49:06 UTC (rev 3259)
@@ -166,8 +166,8 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- //aPose.frame = this->tfClient.nameClient.lookup(PR2::PR2_FRAMEID[i]);// + i
- aPose.frame = this->tfClient.nameClient.lookup(links[i]->name);
+ //aPose.frame = PR2::PR2_FRAMEID[i];// + i
+ aPose.frame = links[i]->name;
libTF::TFPose inBaseFrame;
try
{
@@ -182,13 +182,13 @@
inBaseFrame.pitch = 0;
inBaseFrame.yaw = 0;
inBaseFrame.time = 0;
- inBaseFrame.frame = this->tfClient.nameClient.lookup("base");
+ inBaseFrame.frame = "base";
}
std::cout << "Coordinates for : " << i << "; "<<inBaseFrame.x << ", " << inBaseFrame.y << ", " << inBaseFrame.z << "; "<<inBaseFrame.roll << ", " << inBaseFrame.pitch << ", " << inBaseFrame.yaw <<std::endl;
try{
if(links[i]->visual->geometry->filename != "")
{
- ILModel *tempModel = new ILModel(pLocalRenderer->manager(), intermediate, (irr::c8*)(pathnamePrefix + links[i]->visual->geometry->filename + pathnameSuffix).c_str(), this->tfClient.nameClient.lookup(links[i]->name), (float)inBaseFrame.x,(float)inBaseFrame.y, (float)inBaseFrame.z, (float)inBaseFrame.roll,(float)(inBaseFrame.pitch), (float)(inBaseFrame.yaw));
+ ILModel *tempModel = new ILModel(pLocalRenderer->manager(), intermediate, (irr::c8*)(pathnamePrefix + links[i]->visual->geometry->filename + pathnameSuffix).c_str(), links[i]->name, (float)inBaseFrame.x,(float)inBaseFrame.y, (float)inBaseFrame.z, (float)inBaseFrame.roll,(float)(inBaseFrame.pitch), (float)(inBaseFrame.yaw));
if(tempModel->getNode() != NULL)
{
tempModel->getNode()->getMaterial(0).AmbientColor.set(255,100+int(155.0*rand()/(RAND_MAX + 1.0)),100+int(155.0*rand()/(RAND_MAX + 1.0)),100+int(155.0*rand()/(RAND_MAX + 1.0)));
@@ -382,7 +382,7 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- aPose.frame = this->tfClient.nameClient.lookup("FRAMEID_TILT_LASER_BLOCK"); //TODO: put me in pr2.xml and change my string
+ aPose.frame = "FRAMEID_TILT_LASER_BLOCK"; //TODO: put me in pr2.xml and change my string
libTF::TFPose inBaseFrame;
try
{
@@ -397,7 +397,7 @@
inBaseFrame.pitch = 0;
inBaseFrame.yaw = 0;
inBaseFrame.time = 0;
- inBaseFrame.frame = this->tfClient.nameClient.lookup("base");
+ inBaseFrame.frame = "base";
}
switch(scanT)
{
@@ -431,7 +431,7 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- aPose.frame = this->tfClient.nameClient.lookup("FRAMEID_BASE_LASER_BLOCK"); //TODO: put me in pr2.xml and change my string
+ aPose.frame = "FRAMEID_BASE_LASER_BLOCK"; //TODO: put me in pr2.xml and change my string
libTF::TFPose inBaseFrame;
try
{
@@ -446,7 +446,7 @@
inBaseFrame.pitch = 0;
inBaseFrame.yaw = 0;
inBaseFrame.time = 0;
- inBaseFrame.frame = this->tfClient.nameClient.lookup("base");
+ inBaseFrame.frame = "base";
}
shutterFloor();
pLocalRenderer->lock();
@@ -470,7 +470,7 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- aPose.frame = this->tfClient.nameClient.lookup("FRAMEID_STEREO_BLOCK"); //TODO: put me in pr2.xml and change my string
+ aPose.frame = "FRAMEID_STEREO_BLOCK"; //TODO: put me in pr2.xml and change my string
libTF::TFPose inBaseFrame;
try
{
@@ -485,7 +485,7 @@
inBaseFrame.pitch = 0;
inBaseFrame.yaw = 0;
inBaseFrame.time = 0;
- inBaseFrame.frame = this->tfClient.nameClient.lookup("base");
+ inBaseFrame.frame = "base";
}
pLocalRenderer->lock();
/*for(int i = 0; i < ilStereoCloud.size(); i++)
@@ -562,7 +562,7 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- aPose.frame = this->tfClient.nameClient.lookup((*iter).first);
+ aPose.frame = (*iter).first;
libTF::TFPose inBaseFrame;
try
{
@@ -578,7 +578,7 @@
inBaseFrame.pitch = 0;
inBaseFrame.yaw = 0;
inBaseFrame.time = 0;
- inBaseFrame.frame = this->tfClient.nameClient.lookup("base");
+ inBaseFrame.frame = "base";
}
if((*iter).second != NULL)
{
Modified: pkg/trunk/visualization/scene_labeler/include/scene_labeler.h
===================================================================
--- pkg/trunk/visualization/scene_labeler/include/scene_labeler.h 2008-08-19 18:48:16 UTC (rev 3258)
+++ pkg/trunk/visualization/scene_labeler/include/scene_labeler.h 2008-08-19 18:49:06 UTC (rev 3259)
@@ -74,7 +74,6 @@
cout << "Waiting for transformations from rosTF/frameServer... "; flush(cout);
while(true) {
try {
- //rtf.getMatrix(rtf.nameClient.lookup("FRAMEID_SMALLV"), rtf.nameClient.lookup("FRAMEID_TILT_BASE"), ros::Time::now().to_ull());
rtf.getMatrix("FRAMEID_SMALLV", "FRAMEID_TILT_BASE", ros::Time::now().to_ull());
break;
}
@@ -106,10 +105,10 @@
cout << "Done." << endl;
// -- Apply a default frame for old logs that don't have it in the header. Assume we're using smallv_transformer.
-/* if(videre_cloud_msg_.header.frame_id == 0) */
-/* videre_cloud_msg_.header.frame_id = rtf.nameClient.lookup("FRAMEID_SMALLV"); */
-/* if(full_cloud_msg_.header.frame_id == 0) */
-/* full_cloud_msg_.header.frame_id = rtf.nameClient.lookup("FRAMEID_SMALLV"); */
+ if(videre_cloud_msg_.header.frame_id == 0)
+ videre_cloud_msg_.header.frame_id = "FRAMEID_SMALLV";
+ if(full_cloud_msg_.header.frame_id == 0)
+ full_cloud_msg_.header.frame_id = "FRAMEID_SMALLV";
// -- Old time stamps anger rostf.
full_cloud_msg_.header.stamp = ros::Time::now();
Modified: pkg/trunk/world_models/costmap_2d/src/costmap_2d_ros.cpp
===================================================================
--- pkg/trunk/world_models/costmap_2d/src/costmap_2d_ros.cpp 2008-08-19 18:48:16 UTC (rev 3258)
+++ pkg/trunk/world_models/costmap_2d/src/costmap_2d_ros.cpp 2008-08-19 18:49:06 UTC (rev 3259)
@@ -128,8 +128,8 @@
costmap_.setStaticMap(sx, sy, resp.map.resolution, mapdata);
delete[] mapdata;
- tf_.setWithEulers(tf_.lookup("FRAMEID_LASER"),
- tf_.lookup("FRAMEID_ROBOT"),
+ tf_.setWithEulers("FRAMEID_LASER",
+ "FRAMEID_ROBOT",
0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0);
advertise<std_msgs::Polyline2D>("gui_laser");
@@ -171,7 +171,7 @@
// aPose.pitch = 0;
// aPose.yaw = 0;
// aPose.time = 0;
- // aPose.frame = tf.lookup("FRAMEID_ODOM");
+ // aPose.frame = "FRAMEID_ODOM";
// libTF::TFPose inMapFrame = tf.transformPose("FRAMEID_MAP", aPose);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <stu...@us...> - 2008-08-19 21:52:28
|
Revision: 3273
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3273&view=rev
Author: stuglaser
Date: 2008-08-19 21:52:35 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
Subversion choked, so now these changes are being added as one commit.
Modified Paths:
--------------
pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/gazebo_actuators.h
pkg/trunk/drivers/simulator/gazebo_plugin/manifest.xml
pkg/trunk/drivers/simulator/gazebo_plugin/src/gazebo_actuators.cpp
pkg/trunk/mechanism/hardware_interface/include/hardware_interface/hardware_interface.h
pkg/trunk/mechanism/mechanism_control/include/mechanism_control/mechanism_control.h
pkg/trunk/mechanism/mechanism_control/src/mechanism_control.cpp
pkg/trunk/mechanism/mechanism_model/CMakeLists.txt
pkg/trunk/mechanism/mechanism_model/include/mechanism_model/joint.h
pkg/trunk/mechanism/mechanism_model/include/mechanism_model/robot.h
pkg/trunk/mechanism/mechanism_model/include/mechanism_model/transmission.h
pkg/trunk/mechanism/mechanism_model/src/joint.cpp
pkg/trunk/mechanism/mechanism_model/src/simple_transmission.cpp
pkg/trunk/robot_descriptions/wg_robot_description_parser/CMakeLists.txt
pkg/trunk/robot_descriptions/wg_robot_description_parser/manifest.xml
pkg/trunk/robot_descriptions/wg_robot_description_parser/test/test_cpp_parser.cpp
pkg/trunk/util/math_utils/include/math_utils/MathExpression.h
pkg/trunk/util/math_utils/src/MathExpression.cpp
pkg/trunk/util/string_utils/include/string_utils/string_utils.h
pkg/trunk/util/string_utils/src/string_utils.cpp
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/gazebo_actuators.h
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/gazebo_actuators.h 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/gazebo_actuators.h 2008-08-19 21:52:35 UTC (rev 3273)
@@ -35,6 +35,8 @@
#include <gazebo/Model.hh>
#include "hardware_interface/hardware_interface.h"
#include "mechanism_control/mechanism_control.h"
+#include "mechanism_model/robot.h"
+#include "tinyxml/tinyxml.h"
namespace gazebo
@@ -63,15 +65,13 @@
MechanismControl mc_;
MechanismControlNode mcn_;
- // Each joint in joints_ corresponds to the joint with the same
- // index in mech_joints_. The mech_joints_ vector exists so that
- // each transmission has a mechanism::Joint to write to, because it
- // would be best if the transmissions did not depend on Gazebo
- // objects.
+ TiXmlDocument config_;
+
+ // The fake model helps Gazebo run the transmissions backwards, so
+ // that it can figure out what its joints should do based on the
+ // actuator values.
+ mechanism::Robot fake_model_;
std::vector<gazebo::Joint*> joints_;
- std::vector<mechanism::Joint*> mech_joints_;
- std::vector<mechanism::Transmission*> transmissions_;
- std::vector<std::string> actuator_names_;
};
}
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/manifest.xml
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/manifest.xml 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/manifest.xml 2008-08-19 21:52:35 UTC (rev 3273)
@@ -25,6 +25,7 @@
<depend package="hardware_interface" />
<depend package="mechanism_control" />
<depend package="wg_robot_description_parser" />
+<depend package="tinyxml" />
<export>
<cpp cflags="-I${prefix}/include" lflags="-Wl,-rpath,${prefix}/lib -L${prefix}/lib" />
</export>
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/gazebo_actuators.cpp
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/gazebo_actuators.cpp 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/gazebo_actuators.cpp 2008-08-19 21:52:35 UTC (rev 3273)
@@ -32,6 +32,7 @@
#include <iostream>
#include <math.h>
#include <unistd.h>
+#include <set>
#include <stl_utils/stl_utils.h>
#include <gazebo/Global.hh>
#include <gazebo/XMLConfig.hh>
@@ -42,18 +43,20 @@
#include <gazebo/gazebo.h>
#include <gazebo/GazeboError.hh>
#include <gazebo/ControllerFactory.hh>
+#include <urdf/parser.h>
namespace gazebo {
GZ_REGISTER_DYNAMIC_CONTROLLER("gazebo_actuators", GazeboActuators);
GazeboActuators::GazeboActuators(Entity *parent)
- : Controller(parent), hw_(0), mc_(&hw_), mcn_(&mc_)
+ : Controller(parent), hw_(0), mc_(&hw_), mcn_(&mc_), fake_model_("fake")
{
- this->parent_model_ = dynamic_cast<Model*>(this->parent);
+ fake_model_.hw_ = &hw_;
+ this->parent_model_ = dynamic_cast<Model*>(this->parent);
- if (!this->parent_model_)
- gzthrow("GazeboActuators controller requires a Model as its parent");
+ if (!this->parent_model_)
+ gzthrow("GazeboActuators controller requires a Model as its parent");
}
GazeboActuators::~GazeboActuators()
@@ -63,75 +66,71 @@
void GazeboActuators::LoadChild(XMLConfigNode *node)
{
- XMLConfigNode *xit; // XML iterator
-
- // Reads the joints out of Gazebo's config.
- std::map<std::string,int> joint_lookup;
- for (xit = node->GetChild("joint"); xit; xit = xit->GetNext("joint"))
+ XMLConfigNode *robot = node->GetChild("robot");
+ if (!robot)
{
- std::string joint_name = xit->GetString("name", "", 1);
- gazebo::Joint *joint = parent_model_->GetJoint(joint_name);
- assert(joint != NULL);
- joints_.push_back(joint);
- mech_joints_.push_back(new mechanism::Joint);
-
- joint_lookup.insert(std::pair<std::string,int>(joint_name, joints_.size()-1));
+ fprintf(stderr, "Error loading gazebo_actuators config: no robot element\n");
+ return;
}
- // Reads the transmission information from the config.
- for (xit = node->GetChild("transmission"); xit; xit = xit->GetNext("transmission"))
+ // TODO: should look for the file relative to the path of the world file.
+ std::string filename = robot->GetString("filename", "", 1);
+ printf("Loading %s\n", filename.c_str());
+
+ TiXmlDocument doc(filename);
+ doc.LoadFile();
+ assert(doc.RootElement());
+ urdf::normalizeXml(doc.RootElement());
+
+ // Pulls out the list of actuators used in the robot configuration.
+ struct GetActuators : public TiXmlVisitor
{
- if (0 == strcmp("SimpleTransmission", xit->GetString("type", "", 0).c_str()))
+ std::set<std::string> actuators;
+ virtual bool VisitEnter(const TiXmlElement &elt, const TiXmlAttribute *)
{
- // Looks up the joint by name
- XMLConfigNode *joint_node = xit->GetChild("joint");
- assert(joint_node != NULL);
- std::map<std::string,int>::iterator jit = joint_lookup.find(joint_node->GetString("name", "", 1));
- if (jit == joint_lookup.end())
- {
- // TODO: report: Could not find the joint named xxxx
- continue;
- }
+ if (elt.ValueStr() == std::string("actuator") && elt.Attribute("name"))
+ actuators.insert(elt.Attribute("name"));
+ return true;
+ }
+ } get_actuators;
+ doc.RootElement()->Accept(&get_actuators);
- // Creates the actuator
- XMLConfigNode *actuator_node = xit->GetChild("actuator");
- assert(actuator_node != NULL);
- Actuator *actuator = new Actuator;
- hw_.actuators_.push_back(actuator);
- actuator_names_.push_back(actuator_node->GetString("name", "", 1));
+ // Places the found actuators into the hardware interface.
+ std::set<std::string>::iterator it;
+ for (it = get_actuators.actuators.begin(); it != get_actuators.actuators.end(); ++it)
+ {
+ hw_.actuators_.push_back(new Actuator(*it));
+ }
- // Creates the transmission
- transmissions_.push_back(
- new mechanism::SimpleTransmission(mech_joints_[jit->second], actuator,
- xit->GetDouble("mechanicalReduction", 0.0, 1),
- xit->GetDouble("motorTorqueConstant", 0.0, 1),
- xit->GetDouble("pulsesPerRevolution", 0.0, 1)));
+ // Initializes the fake model (for running the transmissions backwards).
+ fake_model_.initXml(doc.RootElement());
- }
+ // The gazebo joints and mechanism joints should match up.
+ for (unsigned int i = 0; i < fake_model_.joints_.size(); ++i)
+ {
+ std::string joint_name = fake_model_.joints_[i]->name_;
+ gazebo::Joint *joint = parent_model_->GetJoint(joint_name);
+ if (joint)
+ joints_.push_back(joint);
else
{
- // TODO: report: Unknown transmission type
- continue;
+ fprintf(stderr, "Gazebo does not know about a joint named \"%s\"\n", joint_name.c_str());
+ joints_.push_back(NULL);
}
}
+
+ hw_.current_time_ = Simulator::Instance()->GetSimTime();
+ mcn_.initXml(doc.RootElement());
}
void GazeboActuators::InitChild()
{
- // Registers the actuators with MechanismControl
- assert(actuator_names_.size() == hw_.actuators_.size());
- for (unsigned int i = 0; i < actuator_names_.size(); ++i)
- mc_.registerActuator(actuator_names_[i], i);
-
-
- // TODO: mc.init();
-
hw_.current_time_ = Simulator::Instance()->GetSimTime();
}
void GazeboActuators::UpdateChild()
{
- assert(joints_.size() == mech_joints_.size());
+ assert(joints_.size() == fake_model_.joints_.size());
//--------------------------------------------------
// Pushes out simulation state
@@ -140,22 +139,23 @@
// Copies the state from the gazebo joints into the mechanism joints.
for (unsigned int i = 0; i < joints_.size(); ++i)
{
+ if (!joints_[i])
+ continue;
assert(joints_[i]->GetType() == Joint::HINGE);
HingeJoint *hj = (HingeJoint*)joints_[i];
- mech_joints_[i]->position_ = hj->GetAngle();
- mech_joints_[i]->velocity_ = hj->GetAngleRate();
- mech_joints_[i]->applied_effort_ = mech_joints_[i]->commanded_effort_;
+ fake_model_.joints_[i]->position_ = hj->GetAngle();
+ fake_model_.joints_[i]->velocity_ = hj->GetAngleRate();
+ fake_model_.joints_[i]->applied_effort_ = fake_model_.joints_[i]->commanded_effort_;
}
// Reverses the transmissions to propagate the joint position into the actuators.
- for (unsigned int i = 0; i < transmissions_.size(); ++i)
- transmissions_[i]->propagatePositionBackwards();
+ for (unsigned int i = 0; i < fake_model_.transmissions_.size(); ++i)
+ fake_model_.transmissions_[i]->propagatePositionBackwards();
//--------------------------------------------------
// Runs Mechanism Control
//--------------------------------------------------
hw_.current_time_ = Simulator::Instance()->GetSimTime();
- //mc_.update();
mcn_.update();
//--------------------------------------------------
@@ -163,15 +163,17 @@
//--------------------------------------------------
// Reverses the transmissions to propagate the actuator commands into the joints.
- for (unsigned int i = 0; i < transmissions_.size(); ++i)
- transmissions_[i]->propagateEffortBackwards();
+ for (unsigned int i = 0; i < fake_model_.transmissions_.size(); ++i)
+ fake_model_.transmissions_[i]->propagateEffortBackwards();
// Copies the commands from the mechanism joints into the gazebo joints.
for (unsigned int i = 0; i < joints_.size(); ++i)
{
+ if (!joints_[i])
+ continue;
assert(joints_[i]->GetType() == Joint::HINGE);
HingeJoint *hj = (HingeJoint*)joints_[i];
- hj->SetTorque(mech_joints_[i]->commanded_effort_);
+ hj->SetTorque(fake_model_.joints_[i]->commanded_effort_);
}
}
Modified: pkg/trunk/mechanism/hardware_interface/include/hardware_interface/hardware_interface.h
===================================================================
--- pkg/trunk/mechanism/hardware_interface/include/hardware_interface/hardware_interface.h 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/hardware_interface/include/hardware_interface/hardware_interface.h 2008-08-19 21:52:35 UTC (rev 3273)
@@ -35,6 +35,8 @@
#ifndef HARDWARE_INTERFACE_H
#define HARDWARE_INTERFACE_H
+#include <string>
+#include <vector>
#include <stl_utils/stl_utils.h>
class ActuatorState{
@@ -81,6 +83,11 @@
class Actuator
{
public:
+ Actuator() {}
+ Actuator(const std::string &name) : name_(name) {}
+ ~Actuator() {}
+
+ std::string name_;
ActuatorState state_;
ActuatorCommand command_;
};
Modified: pkg/trunk/mechanism/mechanism_control/include/mechanism_control/mechanism_control.h
===================================================================
--- pkg/trunk/mechanism/mechanism_control/include/mechanism_control/mechanism_control.h 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_control/include/mechanism_control/mechanism_control.h 2008-08-19 21:52:35 UTC (rev 3273)
@@ -70,7 +70,6 @@
// Non real-time functions
bool initXml(TiXmlElement* config);
- bool registerActuator(const std::string &name, int index);
void getControllerNames(std::vector<std::string> &v);
bool addController(controller::Controller *c, const std::string &name);
bool spawnController(const std::string &type, const std::string &name, TiXmlElement *config);
@@ -78,7 +77,7 @@
bool addJoint(mechanism::Joint* j);
bool addSimpleTransmission(mechanism::SimpleTransmission *st);
controller::Controller* getControllerByName(std::string name);
-
+
mechanism::Robot model_;
HardwareInterface *hw_;
@@ -127,19 +126,19 @@
mechanism_control::KillController::response &resp);
MechanismControl *mc_;
-
+
// Non-realtime thread for publishing state information.
pthread_t *state_publishing_thread_;
void statePublishingLoop(void);
bool state_publishing_loop_keep_running_;
static const double STATE_PUBLISHING_PERIOD = 0.1; // in seconds, higher rates are useless with the current speed of the simulator
-
+
// Structure for transfering the mechanism state between realtime and non-realtime.
pthread_mutex_t mechanism_state_lock_;
// Blocks the ros publishing loop until an update is received from HW loop.
bool mechanism_state_updated_;
- pthread_cond_t mechanism_state_updated_cond_;
+ pthread_cond_t mechanism_state_updated_cond_;
mechanism_control::MechanismState mechanism_state_;
void publishMechanismState(); // Not realtime safe
const char * const mechanism_state_topic_;
Modified: pkg/trunk/mechanism/mechanism_control/src/mechanism_control.cpp
===================================================================
--- pkg/trunk/mechanism/mechanism_control/src/mechanism_control.cpp 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_control/src/mechanism_control.cpp 2008-08-19 21:52:35 UTC (rev 3273)
@@ -43,57 +43,20 @@
{
}
-bool MechanismControl::registerActuator(const std::string &name, int index)
-{
- if (initialized_)
- return false;
-
- model_.actuators_lookup_.insert(Robot::IndexMap::value_type(name, index));
-
- return true;
-}
-
bool MechanismControl::initXml(TiXmlElement* config)
{
- bool successful = true;
ros::node *node = ros::node::instance();
- TiXmlElement *elt;
+ model_.initXml(config);
- // Construct the joints
- for (elt = config->FirstChildElement("joint"); elt; elt = elt->NextSiblingElement("joint"))
- {
- Joint *j = new Joint;
- model_.joints_.push_back(j);
- model_.joints_lookup_.insert(Robot::IndexMap::value_type(elt->Attribute("name"), model_.joints_.size() - 1));
- j->initXml(elt);
- }
-
- // Construct the transmissions
- elt = config->FirstChildElement("transmission");
- for (; elt; elt = elt->NextSiblingElement("transmission"))
- {
- const char *type = elt->Attribute("type");
- Transmission *t = TransmissionFactory::instance().create(type);
- if (t == NULL)
- node->log(ros::FATAL, "Unknown transmission type: %s\n", type);
- t->initXml(elt, &model_);
- model_.transmissions_.push_back(t);
- }
-
initialized_ = true;
- return successful;
+ return true;
}
bool MechanismControl::addJoint(Joint* j)
{
- bool successful = true;
-
- // add the joints
model_.joints_.push_back(j);
- model_.joints_lookup_.insert(Robot::IndexMap::value_type(j->name_, model_.joints_.size() - 1));
-
- return successful;
+ return true;
}
bool MechanismControl::addSimpleTransmission(SimpleTransmission *st)
@@ -130,11 +93,11 @@
// Propagates through the robot model.
for (unsigned int i = 0; i < model_.transmissions_.size(); ++i)
model_.transmissions_[i]->propagatePosition();
-
+
//zero all commands
for (unsigned int i = 0; i < model_.joints_.size(); ++i)
model_.joints_[i]->commanded_effort_= 0.0;
-
+
// TODO: update KDL model with new joint position/velocities
// Update all controllers
@@ -185,7 +148,7 @@
{
//Add controller to list of controllers in realtime-safe manner;
controllers_lock_.lock(); //This lock is only to prevent us from other non-realtime threads. The realtime thread may be spinning through the list of controllers while we are in here, so we need to keep that list always in a valid state. This is why we fully allocate and set up the controller before adding it into the list of active controllers.
-
+
bool spot_found = false;
for (int i = 0; i < MAX_NUM_CONTROLLERS; i++)
{
@@ -261,6 +224,9 @@
assert(mc != NULL);
assert(mechanism_state_topic_);
if ((node = ros::node::instance()) == NULL) {
+ int argc = 0;
+ char** argv = NULL;
+ ros::init(argc, argv);
node = new ros::node("mechanism_control", ros::node::DONT_HANDLE_SIGINT);
}
@@ -282,7 +248,7 @@
}
MechanismControlNode::~MechanismControlNode()
-{
+{
state_publishing_loop_keep_running_ = false;
}
@@ -297,7 +263,7 @@
void MechanismControlNode::update()
{
mc_->update();
-
+
// Attempts to lock the transfer structure
// If we get it, update it
if(pthread_mutex_trylock(&mechanism_state_lock_))
Modified: pkg/trunk/mechanism/mechanism_model/CMakeLists.txt
===================================================================
--- pkg/trunk/mechanism/mechanism_model/CMakeLists.txt 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_model/CMakeLists.txt 2008-08-19 21:52:35 UTC (rev 3273)
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.6)
include(rosbuild)
rospack(mechanism_model)
-rospack_add_library(mechanism_model src/simple_transmission.cpp src/joint.cpp)
+rospack_add_library(mechanism_model src/simple_transmission.cpp src/joint.cpp src/robot.cpp)
Modified: pkg/trunk/mechanism/mechanism_model/include/mechanism_model/joint.h
===================================================================
--- pkg/trunk/mechanism/mechanism_model/include/mechanism_model/joint.h 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_model/include/mechanism_model/joint.h 2008-08-19 21:52:35 UTC (rev 3273)
@@ -31,6 +31,9 @@
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/*
+ *
+ */
#ifndef JOINT_H
#define JOINT_H
@@ -40,8 +43,11 @@
class Joint{
public:
+ Joint() : commanded_effort_(0) {}
+ ~Joint() {}
+
void enforceLimits();
- void initXml(TiXmlElement *elt);
+ bool initXml(TiXmlElement *elt);
std::string name_;
int type_;
Modified: pkg/trunk/mechanism/mechanism_model/include/mechanism_model/robot.h
===================================================================
--- pkg/trunk/mechanism/mechanism_model/include/mechanism_model/robot.h 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_model/include/mechanism_model/robot.h 2008-08-19 21:52:35 UTC (rev 3273)
@@ -45,13 +45,15 @@
#include "mechanism_model/transmission.h"
#include "hardware_interface/hardware_interface.h"
+class TiXmlElement;
+
namespace mechanism
{
class Robot
{
public:
- Robot(char *ns){}
+ Robot(const char *ns){}
~Robot()
{
@@ -59,28 +61,13 @@
deleteElements(&joints_);
}
+ bool initXml(TiXmlElement *root);
+
std::vector<Joint*> joints_;
std::vector<Transmission*> transmissions_;
- // Supports looking up joints and actuators by name. The IndexMap
- // structure maps the name of the item to its index in the vectors.
- typedef std::map<std::string,int> IndexMap;
- IndexMap joints_lookup_;
- IndexMap actuators_lookup_;
- Joint* getJoint(const std::string &name)
- {
- IndexMap::iterator it = joints_lookup_.find(name);
- if (it == joints_lookup_.end())
- return NULL;
- return joints_[it->second];
- }
- Actuator* getActuator(const std::string &name)
- {
- IndexMap::iterator it = actuators_lookup_.find(name);
- if (it == actuators_lookup_.end())
- return NULL;
- return hw_->actuators_[it->second];
- }
+ Joint* getJoint(const std::string &name);
+ Actuator* getActuator(const std::string &name);
HardwareInterface *hw_;
};
Modified: pkg/trunk/mechanism/mechanism_model/include/mechanism_model/transmission.h
===================================================================
--- pkg/trunk/mechanism/mechanism_model/include/mechanism_model/transmission.h 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_model/include/mechanism_model/transmission.h 2008-08-19 21:52:35 UTC (rev 3273)
@@ -61,7 +61,7 @@
virtual ~Transmission() {}
// Initialize transmission from XML data
- virtual void initXml(TiXmlElement *config, Robot *robot) = 0;
+ virtual bool initXml(TiXmlElement *config, Robot *robot) = 0;
// another way to initialize simple transmission
virtual void initTransmission(std::string transmission_name,std::string joint_name,std::string actuator_name,double mechanical_reduction,double motor_torque_constant,double pulses_per_revolution, Robot *robot) = 0;
@@ -88,7 +88,7 @@
SimpleTransmission(Joint *joint, Actuator *actuator, double mechanical_reduction, double motor_torque_constant, double pulses_per_revolution);
~SimpleTransmission() {}
- void initXml(TiXmlElement *config, Robot *robot);
+ bool initXml(TiXmlElement *config, Robot *robot);
void initTransmission(std::string transmission_name,std::string joint_name,std::string actuator_name,double mechanical_reduction,double motor_torque_constant,double pulses_per_revolution, Robot *robot);
std::string name_;
Modified: pkg/trunk/mechanism/mechanism_model/src/joint.cpp
===================================================================
--- pkg/trunk/mechanism/mechanism_model/src/joint.cpp 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_model/src/joint.cpp 2008-08-19 21:52:35 UTC (rev 3273)
@@ -32,9 +32,10 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+#include <mechanism_model/joint.h>
#include <map>
#include <string>
-#include <mechanism_model/joint.h>
+#include <cfloat>
using namespace std;
using namespace mechanism;
@@ -54,20 +55,48 @@
commanded_effort_ = min(max(commanded_effort_, -effort_limit_), effort_limit_);
}
-void Joint::initXml(TiXmlElement *elt)
+bool Joint::initXml(TiXmlElement *elt)
{
- TiXmlElement *min = elt->FirstChildElement("limitMin");
- TiXmlElement *max = elt->FirstChildElement("limitMax");
- joint_limit_min_ = min ? atof(min->GetText()) : 0;
- joint_limit_max_ = max ? atof(max->GetText()) : 0;
- effort_limit_ = atof(elt->FirstChildElement("effortLimit")->GetText());
- velocity_limit_ = atof(elt->FirstChildElement("velocityLimit")->GetText());
+ const char *name = elt->Attribute("name");
+ if (!name)
+ {
+ fprintf(stderr, "Error: unnamed joint found\n");
+ return false;
+ }
+ name_ = name;
- type_ = g_type_map[elt->Attribute("type")];
- // If type is revolute and limits aren't set, then it is continuous
- if (type_ == JOINT_ROTARY && min == NULL && max == NULL)
+ const char *type = elt->Attribute("type");
+ if (!type)
{
- type_ = JOINT_CONTINUOUS;
+ fprintf(stderr, "Error: Joint \"%s\" has no type.\n", name_.c_str());
+ return false;
}
+ type_ = g_type_map[type];
+
+ TiXmlElement *limits = elt->FirstChildElement("limit");
+ if (limits)
+ {
+ if (limits->QueryDoubleAttribute("effort", &effort_limit_) != TIXML_SUCCESS)
+ effort_limit_ = 0.0;
+ if (limits->QueryDoubleAttribute("velocity", &velocity_limit_) != TIXML_SUCCESS)
+ velocity_limit_ = 0.0;
+
+
+ int min_ret = limits->QueryDoubleAttribute("min", &joint_limit_min_);
+ int max_ret = limits->QueryDoubleAttribute("max", &joint_limit_max_);
+
+ if (type_ == JOINT_ROTARY && min_ret == TIXML_NO_ATTRIBUTE && max_ret == TIXML_NO_ATTRIBUTE)
+ {
+ type_ = JOINT_CONTINUOUS;
+ }
+ }
+ else
+ {
+ if (type_ == JOINT_ROTARY)
+ type_ = JOINT_CONTINUOUS;
+ effort_limit_ = DBL_MAX;
+ }
+
+ return true;
}
Modified: pkg/trunk/mechanism/mechanism_model/src/simple_transmission.cpp
===================================================================
--- pkg/trunk/mechanism/mechanism_model/src/simple_transmission.cpp 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/mechanism/mechanism_model/src/simple_transmission.cpp 2008-08-19 21:52:35 UTC (rev 3273)
@@ -50,13 +50,30 @@
joint_ = joint;
}
-void SimpleTransmission::initXml(TiXmlElement *elt, Robot *robot)
+bool SimpleTransmission::initXml(TiXmlElement *elt, Robot *robot)
{
- joint_ = robot->getJoint(elt->FirstChildElement("joint")->Attribute("name"));
- actuator_ = robot->getActuator(elt->FirstChildElement("actuator")->Attribute("name"));
+ TiXmlElement *jel = elt->FirstChildElement("joint");
+ const char *joint_name = jel ? jel->Attribute("name") : NULL;
+ joint_ = joint_name ? robot->getJoint(joint_name) : NULL;
+ if (!joint_)
+ {
+ fprintf(stderr, "SimpleTransmission could not find joint named \"%s\"\n", joint_name);
+ return false;
+ }
+
+ TiXmlElement *ael = elt->FirstChildElement("actuator");
+ const char *actuator_name = ael ? ael->Attribute("name") : NULL;
+ actuator_ = actuator_name ? robot->getActuator(actuator_name) : NULL;
+ if (!actuator_)
+ {
+ fprintf(stderr, "SimpleTransmission could not find actuator named \"%s\"\n", actuator_name);
+ return false;
+ }
+
mechanical_reduction_ = atof(elt->FirstChildElement("mechanicalReduction")->GetText()),
motor_torque_constant_ = atof(elt->FirstChildElement("motorTorqueConstant")->GetText()),
pulses_per_revolution_ = atof(elt->FirstChildElement("pulsesPerRevolution")->GetText());
+ return true;
}
void SimpleTransmission::initTransmission(std::string transmission_name,std::string joint_name,std::string actuator_name,double mechanical_reduction,double motor_torque_constant,double pulses_per_revolution, Robot *robot)
@@ -73,14 +90,16 @@
void SimpleTransmission::propagatePosition()
{
+ assert(joint_); assert(actuator_);
joint_->position_ = ((double)actuator_->state_.encoder_count_*2*M_PI)/(pulses_per_revolution_ * mechanical_reduction_);
joint_->velocity_ = ((double)actuator_->state_.encoder_velocity_*2*M_PI)/(pulses_per_revolution_ * mechanical_reduction_);
joint_->applied_effort_ = actuator_->state_.last_measured_current_ * (motor_torque_constant_ * mechanical_reduction_);
-
+
}
void SimpleTransmission::propagatePositionBackwards()
{
+ assert(joint_); assert(actuator_);
actuator_->state_.encoder_count_ = (int)(joint_->position_ * pulses_per_revolution_ * mechanical_reduction_ / (2*M_PI));
actuator_->state_.encoder_velocity_ = joint_->velocity_ * pulses_per_revolution_ * mechanical_reduction_ / (2*M_PI);
actuator_->state_.last_measured_current_ = joint_->applied_effort_ / (motor_torque_constant_ * mechanical_reduction_);
@@ -88,13 +107,14 @@
void SimpleTransmission::propagateEffort()
{
+ assert(joint_); assert(actuator_);
actuator_->command_.current_ = joint_->commanded_effort_/(motor_torque_constant_ * mechanical_reduction_);
actuator_->command_.enable_ = true;
-
+
}
void SimpleTransmission::propagateEffortBackwards()
{
+ assert(joint_); assert(actuator_);
joint_->commanded_effort_ = actuator_->command_.current_ * motor_torque_constant_ * mechanical_reduction_;
-
}
Modified: pkg/trunk/robot_descriptions/wg_robot_description_parser/CMakeLists.txt
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description_parser/CMakeLists.txt 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/robot_descriptions/wg_robot_description_parser/CMakeLists.txt 2008-08-19 21:52:35 UTC (rev 3273)
@@ -4,7 +4,7 @@
set(ROS_COMPILE_FLAGS "-W -Wall -Wextra")
-rospack_add_library(URDF src/urdf/URDF.cpp)
+rospack_add_library(URDF src/urdf/URDF.cpp src/parser.cpp)
rospack_add_executable(parse src/urdf/parse.cpp)
target_link_libraries(parse URDF)
rospack_add_executable(merge src/urdf/merge.cpp)
Modified: pkg/trunk/robot_descriptions/wg_robot_description_parser/manifest.xml
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description_parser/manifest.xml 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/robot_descriptions/wg_robot_description_parser/manifest.xml 2008-08-19 21:52:35 UTC (rev 3273)
@@ -12,10 +12,11 @@
<depend package="tinyxml"/>
<depend package="math_utils"/>
<depend package="string_utils"/>
+ <depend package="stl_utils" />
<depend package="gtest"/>
-
+
<export>
<cpp cflags="-I${prefix}/include" lflags="-Wl,-rpath,${prefix}/lib -L${prefix}/lib -lURDF"/>
</export>
-
+
</package>
Modified: pkg/trunk/robot_descriptions/wg_robot_description_parser/test/test_cpp_parser.cpp
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description_parser/test/test_cpp_parser.cpp 2008-08-19 21:40:21 UTC (rev 3272)
+++ pkg/trunk/robot_descriptions/wg_robot_description_parser/test/test_cpp_parser.cpp 2008-08-19 21:52:35 UTC (rev 3273)
@@ -1,13 +1,13 @@
/*********************************************************************
* Software License Agreement (BSD License)
- *
+ *
* Copyright (c) 2008, Willow Garage, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modific...
[truncated message content] |
|
From: <egi...@us...> - 2008-08-19 22:52:11
|
Revision: 3280
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3280&view=rev
Author: egiljones
Date: 2008-08-19 22:52:19 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
Adding costmap 2d srv and msg messages
Added Paths:
-----------
pkg/trunk/pr2_msgs/msg/OccDiff.msg
pkg/trunk/pr2_srvs/srv/TransientObstacles.srv
Added: pkg/trunk/pr2_msgs/msg/OccDiff.msg
===================================================================
--- pkg/trunk/pr2_msgs/msg/OccDiff.msg (rev 0)
+++ pkg/trunk/pr2_msgs/msg/OccDiff.msg 2008-08-19 22:52:19 UTC (rev 3280)
@@ -0,0 +1,3 @@
+Header header
+std_msgs/Point2DFloat32[] occ_points
+std_msgs/Point2DFloat32[] unocc_points
Added: pkg/trunk/pr2_srvs/srv/TransientObstacles.srv
===================================================================
--- pkg/trunk/pr2_srvs/srv/TransientObstacles.srv (rev 0)
+++ pkg/trunk/pr2_srvs/srv/TransientObstacles.srv 2008-08-19 22:52:19 UTC (rev 3280)
@@ -0,0 +1,3 @@
+---
+time stamp
+std_msgs/Polyline2D obs
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hsu...@us...> - 2008-08-20 17:29:43
|
Revision: 3323
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3323&view=rev
Author: hsujohnhsu
Date: 2008-08-20 17:29:51 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
base controller testing.
Modified Paths:
--------------
pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp
pkg/trunk/drivers/simulator/gazebo_plugin/CMakeLists.txt
Modified: pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp
===================================================================
--- pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp 2008-08-20 17:23:02 UTC (rev 3322)
+++ pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp 2008-08-20 17:29:51 UTC (rev 3323)
@@ -84,11 +84,16 @@
robot_desc::URDF::Link *link;
std::string joint_name;
+
+
+
+
// ros::g_node->advertise<std_msgs::RobotBase2DOdom>("odom");
std::string xml_content;
(ros::g_node)->get_param("robotdesc/pr2",xml_content);
- if(!urdf_model_.loadString(xml_content.c_str()))
- return;
+ assert(urdf_model_.loadString(xml_content.c_str()));
+ //if(!urdf_model_.loadString(xml_content.c_str()))
+ // return;
for(jcp_iter = jcp.begin(); jcp_iter != jcp.end(); jcp_iter++)
{
@@ -108,12 +113,17 @@
{
base_object.local_id_ = num_casters_;
base_casters_.push_back(base_object);
+ steer_angle_actual_.push_back(0);
+ steer_velocity_desired_.push_back(0);
num_casters_++;
}
if(joint_name.find("wheel") != string::npos)
{
base_object.local_id_ = num_wheels_;
base_wheels_.push_back(base_object);
+ wheel_speed_actual_.push_back(0);
+ libTF::Pose3D::Vector *v=new libTF::Pose3D::Vector();
+ base_wheels_position_.push_back(*v);
num_wheels_++;
}
}
@@ -131,13 +141,16 @@
}
}
}
+ std::cout << " assigning robot_ " << std::endl;
robot_ = robot;
}
void BaseController::initXml(mechanism::Robot *robot, TiXmlElement *config)
{
+ std::cout << " base controller initxml " << std::endl << *config << std::endl;
TiXmlElement *elt = config->FirstChildElement("controller");
+ std::cout << " child " << std::endl << *elt << std::endl;
std::vector<JointControlParam> jcp_vec;
JointControlParam jcp;
while (elt){
@@ -152,8 +165,15 @@
jcp.joint_name = jnt->Attribute("name");
jcp_vec.push_back(jcp);
- elt = config->NextSiblingElement("controller");
+ std::cout << "name:" << jcp.joint_name << std::endl;
+ std::cout << "controller type:" << jcp.control_type << std::endl;
+ std::cout << std::endl << *elt << std::endl;
+ std::cout << " sub controller : " << elt->Attribute("name") << std::endl;
+
+ elt = elt->NextSiblingElement("controller");
+
}
+
elt = config->FirstChildElement("map");
while(elt)
{
@@ -171,6 +191,7 @@
}
}
elt = config->NextSiblingElement("map");
+ std::cout << " sub map : " << elt->Attribute("name") << std::endl;
}
init(jcp_vec,robot);
}
@@ -182,6 +203,11 @@
for(int i=0; i < num_wheels_; i++)
wheel_speed_actual_[i] = base_wheels_[i].controller_.getMeasuredVelocity();
+
+ for(int i=0; i < num_casters_; i++)
+ std::cout << " caster angles " << i << " : " << steer_angle_actual_[i] << std::endl;
+ for(int i=0; i < num_wheels_; i++)
+ std::cout << " wheel rates " << i << " : " << wheel_speed_actual_[i] << std::endl;
}
void BaseController::computeWheelPositions()
@@ -222,7 +248,7 @@
if(odom_publish_counter_ > odom_publish_count_)
{
- (ros::g_node)->publish("odom", odom_msg_);
+ //(ros::g_node)->publish("odom", odom_msg_);
odom_publish_counter_ = 0;
}
@@ -246,12 +272,14 @@
{
libTF::Pose3D::Vector result;
double steer_angle_desired;
+ kp_speed_ = 1.0;
for(int i=0; i < num_casters_; i++)
{
result = computePointVelocity2D(base_casters_[i].pos_, cmd_vel_);
steer_angle_desired = atan2(result.y,result.x);
steer_angle_desired = ModNPiBy2(steer_angle_desired);//Clean steer Angle
steer_velocity_desired_[i] = kp_speed_*steer_angle_desired;
+ std::cout << "setting steering velocity??? " << i << " : " << steer_velocity_desired_[i] << " kp: " << kp_speed_ << std::endl;
base_casters_[i].controller_.setCommand(steer_velocity_desired_[i]);
}
}
@@ -263,6 +291,9 @@
libTF::Pose3D::Vector wheel_caster_steer_component;
libTF::Pose3D::Vector caster_2d_velocity;
+ //---------------------------------------------------------------------FIXME:
+ wheel_radius_ = 0.079;
+
caster_2d_velocity.x = 0;
caster_2d_velocity.y = 0;
caster_2d_velocity.z = 0;
@@ -278,6 +309,7 @@
// wheel_point_velocity_projected = rotate2D(wheel_point_velocity,-steer_angle_actual);
wheel_point_velocity_projected = wheel_point_velocity.rot2D(-steer_angle_actual);
wheel_speed_cmd = (wheel_point_velocity_projected.x + wheel_caster_steer_component.x)/wheel_radius_;
+ std::cout << "setting wheel speed " << i << " : " << wheel_speed_cmd << " r:" << wheel_radius_ << std::endl;
base_wheels_[i].controller_.setCommand(wheel_speed_cmd);
}
}
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/CMakeLists.txt
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/CMakeLists.txt 2008-08-20 17:23:02 UTC (rev 3322)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/CMakeLists.txt 2008-08-20 17:29:51 UTC (rev 3323)
@@ -9,7 +9,7 @@
rospack_add_library(Ros_Node src/Ros_Node.cc)
rospack_add_library(P3D src/P3D.cc)
rospack_add_library(gazebo_actuators src/gazebo_actuators.cpp)
-#rospack_add_library(test_actuators src/test_actuators.cpp)
+rospack_add_library(test_actuators src/test_actuators.cpp)
# This target requires adding player to the manifest.xml.
#rospack_add_executable(player_pr2 src/player/Pr2_Player.cc)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <is...@us...> - 2008-08-20 20:29:41
|
Revision: 3346
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3346&view=rev
Author: isucan
Date: 2008-08-20 20:29:42 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
fixed some issues with the kinematic model construction (I interpreted some input incorrectly and multiplied a transform in incorrect order), added a collision space with octrees (incomplete, not yet tested), fixed some issues with motion planning (mostly organizing things better), some improved documentation
Modified Paths:
--------------
pkg/trunk/motion_planning/collision_space/CMakeLists.txt
pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h
pkg/trunk/motion_planning/collision_space/include/collision_space/util.h
pkg/trunk/motion_planning/collision_space/manifest.xml
pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp
pkg/trunk/motion_planning/collision_space/test/test_util.cpp
pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp
pkg/trunk/motion_planning/planning_models/include/planning_models/kinematic.h
pkg/trunk/motion_planning/planning_models/src/planning_models/kinematic.cpp
pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/cnode.h
pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp
pkg/trunk/motion_planning/test_collision_space/src/test_kinematic_ode.cpp
pkg/trunk/world_models/world_3d_map/src/world_3d_map.cpp
Added Paths:
-----------
pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h
pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp
Modified: pkg/trunk/motion_planning/collision_space/CMakeLists.txt
===================================================================
--- pkg/trunk/motion_planning/collision_space/CMakeLists.txt 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/collision_space/CMakeLists.txt 2008-08-20 20:29:42 UTC (rev 3346)
@@ -1,7 +1,9 @@
cmake_minimum_required(VERSION 2.6)
include(rosbuild)
rospack(collision_space)
-rospack_add_library(collision_space src/collision_space/environment.cpp src/collision_space/environmentODE.cpp)
+rospack_add_library(collision_space src/collision_space/environment.cpp
+# src/collision_space/environmentOctree.cpp
+ src/collision_space/environmentODE.cpp)
# Unit tests
rospack_add_gtest(test_util test/test_util.cpp)
Modified: pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h
===================================================================
--- pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h 2008-08-20 20:29:42 UTC (rev 3346)
@@ -163,7 +163,8 @@
dSpaceID s;
};
- void freeMemory(void);
+ dGeomID createODEGeom(dSpaceID space, planning_models::KinematicModel::Shape *shape) const;
+ void freeMemory(void);
std::vector<ModelInfo> m_kgeoms;
dSpaceID m_space;
Added: pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h
===================================================================
--- pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h (rev 0)
+++ pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h 2008-08-20 20:29:42 UTC (rev 3346)
@@ -0,0 +1,91 @@
+/*********************************************************************
+* Software License Agreement (BSD License)
+*
+* Copyright (c) 2008, Willow Garage, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of the Willow Garage nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*********************************************************************/
+
+#ifndef COLLISION_SPACE_ENVIRONMENT_MODEL_OCTREE_
+#define COLLISION_SPACE_ENVIRONMENT_MODEL_OCTREE_
+
+#include <collision_space/environment.h>
+#include <octree.h>
+#include <vector>
+
+/** @htmlinclude ../../manifest.html
+
+ A class describing an environment for a kinematic robot using ODE */
+
+namespace collision_space
+{
+
+ static const char OCTREE_CELL_EMPTY = 0;
+ static const char OCTREE_CELL_OCCUPIED = 1;
+
+ class EnvironmentModelOctree : public EnvironmentModel
+ {
+ public:
+
+ EnvironmentModelOctree(void) : EnvironmentModel(),
+ m_octree(0.0f, 0.0f, 0.0f, 80.0f, 80.0f, 80.0f, 12, OCTREE_CELL_EMPTY)
+ {
+ }
+
+ ~EnvironmentModelOctree(void)
+ {
+ }
+
+
+ /** Check if a model is in collision */
+ virtual bool isCollision(unsigned int model_id);
+
+ /** Remove all obstacles from collision model */
+ virtual void clearObstacles(void);
+
+ /** Add a point cloud to the collision space */
+ virtual void addPointCloud(unsigned int n, const double *points, double radius = 0.01);
+
+ /** Add a robot model */
+ virtual unsigned int addRobotModel(planning_models::KinematicModel *model);
+
+ /** Update the positions of the geometry used in collision detection */
+ virtual void updateRobotModel(unsigned int model_id);
+
+ const scan_utils::Octree<char>* getOctree(void) const;
+
+ protected:
+
+ scan_utils::Octree<char> m_octree;
+ std::vector<std::vector< planning_models::KinematicModel::Link*> > m_modelLinks;
+
+ };
+}
+
+#endif
Modified: pkg/trunk/motion_planning/collision_space/include/collision_space/util.h
===================================================================
--- pkg/trunk/motion_planning/collision_space/include/collision_space/util.h 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/collision_space/include/collision_space/util.h 2008-08-20 20:29:42 UTC (rev 3346)
@@ -44,15 +44,15 @@
namespace bodies
{
- class Object
+ class Shape
{
public:
- Object(void)
+ Shape(void)
{
m_scale = 1.0;
}
- virtual ~Object(void)
+ virtual ~Shape(void)
{
}
@@ -92,10 +92,10 @@
};
- class Sphere : public Object
+ class Sphere : public Shape
{
public:
- Sphere(void) : Object()
+ Sphere(void) : Shape()
{
m_radius = 0.0;
}
@@ -132,10 +132,10 @@
};
- class Cylinder : public Object
+ class Cylinder : public Shape
{
public:
- Cylinder(void) : Object()
+ Cylinder(void) : Shape()
{
m_length = m_radius = 0.0;
}
@@ -198,10 +198,10 @@
};
- class Box : public Object
+ class Box : public Shape
{
public:
- Box(void) : Object()
+ Box(void) : Shape()
{
m_length = m_width = m_height = 0.0;
}
Modified: pkg/trunk/motion_planning/collision_space/manifest.xml
===================================================================
--- pkg/trunk/motion_planning/collision_space/manifest.xml 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/collision_space/manifest.xml 2008-08-20 20:29:42 UTC (rev 3346)
@@ -8,6 +8,7 @@
<depend package="rosthread"/>
<depend package="planning_models"/>
+ <depend package="scan_utils"/>
<depend package="opende"/>
<depend package="gtest"/>
Modified: pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp
===================================================================
--- pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -63,22 +63,7 @@
{
kGeom *kg = new kGeom();
kg->link = robot->links[i];
- planning_models::KinematicModel::Geometry *geom = robot->links[i]->geom;
- dGeomID g = NULL;
- switch (geom->type)
- {
- case planning_models::KinematicModel::Geometry::SPHERE:
- g = dCreateSphere(m_kgeoms[id].s, geom->size[0]);
- break;
- case planning_models::KinematicModel::Geometry::BOX:
- g = dCreateBox(m_kgeoms[id].s, geom->size[0], geom->size[1], geom->size[2]);
- break;
- case planning_models::KinematicModel::Geometry::CYLINDER:
- g = dCreateCylinder(m_kgeoms[id].s, geom->size[0], geom->size[1]);
- break;
- default:
- break;
- }
+ dGeomID g = createODEGeom(m_kgeoms[id].s, robot->links[i]->shape);
if (g)
{
kg->geom = g;
@@ -91,6 +76,34 @@
return id;
}
+dGeomID collision_space::EnvironmentModelODE::createODEGeom(dSpaceID space, planning_models::KinematicModel::Shape *shape) const
+{
+ dGeomID g = NULL;
+ switch (shape->type)
+ {
+ case planning_models::KinematicModel::Shape::SPHERE:
+ {
+ g = dCreateSphere(space, static_cast<planning_models::KinematicModel::Sphere*>(shape)->radius);
+ }
+ break;
+ case planning_models::KinematicModel::Shape::BOX:
+ {
+ const double *size = static_cast<planning_models::KinematicModel::Box*>(shape)->size;
+ g = dCreateBox(space, size[0], size[1], size[2]);
+ }
+ break;
+ case planning_models::KinematicModel::Shape::CYLINDER:
+ {
+ g = dCreateCylinder(space, static_cast<planning_models::KinematicModel::Cylinder*>(shape)->radius,
+ static_cast<planning_models::KinematicModel::Cylinder*>(shape)->length);
+ }
+ break;
+ default:
+ break;
+ }
+ return g;
+}
+
void collision_space::EnvironmentModelODE::updateRobotModel(unsigned int model_id)
{
const unsigned int n = m_kgeoms[model_id].g.size();
Added: pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp
===================================================================
--- pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp (rev 0)
+++ pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -0,0 +1,134 @@
+/*********************************************************************
+* Software License Agreement (BSD License)
+*
+* Copyright (c) 2008, Willow Garage, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of the Willow Garage nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*********************************************************************/
+
+#include <collision_space/environmentOctree.h>
+
+unsigned int collision_space::EnvironmentModelOctree::addRobotModel(planning_models::KinematicModel *model)
+{
+ unsigned int id = collision_space::EnvironmentModel::addRobotModel(model);
+ if (id <= m_modelLinks.size())
+ m_modelLinks.resize(id + 1);
+ m_models[id]->getLinks(m_modelLinks[id]);
+ return id;
+}
+
+void collision_space::EnvironmentModelOctree::updateRobotModel(unsigned int model_id)
+{
+}
+
+bool collision_space::EnvironmentModelOctree::isCollision(unsigned int model_id)
+{
+ bool result = false;
+
+ const std::vector<planning_models::KinematicModel::Link*> &links = m_modelLinks[model_id];
+
+ for (unsigned int i = 0 ; !result && i < links.size() ; ++i)
+ {
+ switch (links[i]->geom->type)
+ {
+ case planning_models::KinematicModel::Geometry::BOX:
+ {
+ NEWMAT::Matrix mat = links[i]->globalTrans.asMatrix();
+ float axes[3][3];
+
+ for (unsigned int j=0; j<3; j++)
+ for (unsigned int k=0; k<3; k++)
+ axes[j][k] = mat.element(j,k);
+
+ libTF::Pose3D::Position libTFpos;
+ links[i]->globalTrans.getPosition(libTFpos);
+ float pos[3] = {libTFpos.x, libTFpos.y, libTFpos.z };
+ const double *size = links[i]->geom->size;
+ const float sizef[3] = {size[0], size[1], size[2]};
+
+ result = m_octree.intersectsBox(pos, sizef, axes);
+ }
+
+ break;
+
+ case planning_models::KinematicModel::Geometry::CYLINDER:
+ {
+ NEWMAT::Matrix mat = links[i]->globalTrans.asMatrix();
+ float axes[3][3];
+
+ for (unsigned int j=0; j<3; j++)
+ for (unsigned int k=0; k<3; k++)
+ axes[j][k] = mat.element(j,k);
+
+ libTF::Pose3D::Position libTFpos;
+ links[i]->globalTrans.getPosition(libTFpos);
+ float pos[3] = {libTFpos.x, libTFpos.y, libTFpos.z };
+ const double *size = links[i]->geom->size;
+ const float L = size[1]*sqrt(2);
+ const float sizef[3] = {size[0], L, L};
+
+ result = m_octree.intersectsBox(pos, sizef, axes);
+ }
+ break;
+
+ case planning_models::KinematicModel::Geometry::SPHERE:
+ {
+ libTF::Pose3D::Position libTFpos;
+ links[i]->globalTrans.getPosition(libTFpos);
+ float pos[3] = {libTFpos.x, libTFpos.y, libTFpos.z };
+ result = m_octree.intersectsSphere(pos, links[i]->geom->size[0]);
+ }
+ break;
+ default:
+ fprintf(stderr, "Geometry type not implemented: %d\n", links[i]->geom->type);
+ break;
+ }
+ }
+
+ return result;
+}
+
+void collision_space::EnvironmentModelOctree::addPointCloud(unsigned int n, const double *points, double radius)
+{
+ for (unsigned int i = 0 ; i < n ; ++i)
+ {
+ unsigned int i3 = i * 3;
+ m_octree.insert(points[i3], points[i3 + 1], points[i3 + 2], OCTREE_CELL_OCCUPIED);
+ }
+}
+
+void collision_space::EnvironmentModelOctree::clearObstacles(void)
+{
+ m_octree.clear();
+}
+
+const scan_utils::Octree<char>* collision_space::EnvironmentModelOctree::getOctree(void) const
+{
+ return &m_octree;
+}
Modified: pkg/trunk/motion_planning/collision_space/test/test_util.cpp
===================================================================
--- pkg/trunk/motion_planning/collision_space/test/test_util.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/collision_space/test/test_util.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -37,7 +37,7 @@
TEST(SpherePointContainment, SimpleInside)
{
- collision_space::bodies::Object* sphere = new collision_space::bodies::Sphere();
+ collision_space::bodies::Shape* sphere = new collision_space::bodies::Sphere();
double dims = 1.0;
sphere->setDimensions(&dims);
sphere->setScale(1.05);
@@ -48,7 +48,7 @@
TEST(SpherePointContainment, SimpleOutside)
{
- collision_space::bodies::Object* sphere = new collision_space::bodies::Sphere();
+ collision_space::bodies::Shape* sphere = new collision_space::bodies::Sphere();
double dims = 1.0;
sphere->setDimensions(&dims);
sphere->setScale(0.95);
@@ -59,7 +59,7 @@
TEST(SpherePointContainment, ComplexInside)
{
- collision_space::bodies::Object* sphere = new collision_space::bodies::Sphere();
+ collision_space::bodies::Shape* sphere = new collision_space::bodies::Sphere();
double dims = 1.0;
sphere->setDimensions(&dims);
sphere->setScale(0.95);
@@ -73,7 +73,7 @@
TEST(SpherePointContainment, ComplexOutside)
{
- collision_space::bodies::Object* sphere = new collision_space::bodies::Sphere();
+ collision_space::bodies::Shape* sphere = new collision_space::bodies::Sphere();
double dims = 1.0;
sphere->setDimensions(&dims);
sphere->setScale(0.95);
@@ -88,7 +88,7 @@
TEST(BoxPointContainment, SimpleInside)
{
- collision_space::bodies::Object* box = new collision_space::bodies::Box();
+ collision_space::bodies::Shape* box = new collision_space::bodies::Box();
double dims[3] = {1.0, 2.0, 3.0};
box->setDimensions(dims);
box->setScale(0.95);
@@ -100,7 +100,7 @@
TEST(BoxPointContainment, SimpleOutside)
{
- collision_space::bodies::Object* box = new collision_space::bodies::Box();
+ collision_space::bodies::Shape* box = new collision_space::bodies::Box();
double dims[3] = {1.0, 2.0, 3.0};
box->setDimensions(dims);
box->setScale(0.95);
@@ -112,7 +112,7 @@
TEST(BoxPointContainment, ComplexInside)
{
- collision_space::bodies::Object* box = new collision_space::bodies::Box();
+ collision_space::bodies::Shape* box = new collision_space::bodies::Box();
double dims[3] = {1.0, 1.0, 1.0};
box->setDimensions(dims);
box->setScale(1.01);
@@ -128,7 +128,7 @@
TEST(BoxPointContainment, ComplexOutside)
{
- collision_space::bodies::Object* box = new collision_space::bodies::Box();
+ collision_space::bodies::Shape* box = new collision_space::bodies::Box();
double dims[3] = {1.0, 1.0, 1.0};
box->setDimensions(dims);
box->setScale(1.01);
@@ -144,7 +144,7 @@
TEST(CylinderPointContainment, SimpleInside)
{
- collision_space::bodies::Object* cylinder = new collision_space::bodies::Cylinder();
+ collision_space::bodies::Shape* cylinder = new collision_space::bodies::Cylinder();
double dims[3] = {4.0, 1.0};
cylinder->setDimensions(dims);
cylinder->setScale(1.05);
@@ -156,7 +156,7 @@
TEST(CylinderPointContainment, SimpleOutside)
{
- collision_space::bodies::Object* cylinder = new collision_space::bodies::Cylinder();
+ collision_space::bodies::Shape* cylinder = new collision_space::bodies::Cylinder();
double dims[3] = {4.0, 1.0};
cylinder->setDimensions(dims);
cylinder->setScale(0.95);
Modified: pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
===================================================================
--- pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -61,7 +61,7 @@
Subscribes to (name/type):
- None
-Additional subscriptions due to inheritance from NodeODECollisionModel:
+Additional subscriptions due to inheritance from NodeCollisionModel:
- @b localizedpose/RobotBase2DOdom : localized position of the robot base
- @b world_3d_map/PointCloudFloat32 : point cloud with data describing the 3D environment
@@ -100,12 +100,13 @@
#include <map>
class KinematicPlanning : public ros::node,
- public planning_node_util::NodeODECollisionModel
+ public planning_node_util::NodeCollisionModel
{
public:
KinematicPlanning(const std::string &robot_model) : ros::node("kinematic_planning"),
- planning_node_util::NodeODECollisionModel(dynamic_cast<ros::node*>(this), robot_model)
+ planning_node_util::NodeCollisionModel(dynamic_cast<ros::node*>(this),
+ robot_model)
{
advertise_service("plan_kinematic_path", &KinematicPlanning::plan);
}
@@ -233,7 +234,7 @@
virtual void setRobotDescription(robot_desc::URDF *file)
{
- planning_node_util::NodeODECollisionModel::setRobotDescription(file);
+ planning_node_util::NodeCollisionModel::setRobotDescription(file);
defaultPosition();
/* set the data for the model */
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h 2008-08-20 20:29:42 UTC (rev 3346)
@@ -211,7 +211,8 @@
virtual void sample(StateKinematic_t state);
virtual void sampleNear(StateKinematic_t state, const StateKinematic_t near, double rho);
- virtual bool checkMotion(const StateKinematic_t s1, const StateKinematic_t s2);
+ virtual bool checkMotionSubdivision(const StateKinematic_t s1, const StateKinematic_t s2);
+ virtual bool checkMotionLinearly(const StateKinematic_t s1, const StateKinematic_t s2);
virtual void interpolatePath(PathKinematic_t path);
bool isValid(const StateKinematic_t state)
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -50,8 +50,6 @@
time_utils::Time endTime = time_utils::Time::now() + time_utils::Duration(solveTime);
- Motion_t __hack = NULL;
-
if (m_nn.size() == 0)
{
for (unsigned int i = 0 ; i < m_si->getStartStateCount() ; ++i)
@@ -60,8 +58,6 @@
si->copyState(motion->state, dynamic_cast<SpaceInformationKinematic::StateKinematic_t>(si->getStartState(i)));
if (si->isValid(motion->state))
{
- __hack = motion;
-
motion->valid = true;
m_nn.add(motion);
}
@@ -141,7 +137,7 @@
for (int i = mpath.size() - 1 ; i >= 0 ; --i)
if (!mpath[i]->valid)
{
- if (si->checkMotion(mpath[i]->parent->state, mpath[i]->state))
+ if (si->checkMotionSubdivision(mpath[i]->parent->state, mpath[i]->state))
mpath[i]->valid = true;
else
{
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -105,7 +105,7 @@
si->copyState(motion->state, xstate);
motion->parent = nmotion;
- if (si->checkMotion(nmotion->state, motion->state))
+ if (si->checkMotionSubdivision(nmotion->state, motion->state))
{
m_nn.add(motion);
double dist = goal_r->distanceGoal(motion->state);
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -67,7 +67,7 @@
if (p1 > p2)
std::swap(p1, p2);
- if (si->checkMotion(path->states[p1], path->states[p2]))
+ if (si->checkMotionSubdivision(path->states[p1], path->states[p2]))
{
for (int i = p1 + 1 ; i < p2 ; ++i)
delete path->states[i];
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -103,7 +103,7 @@
std::min(m_stateComponent[i].maxValue, near->values[i] + rho));
}
-bool ompl::SpaceInformationKinematic::checkMotion(const StateKinematic_t s1, const StateKinematic_t s2)
+bool ompl::SpaceInformationKinematic::checkMotionSubdivision(const StateKinematic_t s1, const StateKinematic_t s2)
{
/* assume motion starts in a valid configuration so s1 is valid */
if (!isValid(s2))
@@ -125,7 +125,7 @@
/* initialize the queue of test positions */
std::queue< std::pair<int, int> > pos;
- if (nd > 2)
+ if (nd >= 2)
pos.push(std::make_pair(1, nd - 1));
/* temporary storage for the checked state */
@@ -155,6 +155,40 @@
return true;
}
+bool ompl::SpaceInformationKinematic::checkMotionLinearly(const StateKinematic_t s1, const StateKinematic_t s2)
+{
+ /* assume motion starts in a valid configuration so s1 is valid */
+ if (!isValid(s2))
+ return false;
+
+ /* find out how many divisions we need */
+ int nd = 1;
+ for (unsigned int i = 0 ; i < m_stateDimension ; ++i)
+ {
+ int d = 1 + (int)(fabs(s1->values[i] - s2->values[i]) / m_stateComponent[i].resolution);
+ if (nd < d)
+ nd = d;
+ }
+
+ /* find out the step size as a vector */
+ std::valarray<double> step(m_stateDimension);
+ for (unsigned int i = 0 ; i < m_stateDimension ; ++i)
+ step[i] = (s2->values[i] - s1->values[i]) / (double)nd;
+
+ /* temporary storage for the checked state */
+ StateKinematic test(m_stateDimension);
+
+ for (int j = 1 ; j < nd ; ++j)
+ {
+ for (unsigned int k = 0 ; k < m_stateDimension ; ++k)
+ test.values[k] = s1->values[k] + (double)j * step[k];
+ if (!isValid(&test))
+ return false;
+ }
+
+ return true;
+}
+
void ompl::SpaceInformationKinematic::interpolatePath(PathKinematic_t path)
{
std::vector<StateKinematic_t> newStates;
Modified: pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp
===================================================================
--- pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp 2008-08-20 20:29:42 UTC (rev 3346)
@@ -131,7 +131,7 @@
req.goal_state.vals[i] = 0.0;
req.goal_state.vals[0] = -1.0;
- req.allowed_time = 10.0;
+ req.allowed_time = 30.0;
req.volumeMin.x = -5.0 + m_basePos[0]; req.volumeMin.y = -5.0 + m_basePos[1]; req.volumeMin.z = 0.0;
req.volumeMax.x = 5.0 + m_basePos[0]; req.volumeMax.y = 5.0 + m_basePos[1]; req.volumeMax.z = 0.0;
Modified: pkg/trunk/motion_planning/planning_models/include/planning_models/kinematic.h
===================================================================
--- pkg/trunk/motion_planning/planning_models/include/planning_models/kinematic.h 2008-08-20 20:29:31 UTC (rev 3345)
+++ pkg/trunk/motion_planning/planning_models/include/planning_models/kinematic.h 2008-08-20 20:29:42 UTC (rev 3346)
@@ -37,6 +37,8 @@
#include <urdf/URDF.h>
#include <libTF/Pose3D.h>
+
+#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
@@ -47,91 +49,222 @@
namespace planning_models
{
-
+
+ /** Definition of a kinematic model */
class KinematicModel
{
public:
+ /** A basic definition of a shape. Shapes to be centered at origin */
+ class Shape
+ {
+ public:
+ Shape(void)
+ {
+ type = UNKNOWN;
+ }
+
+ virtual ~Shape(void)
+ {
+ }
+
+ enum { UNKNOWN, SPHERE, CYLINDER, BOX }
+ type;
+
+ };
- /** Possible geometry elements. These are assumed to be centered at origin (similar to ODE) */
- struct Geometry
+ /** Definition of a sphere */
+ class Sphere : public Shape
{
- Geometry(void)
+ public:
+ Sphere(void) : Shape()
{
- type = UNKNOWN;
-...
[truncated message content] |
|
From: <hsu...@us...> - 2008-08-20 22:30:33
|
Revision: 3362
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3362&view=rev
Author: hsujohnhsu
Date: 2008-08-20 22:30:40 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
updated experimental tester plugin.
Modified Paths:
--------------
pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/test_actuators.h
pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml
pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers_gazebo_test.xml
Added Paths:
-----------
pkg/trunk/robot_descriptions/wg_robot_description/pr2/gazebo_joints.xml
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/test_actuators.h
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/test_actuators.h 2008-08-20 22:29:33 UTC (rev 3361)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/include/gazebo_plugin/test_actuators.h 2008-08-20 22:30:40 UTC (rev 3362)
@@ -178,9 +178,17 @@
struct Gazebo_joint_
{
std::string* name_;
- gazebo::Joint* joint_;
+ std::vector<gazebo::Joint*> gaz_joints_;
+ mechanism::Joint* rmc_joint_;
+ double saturationTorque;
+ double explicitDampingCoefficient;
+ bool isGripper;
+ std::string* gripper_controller_name_;
+ std::vector<controller::Pid*> gaz_gripper_pids_;
};
std::vector<Gazebo_joint_*> gazebo_joints_;
+ double currentTime;
+ double lastTime;
// for storing transmission xml
// struct Robot_transmission_
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-20 22:29:33 UTC (rev 3361)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-20 22:30:40 UTC (rev 3362)
@@ -120,6 +120,10 @@
// TODO: mc_.init();
hw_.current_time_ = Simulator::Instance()->GetSimTime();
+
+ // for internal gripper pid use
+ currentTime = Simulator::Instance()->GetSimTime();
+ lastTime = Simulator::Instance()->GetSimTime();
}
void GazeboActuators::UpdateChild()
@@ -196,12 +200,112 @@
//-----------------------------------------------------------------------------------------
//
- // parse for joints
+ // parse for MechanismControl joints
//
//-----------------------------------------------------------------------------------------
mcn_.initXml(pr2_xml->FirstChildElement("robot"));
rmcn_.initXml(pr2_xml->FirstChildElement("robot"));
+ //-----------------------------------------------------------------------------------------
+ //
+ // how the mechanism joints relate to the gazebo_joints
+ //
+ //-----------------------------------------------------------------------------------------
+ // The gazebo joints and mechanism joints should match up.
+ std::cout << " Loading gazebo joints : " << std::endl;
+ for (XMLConfigNode *jNode = node->GetChild("robot")->GetChild("joint"); jNode; )
+ {
+ std::string *joint_name = new std::string(jNode->GetString("name","",1));
+ std::cout << "processing mech joint (" << *joint_name << ") map to gazebo joint. " << std::endl;
+
+ // joint exist in model, proceed to create gazebo joint and mapping
+ Gazebo_joint_* gj = new Gazebo_joint_();
+ gj->name_ = joint_name;
+
+ // check for special cases -- Gripper!
+ if (!rmc_.model_.getJoint(*joint_name))
+ {
+ // joint does not exist in MechanismControl
+ std::cout << std::endl << "mech joint (" << *joint_name << ") does not exist in mechanism control, check pr2.xml. " << std::endl;
+ // create this joint inside MechanismControl if it is an abstract type like a gripper
+ if (jNode->GetString("abstract","",0)== "gripper")
+ {
+ mechanism::Joint *joint = new mechanism::Joint();
+ joint->name_ = joint_name->c_str();
+ joint->type_ = mechanism::JOINT_ROTARY;
+ joint->position_ = 0; // from transmission
+ joint->velocity_ = 0; // from transmission
+ joint->applied_effort_ = 0; // from transmission
+ joint->commanded_effort_ = 0; // to transmission
+ joint->joint_limit_min_ = 0;
+ joint->joint_limit_max_ = 0;
+ joint->effort_limit_ = jNode->GetDouble("effortLimit",0.0,0);
+ joint->velocity_limit_ = jNode->GetDouble("velocityLimit",0.0,0);
+ mc_.addJoint(joint);
+ rmc_.addJoint(joint);
+ // get controller name from xml
+ gj->gripper_controller_name_ = new std::string(jNode->GetString("gripper_controller","",1));
+ std::cout << " gripper controller name is : " << *(gj->gripper_controller_name_) << std::endl;
+ }
+ }
+
+ // add a link to the mechanism control joint
+ gj->rmc_joint_ = rmc_.model_.getJoint(*joint_name);
+
+ // read gazebo specific joint properties
+ gj->saturationTorque = jNode->GetDouble("saturationTorque",0.0,0);
+ gj->explicitDampingCoefficient = jNode->GetDouble("explicitDampingCoefficient",0.0,0);
+
+ // deal with special case -- Gripper!
+ if (jNode->GetString("abstract","",0) == "gripper")
+ gj->isGripper = true;
+ else
+ gj->isGripper = false;
+
+ if (gj->isGripper)
+ {
+ std::string f_l_joint_name = jNode->GetString("left_proximal","",1);
+ std::string f_r_joint_name = jNode->GetString("right_proximal","",1);
+ std::string f_tip_l_joint_name = jNode->GetString("left_distal","",1);
+ std::string f_tip_r_joint_name = jNode->GetString("right_distal","",1);
+ gazebo::HingeJoint* gj_f_l = (gazebo::HingeJoint*)parent_model_->GetJoint(f_l_joint_name) ;
+ gazebo::HingeJoint* gj_f_r = (gazebo::HingeJoint*)parent_model_->GetJoint(f_r_joint_name) ;
+ gazebo::HingeJoint* gj_f_tip_l = (gazebo::HingeJoint*)parent_model_->GetJoint(f_tip_l_joint_name);
+ gazebo::HingeJoint* gj_f_tip_r = (gazebo::HingeJoint*)parent_model_->GetJoint(f_tip_r_joint_name);
+ gj->gaz_joints_.push_back(gj_f_l );
+ gj->gaz_joints_.push_back(gj_f_r );
+ gj->gaz_joints_.push_back(gj_f_tip_l);
+ gj->gaz_joints_.push_back(gj_f_tip_r);
+
+ gj->gaz_gripper_pids_.push_back( new controller::Pid() ); gj->gaz_gripper_pids_.back()->initPid( 1.0, 0.01, 0.0, 0.2, -0.2);
+ gj->gaz_gripper_pids_.push_back( new controller::Pid() ); gj->gaz_gripper_pids_.back()->initPid( 1.0, 0.01, 0.0, 0.2, -0.2);
+ gj->gaz_gripper_pids_.push_back( new controller::Pid() ); gj->gaz_gripper_pids_.back()->initPid( 1.0, 0.01, 0.0, 0.2, -0.2);
+ gj->gaz_gripper_pids_.push_back( new controller::Pid() ); gj->gaz_gripper_pids_.back()->initPid( 1.0, 0.01, 0.0, 0.2, -0.2);
+
+ // initialize for torque control mode
+ gj_f_l ->SetParam(dParamVel , 0);
+ gj_f_l ->SetParam(dParamFMax, 0);
+ gj_f_r ->SetParam(dParamVel , 0);
+ gj_f_r ->SetParam(dParamFMax, 0);
+ gj_f_tip_l->SetParam(dParamVel , 0);
+ gj_f_tip_l->SetParam(dParamFMax, 0);
+ gj_f_tip_r->SetParam(dParamVel , 0);
+ gj_f_tip_r->SetParam(dParamFMax, 0);
+
+ }
+ else
+ {
+ gazebo::Joint* ggj = (gazebo::Joint*)parent_model_->GetJoint(*joint_name);
+ gj->gaz_joints_.push_back(ggj);
+ // initialize for torque control mode
+ ggj->SetParam(dParamVel , 0);
+ ggj->SetParam(dParamFMax, 0);
+
+ }
+
+ gazebo_joints_.push_back(gj);
+ jNode = jNode->GetNext("joint");
+ }
//-----------------------------------------------------------------------------------------
//
// ACTUATOR XML
@@ -268,58 +372,6 @@
}
- //-----------------------------------------------------------------------------------------
- //
- // how the mechanism_joints relate to the gazebo_joints
- //
- //-----------------------------------------------------------------------------------------
- // The gazebo joints and mechanism joints should match up.
- std::cout << " Loading gazebo joints : " << std::endl;
- for (unsigned int i = 0; i < rmc_.model_.joints_.size(); ++i)
- {
- Gazebo_joint_* gj = new Gazebo_joint_();
-
- std::string *joint_name = &rmc_.model_.joints_[i]->name_;
-
- gj->name_ = joint_name;
-
- std::cout << "adding gazebo joint: " << *(gj->name_) << std::endl;
-
- gazebo::Joint *joint = parent_model_->GetJoint(*joint_name);
- if (joint)
- {
-
- gj->joint_ = joint;
-
- if (joint->GetType() == gazebo::Joint::HINGE)
- {
- // initialize for torque control mode
- joint->SetParam(dParamVel , 0);
- joint->SetParam(dParamFMax, 0);
- }
- else if (joint->GetType() == gazebo::Joint::SLIDER)
- {
- // initialize for torque control mode
- joint->SetParam(dParamVel , 0);
- joint->SetParam(dParamFMax, 0);
- }
- else
- {
- // initialize for torque control mode
- joint->SetParam(dParamVel , 0);
- joint->SetParam(dParamFMax, 0);
- }
- }
- else
- {
- fprintf(stderr, "Gazebo does not know about a joint named \"%s\"\n", joint_name->c_str());
- gj->joint_ = NULL;
- }
-
- gazebo_joints_.push_back(gj);
- }
-
-
}
@@ -336,6 +388,7 @@
{
// pass time to robot
hw_.current_time_ = Simulator::Instance()->GetSimTime();
+ currentTime = Simulator::Instance()->GetSimTime();
this->lock.lock();
@@ -430,16 +483,51 @@
// update joint status from hardware
for (std::vector<Gazebo_joint_*>::iterator gji = gazebo_joints_.begin(); gji != gazebo_joints_.end() ; gji++)
{
- mechanism::Joint* mech_joint = rmc_.model_.getJoint(*((*gji)->name_));
+ // gripper joint, is an ugly special case for now
+ if ((*gji)->isGripper)
+ {
+ for (std::vector<gazebo::Joint*>::iterator ggji = (*gji)->gaz_joints_.begin(); ggji != (*gji)->gaz_joints_.end() ; ggji++)
+ {
- // push gazebo joint to reverse joints
- if ((*gji)->joint_ && (*gji)->joint_->GetType() == gazebo::Joint::HINGE)
+ }
+ gazebo::HingeJoint* gj_f_l = dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0]);
+ gazebo::HingeJoint* gj_f_r = dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1]);
+ gazebo::HingeJoint* gj_f_tip_l = dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2]);
+ gazebo::HingeJoint* gj_f_tip_r = dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3]);
+
+ (*gji)->rmc_joint_->position_ = gj_f_l->GetAngle();
+ (*gji)->rmc_joint_->velocity_ = gj_f_l->GetAngleRate();
+ (*gji)->rmc_joint_->applied_effort_ = (*gji)->rmc_joint_->commanded_effort_;
+
+ }
+ else
{
- mech_joint->position_ = dynamic_cast<gazebo::HingeJoint*>((*gji)->joint_)->GetAngle(); // use one joint as reference
- mech_joint->velocity_ = dynamic_cast<gazebo::HingeJoint*>((*gji)->joint_)->GetAngleRate();
- mech_joint->applied_effort_ = mech_joint->commanded_effort_;
+ // normal joints
+ switch((*gji)->gaz_joints_[0]->GetType())
+ {
+ case gazebo::Joint::SLIDER:
+ {
+ gazebo::SliderJoint* gjs = dynamic_cast<gazebo::SliderJoint*>((*gji)->gaz_joints_[0]);
+ (*gji)->rmc_joint_->position_ = gjs->GetPosition();
+ (*gji)->rmc_joint_->velocity_ = gjs->GetPositionRate();
+ (*gji)->rmc_joint_->applied_effort_ = (*gji)->rmc_joint_->commanded_effort_;
+ break;
+ }
+ case gazebo::Joint::HINGE:
+ {
+ gazebo::HingeJoint* gjh = dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0]);
+ (*gji)->rmc_joint_->position_ = gjh->GetAngle();
+ (*gji)->rmc_joint_->velocity_ = gjh->GetAngleRate();
+ (*gji)->rmc_joint_->applied_effort_ = (*gji)->rmc_joint_->commanded_effort_;
+ break;
+ }
+ case gazebo::Joint::HINGE2:
+ case gazebo::Joint::BALL:
+ case gazebo::Joint::UNIVERSAL:
+ break;
+ }
+ }
- }
}
// push reverse_mech_joint_ stuff back toward actuators
for (unsigned int i=0; i < rmc_.model_.transmissions_.size(); i++)
@@ -515,15 +603,65 @@
// -------------------------------------------------------------------------------------------------
for (std::vector<Gazebo_joint_*>::iterator gji = gazebo_joints_.begin(); gji != gazebo_joints_.end() ; gji++)
{
- mechanism::Joint* mech_joint = mc_.model_.getJoint(*((*gji)->name_));
+ // gripper joint, is an ugly special case for now
+ if ((*gji)->isGripper)
+ {
+ double gripperCmd , currentError, currentCmd ;
+ // FIXME: this restricts gripper to a position controller... not ideal
+ std::string jn = *((*gji)->gripper_controller_name_ );
+ controller::Controller* jc = mc_.getControllerByName(jn); // from actual mechanism control, not rmc_
+ controller::JointPositionControllerNode* jpc = dynamic_cast<controller::JointPositionControllerNode*>(jc);
+ gripperCmd = jpc->getCommand();
- // push gazebo joint to reverse joints
- if ((*gji)->joint_ && (*gji)->joint_->GetType() == gazebo::Joint::HINGE)
+ currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0])->GetAngle(),gripperCmd);
+ currentCmd = (*gji)->gaz_gripper_pids_[0]->updatePid(currentError,currentTime-lastTime);
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0])->SetParam( dParamVel, currentCmd );
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0])->SetParam( dParamFMax, (*gji)->saturationTorque );
+
+ currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1])->GetAngle(),-gripperCmd);
+ currentCmd = (*gji)->gaz_gripper_pids_[1]->updatePid(currentError,currentTime-lastTime);
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1])->SetParam( dParamVel, currentCmd );
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1])->SetParam( dParamFMax, (*gji)->saturationTorque );
+
+ currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2])->GetAngle(),-gripperCmd);
+ currentCmd = (*gji)->gaz_gripper_pids_[2]->updatePid(currentError,currentTime-lastTime);
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2])->SetParam( dParamVel, currentCmd );
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2])->SetParam( dParamFMax, (*gji)->saturationTorque );
+
+ currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3])->GetAngle(),gripperCmd);
+ currentCmd = (*gji)->gaz_gripper_pids_[3]->updatePid(currentError,currentTime-lastTime);
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3])->SetParam( dParamVel, currentCmd );
+ dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3])->SetParam( dParamFMax, (*gji)->saturationTorque );
+
+ }
+ else
{
- dynamic_cast<gazebo::HingeJoint*>((*gji)->joint_)->SetTorque( mech_joint->commanded_effort_);
+ // normal joints
+ switch ((*gji)->gaz_joints_[0]->GetType())
+ {
+ case gazebo::Joint::SLIDER:
+ {
+ gazebo::SliderJoint* gjs = dynamic_cast<gazebo::SliderJoint*>((*gji)->gaz_joints_[0]);
+ gjs->SetSliderForce( (*gji)->rmc_joint_->commanded_effort_);
+ break;
+ }
+ case gazebo::Joint::HINGE:
+ {
+ gazebo::HingeJoint* gjh = dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0]);
+ gjh->SetTorque( (*gji)->rmc_joint_->commanded_effort_);
+ break;
+ }
+ case gazebo::Joint::HINGE2:
+ case gazebo::Joint::BALL:
+ case gazebo::Joint::UNIVERSAL:
+ break;
+ }
}
+
}
+ lastTime = currentTime;
+
}
Modified: pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml 2008-08-20 22:29:33 UTC (rev 3361)
+++ pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml 2008-08-20 22:30:40 UTC (rev 3362)
@@ -3,10 +3,10 @@
<robot name="pr2"><!-- name of the robot-->
- <controller name="base_controller" type="BaseControllerNode">
- <controller name="caster_front_left_controller" type="JointVelocityControllerNode">
+ <controller name="base_controller" topic="base_controller" type="1BaseControllerNode">
+ <controller name="caster_front_left_controller" topic="caster_front_left_controller" type="JointVelocityControllerNode">
<joint name="caster_front_left_joint" >
- <controller_defaults p="1" d="0" i="0" iClamp="0" />
+ <pid p="1" d="0" i="0" iClamp="0" />
<map name="wheel_front_left_l_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -15,27 +15,27 @@
</map>
</joint>
</controller>
- <controller name="wheel_front_left_l_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_front_left_l_controller" topic="wheel_front_left_l_controller" type="JointVelocityControllerNode">
<joint name="wheel_front_left_l_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_front_left_l_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
</map>
</joint>
</controller>
- <controller name="wheel_front_left_r_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_front_left_r_controller" topic="wheel_front_left_r_controller" type="JointVelocityControllerNode">
<joint name="wheel_front_left_r_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_front_left_r_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
</map>
</joint>
</controller>
- <controller name="caster_front_right_controller" type="JointVelocityControllerNode">
+ <controller name="caster_front_right_controller" topic="caster_front_right_controller" type="JointVelocityControllerNode">
<joint name="caster_front_right_joint" >
- <controller_defaults p="1" d="0" i="0" iClamp="0" />
+ <pid p="1" d="0" i="0" iClamp="0" />
<map name="wheel_front_left_l_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -44,27 +44,27 @@
</map>
</joint>
</controller>
- <controller name="wheel_front_right_l_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_front_right_l_controller" topic="wheel_front_right_l_controller" type="JointVelocityControllerNode">
<joint name="wheel_front_right_l_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_front_right_l_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
</map>
</joint>
</controller>
- <controller name="wheel_front_right_r_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_front_right_r_controller" topic="wheel_front_right_r_controller" type="JointVelocityControllerNode">
<joint name="wheel_front_right_r_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_front_right_r_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
</map>
</joint>
</controller>
- <controller name="caster_rear_left_controller" type="JointVelocityControllerNode">
+ <controller name="caster_rear_left_controller" topic="caster_rear_left_controller" type="JointVelocityControllerNode">
<joint name="caster_rear_left_joint" >
- <controller_defaults p="1" d="0" i="0" iClamp="0" />
+ <pid p="1" d="0" i="0" iClamp="0" />
<map name="wheel_front_right_r_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -73,27 +73,27 @@
</map>
</joint>
</controller>
- <controller name="wheel_rear_left_l_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_rear_left_l_controller" topic="wheel_rear_left_l_controller" type="JointVelocityControllerNode">
<joint name="wheel_rear_left_l_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_rear_left_l_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
</map>
</joint>
</controller>
- <controller name="wheel_rear_left_r_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_rear_left_r_controller" topic="wheel_rear_left_r_controller" type="JointVelocityControllerNode">
<joint name="wheel_rear_left_r_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_rear_left_r_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
</map>
</joint>
</controller>
- <controller name="caster_rear_right_controller" type="JointVelocityControllerNode">
+ <controller name="caster_rear_right_controller" topic="caster_rear_right_controller" type="JointVelocityControllerNode">
<joint name="caster_rear_right_joint" >
- <controller_defaults p="1" d="0" i="0" iClamp="0" />
+ <pid p="1" d="0" i="0" iClamp="0" />
<map name="wheel_rear_left_l_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -102,18 +102,18 @@
</map>
</joint>
</controller>
- <controller name="wheel_rear_right_l_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_rear_right_l_controller" topic="wheel_rear_right_l_controller" type="JointVelocityControllerNode">
<joint name="wheel_rear_right_l_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_rear_right_l_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
</map>
</joint>
</controller>
- <controller name="wheel_rear_right_r_controller" type="JointVelocityControllerNode">
+ <controller name="wheel_rear_right_r_controller" topic="wheel_rear_right_r_controller" type="JointVelocityControllerNode">
<joint name="wheel_rear_right_r_joint" >
- <controller_defaults p="0.5" d="0" i="0" iClamp="0" />
+ <pid p="0.5" d="0" i="0" iClamp="0" />
<map name="wheel_rear_right_r_data" flag="gazebo">
<elem key="saturationTorque">5</elem>
<elem key="jointType">Hinge</elem>
@@ -124,9 +124,9 @@
<!-- ========================================= -->
<!-- torso array -->
- <controller name="torso_controller" type="JointPositionControllerNode">
+ <controller name="torso_controller" topic="torso_controller" type="JointPositionControllerNode">
<joint name="torso_joint">
- <controller_defaults p="1000" d="0" i="0" iClamp="0" />
+ <pid p="1000" d="0" i="0" iClamp="0" />
<map name="wheel_rear_right_l_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -136,9 +136,9 @@
</controller>
<!-- ========================================= -->
<!-- left arm array -->
- <controller name="shoulder_pan_left_controller" type="JointPositionControllerNode">
+ <controller name="shoulder_pan_left_controller" topic="shoulder_pan_left_controller" type="JointPositionControllerNode">
<joint name="shoulder_pan_left_joint" >
- <controller_defaults p="1000" d="0" i="0" iClamp="0" />
+ <pid p="1000" d="0" i="0" iClamp="0" />
<map name="shoulder_pan_left_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -146,9 +146,9 @@
</map>
</joint>
</controller>
- <controller name="shoulder_pitch_left_controller" type="JointPositionControllerNode">
+ <controller name="shoulder_pitch_left_controller" topic="shoulder_pitch_left_controller" type="JointPositionControllerNode">
<joint name="shoulder_pitch_left_joint" >
- <controller_defaults p="10000" d="0" i="0" iClamp="0" />
+ <pid p="10000" d="0" i="0" iClamp="0" />
<map name="shoulder_pitch_left_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -156,9 +156,9 @@
</map>
</joint>
</controller>
- <controller name="upperarm_roll_left_controller" type="JointPositionControllerNode">
+ <controller name="upperarm_roll_left_controller" topic="upperarm_roll_left_controller" type="JointPositionControllerNode">
<joint name="upperarm_roll_left_joint" >
- <controller_defaults p="1000" d="0" i="0" iClamp="0" />
+ <pid p="1000" d="0" i="0" iClamp="0" />
<map name="upperarm_roll_left_data" flag="gazebo">
<elem key="saturationTorque">1000</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -166,9 +166,9 @@
</map>
</joint>
</controller>
- <controller name="elbow_flex_left_controller" type="JointPositionControllerNode">
+ <controller name="elbow_flex_left_controller" topic="elbow_flex_left_controller" type="JointPositionControllerNode">
<joint name="elbow_flex_left_joint" >
- <controller_defaults p="5000" d="0" i="0" iClamp="0" />
+ <pid p="5000" d="0" i="0" iClamp="0" />
<map name="elbow_flex_left_data" flag="gazebo">
<elem key="saturationTorque">100</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -176,9 +176,9 @@
</map>
</joint>
</controller>
- <controller name="forearm_roll_left_controller" type="JointPositionControllerNode">
+ <controller name="forearm_roll_left_controller" topic="forearm_roll_left_controller" type="JointPositionControllerNode">
<joint name="forearm_roll_left_joint" >
- <controller_defaults p="100" d="0" i="0" iClamp="0" />
+ <pid p="100" d="0" i="0" iClamp="0" />
<map name="forearm_roll_left_data" flag="gazebo">
<elem key="saturationTorque">100</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -186,9 +186,9 @@
</map>
</joint>
</controller>
- <controller name="wrist_flex_left_controller" type="JointPositionControllerNode">
+ <controller name="wrist_flex_left_controller" topic="wrist_flex_left_controller" type="JointPositionControllerNode">
<joint name="wrist_flex_left_joint" >
- <controller_defaults p="100" d="0" i="0" iClamp="0" />
+ <pid p="100" d="0" i="0" iClamp="0" />
<map name="wrist_flex_left_data" flag="gazebo">
<elem key="saturationTorque">100</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -196,9 +196,9 @@
</map>
</joint>
</controller>
- <controller name="gripper_roll_left_controller" type="JointPositionControllerNode">
+ <controller name="gripper_roll_left_controller" topic="gripper_roll_left_controller" type="JointPositionControllerNode">
<joint name="gripper_roll_left_joint" >
- <controller_defaults p="1" d="0" i="0" iClamp="0" />
+ <pid p="1" d="0" i="0" iClamp="0" />
<map name="gripper_roll_left_data" flag="gazebo">
<elem key="saturationTorque">100</elem>
<elem key="explicitDampingCoefficient">1.0</elem>
@@ -207,9 +207,9 @@
</joint>
</controller>
<!-- Special gripper joint -->
- <controller name="gripper_left_controller" type="JointPositionControllerNode">
+ <controller name="gripper_left_controller" topic="gripper_left_controller" type="JointPositionControllerNode">
<joint name="gripper_left_joint">
- <controller_defaults p="20" d="0" i="0" iClamp="0" />
+ <pid p="20" d="0" i="0" iClamp="0" />
<gripper_defaults effortLimit="100" velocityLimit="10" />
<map name="gripper_joints" flag="gazebo">
<elem key="saturationTorque">100</elem>
@@ -224,9 +224,9 @@
</controller>
<!-- ========================================= -->
<!-- right arm array -->
- <controller name="shoulder_pan_right_controller" type="JointPositionControllerNode">
+ <controller name="shoulder_pan_right_controller" topic="shoulder_pan_right_controller" type="JointPositionControllerNode">
<joint name...
[truncated message content] |
|
From: <rob...@us...> - 2008-08-21 00:02:48
|
Revision: 3380
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3380&view=rev
Author: rob_wheeler
Date: 2008-08-21 00:02:57 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
Move mechanism control scripts into a common location
Added Paths:
-----------
pkg/trunk/mechanism/mechanism_control/scripts/controllers.py
pkg/trunk/mechanism/mechanism_control/scripts/mech.py
Removed Paths:
-------------
pkg/trunk/controllers/generic_controllers/controllers.py
pkg/trunk/mechanism/mechanism_control/mech.py
Deleted: pkg/trunk/controllers/generic_controllers/controllers.py
===================================================================
--- pkg/trunk/controllers/generic_controllers/controllers.py 2008-08-20 23:52:08 UTC (rev 3379)
+++ pkg/trunk/controllers/generic_controllers/controllers.py 2008-08-21 00:02:57 UTC (rev 3380)
@@ -1,49 +0,0 @@
-#! /usr/bin/env python
-
-import rostools
-rostools.update_path('mechanism_control')
-rostools.update_path('generic_controllers')
-
-
-import rospy, sys
-from mechanism_control.srv import *
-from generic_controllers.srv import *
-
-def print_usage(exit_code = 0):
- print '''Commands:
- ls - List controllers
- set <controller> <command> - Set the contorller's commanded value
- get <controller> - Get the contorller's commanded value'''
- sys.exit(exit_code)
-
-def list_controllers():
- s = rospy.ServiceProxy('list_controllers', ListControllers)
- resp = s.call(ListControllersRequest())
- for t in resp.controllers:
- print t
-
-def set_controller(controller, command):
- s = rospy.ServiceProxy(controller + '/set_command', SetCommand)
- resp = s.call(SetCommandRequest(command))
- print resp.command
-
-def get_controller(controller):
- s = rospy.ServiceProxy(controller + '/get_actual', GetActual)
- resp = s.call(GetActualRequest())
- print str(resp.time) + ": " + str(resp.command)
-
-if __name__ == '__main__':
- if len(sys.argv) == 1:
- print_usage()
- if sys.argv[1] == 'ls':
- list_controllers()
- elif sys.argv[1] == 'set':
- if len(sys.argv) != 4:
- print_usage()
- set_controller(sys.argv[2], float(sys.argv[3]))
- elif sys.argv[1] == 'get':
- if len(sys.argv) != 3:
- print_usage()
- get_controller(sys.argv[2])
- else:
- print_usage(1)
Deleted: pkg/trunk/mechanism/mechanism_control/mech.py
===================================================================
--- pkg/trunk/mechanism/mechanism_control/mech.py 2008-08-20 23:52:08 UTC (rev 3379)
+++ pkg/trunk/mechanism/mechanism_control/mech.py 2008-08-21 00:02:57 UTC (rev 3380)
@@ -1,57 +0,0 @@
-#! /usr/bin/env python
-# Provides quick access to the services exposed by MechanismControlNode
-
-import rostools
-rostools.update_path('mechanism_control')
-
-import rospy, sys
-from mechanism_control.srv import *
-
-def print_usage(exit_code = 0):
- print '''Commands:
- lt - List controller Types
- lc - List active controllers
- sp - Spawn a controller using the xml passed over stdin
- kl <name> - Kills the controller named <name>'''
- sys.exit(exit_code)
-
-def list_controller_types():
- s = rospy.ServiceProxy('list_controller_types', ListControllerTypes)
- resp = s.call(ListControllerTypesRequest())
- for t in resp.types:
- print t
-
-def list_controllers():
- s = rospy.ServiceProxy('list_controllers', ListControllers)
- resp = s.call(ListControllersRequest())
- for c in resp.controllers:
- print c
-
-def spawn_controller():
- s = rospy.ServiceProxy('spawn_controller', SpawnController)
- resp = s.call(SpawnControllerRequest(sys.stdin.read()))
- if resp.ok == 1:
- print "Spawned successfully"
- else:
- print "Error when spawning", resp.ok
-
-def kill_controller(name):
- s = rospy.ServiceProxy('kill_controller', KillController)
- resp = s.call(KillControllerRequest(name))
- if resp.ok == 1:
- print "Killed %s successfully" % name
- else:
- print "Error when killing", resp.ok
-
-if __name__ == '__main__':
- if len(sys.argv) < 2:
- print_usage()
-
- if sys.argv[1] == 'lt':
- list_controller_types()
- elif sys.argv[1] == 'lc':
- list_controllers()
- elif sys.argv[1] == 'sp':
- spawn_controller()
- elif sys.argv[1] == 'kl':
- kill_controller(sys.argv[2])
Copied: pkg/trunk/mechanism/mechanism_control/scripts/controllers.py (from rev 3365, pkg/trunk/controllers/generic_controllers/controllers.py)
===================================================================
--- pkg/trunk/mechanism/mechanism_control/scripts/controllers.py (rev 0)
+++ pkg/trunk/mechanism/mechanism_control/scripts/controllers.py 2008-08-21 00:02:57 UTC (rev 3380)
@@ -0,0 +1,49 @@
+#! /usr/bin/env python
+
+import rostools
+rostools.update_path('mechanism_control')
+rostools.update_path('generic_controllers')
+
+
+import rospy, sys
+from mechanism_control.srv import *
+from generic_controllers.srv import *
+
+def print_usage(exit_code = 0):
+ print '''Commands:
+ ls - List controllers
+ set <controller> <command> - Set the contorller's commanded value
+ get <controller> - Get the contorller's commanded value'''
+ sys.exit(exit_code)
+
+def list_controllers():
+ s = rospy.ServiceProxy('list_controllers', ListControllers)
+ resp = s.call(ListControllersRequest())
+ for t in resp.controllers:
+ print t
+
+def set_controller(controller, command):
+ s = rospy.ServiceProxy(controller + '/set_command', SetCommand)
+ resp = s.call(SetCommandRequest(command))
+ print resp.command
+
+def get_controller(controller):
+ s = rospy.ServiceProxy(controller + '/get_actual', GetActual)
+ resp = s.call(GetActualRequest())
+ print str(resp.time) + ": " + str(resp.command)
+
+if __name__ == '__main__':
+ if len(sys.argv) == 1:
+ print_usage()
+ if sys.argv[1] == 'ls':
+ list_controllers()
+ elif sys.argv[1] == 'set':
+ if len(sys.argv) != 4:
+ print_usage()
+ set_controller(sys.argv[2], float(sys.argv[3]))
+ elif sys.argv[1] == 'get':
+ if len(sys.argv) != 3:
+ print_usage()
+ get_controller(sys.argv[2])
+ else:
+ print_usage(1)
Copied: pkg/trunk/mechanism/mechanism_control/scripts/mech.py (from rev 3365, pkg/trunk/mechanism/mechanism_control/mech.py)
===================================================================
--- pkg/trunk/mechanism/mechanism_control/scripts/mech.py (rev 0)
+++ pkg/trunk/mechanism/mechanism_control/scripts/mech.py 2008-08-21 00:02:57 UTC (rev 3380)
@@ -0,0 +1,57 @@
+#! /usr/bin/env python
+# Provides quick access to the services exposed by MechanismControlNode
+
+import rostools
+rostools.update_path('mechanism_control')
+
+import rospy, sys
+from mechanism_control.srv import *
+
+def print_usage(exit_code = 0):
+ print '''Commands:
+ lt - List controller Types
+ lc - List active controllers
+ sp - Spawn a controller using the xml passed over stdin
+ kl <name> - Kills the controller named <name>'''
+ sys.exit(exit_code)
+
+def list_controller_types():
+ s = rospy.ServiceProxy('list_controller_types', ListControllerTypes)
+ resp = s.call(ListControllerTypesRequest())
+ for t in resp.types:
+ print t
+
+def list_controllers():
+ s = rospy.ServiceProxy('list_controllers', ListControllers)
+ resp = s.call(ListControllersRequest())
+ for c in resp.controllers:
+ print c
+
+def spawn_controller():
+ s = rospy.ServiceProxy('spawn_controller', SpawnController)
+ resp = s.call(SpawnControllerRequest(sys.stdin.read()))
+ if resp.ok == 1:
+ print "Spawned successfully"
+ else:
+ print "Error when spawning", resp.ok
+
+def kill_controller(name):
+ s = rospy.ServiceProxy('kill_controller', KillController)
+ resp = s.call(KillControllerRequest(name))
+ if resp.ok == 1:
+ print "Killed %s successfully" % name
+ else:
+ print "Error when killing", resp.ok
+
+if __name__ == '__main__':
+ if len(sys.argv) < 2:
+ print_usage()
+
+ if sys.argv[1] == 'lt':
+ list_controller_types()
+ elif sys.argv[1] == 'lc':
+ list_controllers()
+ elif sys.argv[1] == 'sp':
+ spawn_controller()
+ elif sys.argv[1] == 'kl':
+ kill_controller(sys.argv[2])
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <is...@us...> - 2008-08-21 00:29:38
|
Revision: 3388
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3388&view=rev
Author: isucan
Date: 2008-08-21 00:29:48 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
setting queue size
Modified Paths:
--------------
pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/cnode.h
pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/knode.h
pkg/trunk/world_models/world_3d_map/src/world_3d_map.cpp
Modified: pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/cnode.h
===================================================================
--- pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/cnode.h 2008-08-21 00:29:05 UTC (rev 3387)
+++ pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/cnode.h 2008-08-21 00:29:48 UTC (rev 3388)
@@ -95,7 +95,7 @@
m_sphereSize = 0.03;
- m_node->subscribe("world_3d_map", m_worldCloud, &NodeCollisionModel::worldMapCallback, this);
+ m_node->subscribe("world_3d_map", m_worldCloud, &NodeCollisionModel::worldMapCallback, this, 1);
}
virtual ~NodeCollisionModel(void)
Modified: pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/knode.h
===================================================================
--- pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/knode.h 2008-08-21 00:29:05 UTC (rev 3387)
+++ pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/knode.h 2008-08-21 00:29:48 UTC (rev 3388)
@@ -91,7 +91,7 @@
m_basePos[0] = m_basePos[1] = m_basePos[2] = 0.0;
m_robotModelName = robot_model;
- m_node->subscribe("localizedpose", m_localizedPose, &NodeRobotModel::localizedPoseCallback, this);
+ m_node->subscribe("localizedpose", m_localizedPose, &NodeRobotModel::localizedPoseCallback, this, 1);
}
virtual ~NodeRobotModel(void)
Modified: pkg/trunk/world_models/world_3d_map/src/world_3d_map.cpp
===================================================================
--- pkg/trunk/world_models/world_3d_map/src/world_3d_map.cpp 2008-08-21 00:29:05 UTC (rev 3387)
+++ pkg/trunk/world_models/world_3d_map/src/world_3d_map.cpp 2008-08-21 00:29:48 UTC (rev 3388)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
/**
@mainpage
@@ -119,7 +121,7 @@
World3DMap(const std::string &robot_model) : ros::node("world_3d_map"),
planning_node_util::NodeRobotModel(dynamic_cast<ros::node*>(this), robot_model)
{
- advertise<std_msgs::PointCloudFloat32>("world_3d_map");
+ advertise<std_msgs::PointCloudFloat32>("world_3d_map", 1);
param("world_3d_map/max_publish_frequency", m_maxPublishFrequency, 0.5);
param("world_3d_map/retain_pointcloud_duration", m_retainPointcloudDuration, 60.0);
@@ -305,7 +307,7 @@
continue;
}
- rp.body->setScale(1.5);
+ rp.body->setScale(1.75);
m_selfSeeParts.push_back(rp);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hsu...@us...> - 2008-08-21 00:42:10
|
Revision: 3390
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3390&view=rev
Author: hsujohnhsu
Date: 2008-08-21 00:42:21 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
gripper sign error fix.
Modified Paths:
--------------
pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-21 00:39:49 UTC (rev 3389)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-21 00:42:21 UTC (rev 3390)
@@ -613,22 +613,22 @@
controller::JointPositionControllerNode* jpc = dynamic_cast<controller::JointPositionControllerNode*>(jc);
gripperCmd = jpc->getCommand();
- currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0])->GetAngle(),gripperCmd);
+ currentError = math_utils::shortest_angular_distance( gripperCmd,dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0])->GetAngle());
currentCmd = (*gji)->gaz_gripper_pids_[0]->updatePid(currentError,currentTime-lastTime);
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0])->SetParam( dParamVel, currentCmd );
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[0])->SetParam( dParamFMax, (*gji)->saturationTorque );
- currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1])->GetAngle(),-gripperCmd);
+ currentError = math_utils::shortest_angular_distance(-gripperCmd,dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1])->GetAngle());
currentCmd = (*gji)->gaz_gripper_pids_[1]->updatePid(currentError,currentTime-lastTime);
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1])->SetParam( dParamVel, currentCmd );
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[1])->SetParam( dParamFMax, (*gji)->saturationTorque );
- currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2])->GetAngle(),-gripperCmd);
+ currentError = math_utils::shortest_angular_distance(-gripperCmd,dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2])->GetAngle());
currentCmd = (*gji)->gaz_gripper_pids_[2]->updatePid(currentError,currentTime-lastTime);
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2])->SetParam( dParamVel, currentCmd );
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[2])->SetParam( dParamFMax, (*gji)->saturationTorque );
- currentError = math_utils::shortest_angular_distance(dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3])->GetAngle(),gripperCmd);
+ currentError = math_utils::shortest_angular_distance( gripperCmd,dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3])->GetAngle());
currentCmd = (*gji)->gaz_gripper_pids_[3]->updatePid(currentError,currentTime-lastTime);
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3])->SetParam( dParamVel, currentCmd );
dynamic_cast<gazebo::HingeJoint*>((*gji)->gaz_joints_[3])->SetParam( dParamFMax, (*gji)->saturationTorque );
Modified: pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml 2008-08-21 00:39:49 UTC (rev 3389)
+++ pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml 2008-08-21 00:42:21 UTC (rev 3390)
@@ -209,7 +209,7 @@
<!-- Special gripper joint -->
<controller name="gripper_left_controller" topic="gripper_left_controller" type="JointPositionControllerNode">
<joint name="gripper_left_joint">
- <pid p="20" d="0" i="0" iClamp="0" />
+ <pid p="1" d="0" i="0" iClamp="0" />
<gripper_defaults effortLimit="100" velocityLimit="10" />
<map name="gripper_joints" flag="gazebo">
<elem key="saturationTorque">100</elem>
@@ -297,7 +297,7 @@
<!-- Special gripper joint -->
<controller name="gripper_right_controller" topic="gripper_right_controller" type="JointPositionControllerNode">
<joint name="gripper_right_joint">
- <pid p="20" d="0" i="0" iClamp="0" />
+ <pid p="1" d="0" i="0" iClamp="0" />
<gripper_defaults effortLimit="100" velocityLimit="10" />
<map name="gripper_joints" flag="gazebo">
<elem key="saturationTorque">100</elem>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <is...@us...> - 2008-08-21 01:05:25
|
Revision: 3394
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3394&view=rev
Author: isucan
Date: 2008-08-21 01:05:27 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
some more (hopefully all) files I wrote up to now have my name in them ...
Modified Paths:
--------------
pkg/trunk/motion_planning/collision_space/include/collision_space/environment.h
pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h
pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h
pkg/trunk/motion_planning/collision_space/include/collision_space/util.h
pkg/trunk/motion_planning/collision_space/src/collision_space/environment.cpp
pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp
pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp
pkg/trunk/motion_planning/collision_space/test/test_util.cpp
pkg/trunk/motion_planning/kinematic_planning/include/SpaceInformationXMLModel.h
pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/environment2D.h
pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/grid.cpp
pkg/trunk/motion_planning/ompl/code/ompl/base/General.h
pkg/trunk/motion_planning/ompl/code/ompl/base/Planner.h
pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h
pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h
pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp
pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/time.cpp
pkg/trunk/motion_planning/ompl/code/ompl/base/util/time.h
pkg/trunk/motion_planning/ompl/code/ompl/base/util/types.h
pkg/trunk/motion_planning/ompl/code/ompl/datastructures/Grid.h
pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighbors.h
pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsLinear.h
pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsSqrtApprox.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/KinematicPathSmoother.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/LazyRRT.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/RRT.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/SBL.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/src/SBL.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp
pkg/trunk/motion_planning/planning_models/include/planning_models/kinematic.h
pkg/trunk/motion_planning/planning_models/src/planning_models/kinematic.cpp
pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/cnode.h
pkg/trunk/motion_planning/planning_node_util/include/planning_node_util/knode.h
pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp
pkg/trunk/motion_planning/test_collision_space/src/test_kinematic_ode.cpp
pkg/trunk/nav/fake_localization/fake_localization.cpp
pkg/trunk/robot_descriptions/wg_robot_description_parser/include/urdf/URDF.h
pkg/trunk/robot_descriptions/wg_robot_description_parser/run_valgrind.py
pkg/trunk/robot_descriptions/wg_robot_description_parser/src/URDF.cpp
pkg/trunk/robot_descriptions/wg_robot_description_parser/src/merge.cpp
pkg/trunk/robot_descriptions/wg_robot_description_parser/src/parse.cpp
pkg/trunk/robot_descriptions/wg_robot_description_parser/test/test_cpp_parser.cpp
pkg/trunk/util/math_utils/include/math_utils/MathExpression.h
pkg/trunk/util/math_utils/src/MathExpression.cpp
pkg/trunk/util/random_utils/include/random_utils/random_utils.h
pkg/trunk/util/random_utils/src/random_utils.cpp
pkg/trunk/util/rosTF/src/viewTF.cpp
Modified: pkg/trunk/motion_planning/collision_space/include/collision_space/environment.h
===================================================================
--- pkg/trunk/motion_planning/collision_space/include/collision_space/environment.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/include/collision_space/environment.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef COLLISION_SPACE_ENVIRONMENT_MODEL_
#define COLLISION_SPACE_ENVIRONMENT_MODEL_
Modified: pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h
===================================================================
--- pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/include/collision_space/environmentODE.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef COLLISION_SPACE_ENVIRONMENT_MODEL_ODE_
#define COLLISION_SPACE_ENVIRONMENT_MODEL_ODE_
Modified: pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h
===================================================================
--- pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/include/collision_space/environmentOctree.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan, Matei Ciocarlie */
+
#ifndef COLLISION_SPACE_ENVIRONMENT_MODEL_OCTREE_
#define COLLISION_SPACE_ENVIRONMENT_MODEL_OCTREE_
Modified: pkg/trunk/motion_planning/collision_space/include/collision_space/util.h
===================================================================
--- pkg/trunk/motion_planning/collision_space/include/collision_space/util.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/include/collision_space/util.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef COLLISION_SPACE_UTIL_
#define COLLISION_SPACE_UTIL_
Modified: pkg/trunk/motion_planning/collision_space/src/collision_space/environment.cpp
===================================================================
--- pkg/trunk/motion_planning/collision_space/src/collision_space/environment.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/src/collision_space/environment.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include <collision_space/environment.h>
unsigned int collision_space::EnvironmentModel::addRobotModel(planning_models::KinematicModel *model)
Modified: pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp
===================================================================
--- pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/src/collision_space/environmentODE.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include <collision_space/environmentODE.h>
void collision_space::EnvironmentModelODE::freeMemory(void)
Modified: pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp
===================================================================
--- pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/src/collision_space/environmentOctree.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan, Matei Ciocarlie */
+
#include <collision_space/environmentOctree.h>
unsigned int collision_space::EnvironmentModelOctree::addRobotModel(planning_models::KinematicModel *model)
Modified: pkg/trunk/motion_planning/collision_space/test/test_util.cpp
===================================================================
--- pkg/trunk/motion_planning/collision_space/test/test_util.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/collision_space/test/test_util.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include <collision_space/util.h>
#include <gtest/gtest.h>
Modified: pkg/trunk/motion_planning/kinematic_planning/include/SpaceInformationXMLModel.h
===================================================================
--- pkg/trunk/motion_planning/kinematic_planning/include/SpaceInformationXMLModel.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/kinematic_planning/include/SpaceInformationXMLModel.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include <ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h>
#include <planning_models/kinematic.h>
Modified: pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
===================================================================
--- pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
/**
@mainpage
Modified: pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/environment2D.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/environment2D.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/environment2D.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,11 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
+#ifndef ENVIDONMENT_2D_
+#define ENVIDONMENT_2D_
+
#include <fstream>
#include <vector>
#include <string>
@@ -113,3 +118,5 @@
out << std::endl;
}
}
+
+#endif
Modified: pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/grid.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/grid.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/examples/samplingbased/kinematic/grid/grid.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include "ompl/extension/samplingbased/kinematic/extension/rrt/RRT.h"
#include "ompl/extension/samplingbased/kinematic/extension/rrt/LazyRRT.h"
#include "environment2D.h"
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/General.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/General.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/General.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_BASE_GENERAL_
#define OMPL_BASE_GENERAL_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/Planner.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/Planner.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/Planner.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_BASE_MOTION_PLANNER_
#define OMPL_BASE_MOTION_PLANNER_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_BASE_SPACE_INFORMATION_
#define OMPL_BASE_SPACE_INFORMATION_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -1,6 +1,8 @@
#ifndef OMPL_RANDOM_
#define OMPL_RANDOM_
+/** \Author Ioan Sucan (adaptation from ROS) */
+
namespace ompl
{
namespace random_utils
@@ -35,6 +37,10 @@
double bounded_gaussian(double mean, double stddev, double max_stddev);
double bounded_gaussian(rngState *state, double mean, double stddev,
double max_stddev);
+
+ /** Random quaternion generator */
+ void quaternion(double value[4]);
+ void quaternion(rngState* state, double value[4]);
}
}
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -1,3 +1,39 @@
+/*********************************************************************
+* Software License Agreement (BSD License)
+*
+* Copyright (c) 2008, Willow Garage, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of the Willow Garage nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*********************************************************************/
+
+/** \Author Ioan Sucan (adaptation from ROS) */
+
#include <cstdio>
#include <cstdlib>
#include <cmath>
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/time.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/time.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/time.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -1,3 +1,39 @@
+/*********************************************************************
+* Software License Agreement (BSD License)
+*
+* Copyright (c) 2008, Willow Garage, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of the Willow Garage nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*********************************************************************/
+
+/** This file is taken from ROS, adaptations by Ioan Sucan */
+
#include "ompl/base/util/time.h"
#include <cmath>
#include <time.h>
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/util/time.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/util/time.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/util/time.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -36,6 +36,8 @@
#ifndef OMPL_TIME_
#define OMPL_TIME_
+/** This file is taken from ROS, adaptations by Ioan Sucan */
+
#include <iostream>
#include <cmath>
#include "ompl/base/util/types.h"
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/util/types.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/util/types.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/util/types.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** This file is taken from ROS */
+
#ifndef OMPL_TYPES_
#define OMPL_TYPES_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/datastructures/Grid.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/datastructures/Grid.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/datastructures/Grid.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_DATASTRUCTURES_GRID_
#define OMPL_DATASTRUCTURES_GRID_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighbors.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighbors.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighbors.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_DATASTRUCTURES_NEAREST_NEIGHBORS_
#define OMPL_DATASTRUCTURES_NEAREST_NEIGHBORS_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsLinear.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsLinear.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsLinear.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_DATASTRUCTURES_NEAREST_NEIGHBORS_LINEAR_
#define OMPL_DATASTRUCTURES_NEAREST_NEIGHBORS_LINEAR_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsSqrtApprox.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsSqrtApprox.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/datastructures/NearestNeighborsSqrtApprox.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_DATASTRUCTURES_NEAREST_NEIGHBORS_SQRT_APPROX_
#define OMPL_DATASTRUCTURES_NEAREST_NEIGHBORS_SQRT_APPROX_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/KinematicPathSmoother.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/KinematicPathSmoother.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/KinematicPathSmoother.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_KINEMATIC_PATH_SMOOTHER_
#define OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_KINEMATIC_PATH_SMOOTHER_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_SPACE_INFORMATION_KINEMATIC_
#define OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_SPACE_INFORMATION_KINEMATIC_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/LazyRRT.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/LazyRRT.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/LazyRRT.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_EXTENSION_LAZY_RRT_
#define OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_EXTENSION_LAZY_RRT_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/RRT.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/RRT.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/RRT.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_EXTENSION_RRT_
#define OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_EXTENSION_RRT_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/LazyRRT.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include "ompl/extension/samplingbased/kinematic/extension/rrt/LazyRRT.h"
#include <cassert>
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/rrt/src/RRT.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include "ompl/extension/samplingbased/kinematic/extension/rrt/RRT.h"
bool ompl::RRT::solve(double solveTime)
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/SBL.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/SBL.h 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/SBL.h 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#ifndef OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_EXTENSION_SBL_
#define OMPL_EXTENSION_SAMPLINGBASED_KINEMATIC_EXTENSION_SBL_
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/src/SBL.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/src/SBL.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/extension/sbl/src/SBL.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include "ompl/extension/samplingbased/kinematic/extension/sbl/SBL.h"
bool ompl::SBL::solve(double solveTime)
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/KinematicPathSmoother.cpp 2008-08-21 01:05:27 UTC (rev 3394)
@@ -32,6 +32,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
+/** \Author Ioan Sucan */
+
#include "ompl/extension/samplingbased/kinematic/KinematicPathSmoother.h"
#include "ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h"
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-21 00:56:06 UTC (rev 3393)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-21 01...
[truncated message content] |
|
From: <is...@us...> - 2008-08-21 01:11:39
|
Revision: 3395
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3395&view=rev
Author: isucan
Date: 2008-08-21 01:11:49 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
few more updates
Modified Paths:
--------------
pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h
pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp
pkg/trunk/util/random_utils/src/test.cpp
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h 2008-08-21 01:05:27 UTC (rev 3394)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/util/random.h 2008-08-21 01:11:49 UTC (rev 3395)
@@ -24,12 +24,15 @@
void random_init(rngState *state);
/** Uniform random number generator */
- double uniform(double lower_bound, double upper_bound);
- double uniform(rngState *state, double lower_bound, double upper_bound);
-
+ double uniform(double lower_bound = 0.0, double upper_bound = 1.0);
+ double uniform(rngState *state, double lower_bound = 0.0, double upper_bound = 1.0);
+
int uniformInt(int lower_bound, int upper_bound);
int uniformInt(rngState *state, int lower_bound, int upper_bound);
+ bool uniformBool(void);
+ bool uniformBool(rngState *state);
+
/** Gaussian random number generator */
double gaussian(double mean, double stddev);
double gaussian(rngState *state, double mean, double stddev);
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp 2008-08-21 01:05:27 UTC (rev 3394)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/util/src/random.cpp 2008-08-21 01:11:49 UTC (rev 3395)
@@ -42,9 +42,11 @@
#include "ompl/base/util/random.h"
+static ompl::random_utils::rngState rState;
+
void ompl::random_utils::random_init(void)
{
- srandom(time(NULL));
+ random_init(&rState);
}
void ompl::random_utils::random_init(rngState *state)
@@ -65,14 +67,11 @@
double ompl::random_utils::uniform(double lower_bound, double upper_bound)
{
- double r = (double)random();
- return (upper_bound - lower_bound)
- * r / ((double)(RAND_MAX) + 1.0)
- + lower_bound;
+ return uniform(&rState, lower_bound, upper_bound);
}
double ompl::random_utils::uniform(rngState *state, double lower_bound,
- double upper_bound)
+ double upper_bound)
{
return (upper_bound - lower_bound)
* (double)rand_r(&state->seed) / ((double)(RAND_MAX) + 1.0)
@@ -81,27 +80,28 @@
int ompl::random_utils::uniformInt(int lower_bound, int upper_bound)
{
- return (int)ompl::random_utils::uniform((double)lower_bound,
- (double)(upper_bound + 1));
+ return uniformInt(&rState, lower_bound, upper_bound);
}
int ompl::random_utils::uniformInt(rngState *state, int lower_bound, int upper_bound)
{
return (int)ompl::random_utils::uniform(state, (double)lower_bound,
- (double)(upper_bound + 1));
+ (double)(upper_bound + 1));
}
+bool ompl::random_utils::uniformBool(void)
+{
+ return uniformBool(&rState);
+}
+
+bool ompl::random_utils::uniformBool(rngState *state)
+{
+ return uniform(state, 0.0, 1.0) <= 0.5;
+}
+
double ompl::random_utils::gaussian(double mean, double stddev)
{
- double x1, x2, w;
- do
- {
- x1 = ompl::random_utils::uniform(-1, 1);
- x2 = ompl::random_utils::uniform(-1, 1);
- w = x1*x1 + x2*x2;
- } while (w >= 1.0 || w == 0.0);
- w = sqrt(-2.0 * log(w) / w);
- return x1 * w * stddev + mean;
+ return gaussian(&rState, mean, stddev);
}
double ompl::random_utils::gaussian(rngState *state, double mean, double stddev)
@@ -117,9 +117,9 @@
double x1, x2, w;
do
{
- x1 = ompl::random_utils::uniform(-1, 1);
- x2 = ompl::random_utils::uniform(-1, 1);
- w = x1*x1 + x2*x2;
+ x1 = uniform(state, -1.0, 1.0);
+ x2 = uniform(state, -1.0, 1.0);
+ w = x1 * x1 + x2 * x2;
} while (w >= 1.0 || w == 0.0);
w = sqrt(-2.0 * log(w) / w);
state->gaussian.valid = true;
@@ -129,23 +129,38 @@
}
double ompl::random_utils::bounded_gaussian(double mean, double stddev,
- double max_stddev)
+ double max_stddev)
{
- double sample, max_s = max_stddev * stddev;
- do
- {
- sample = ompl::random_utils::gaussian(mean, stddev);
- } while (fabs(sample - mean) > max_s);
- return sample;
+ return bounded_gaussian(&rState, mean, stddev, max_stddev);
}
double ompl::random_utils::bounded_gaussian(rngState *state, double mean,
- double stddev, double max_stddev)
+ double stddev, double max_stddev)
{
double sample, max_s = max_stddev * stddev;
do
{
- sample = ompl::random_utils::gaussian(state, mean, stddev);
+ sample = gaussian(state, mean, stddev);
} while (fabs(sample - mean) > max_s);
return sample;
}
+
+// From: "Uniform Random Rotations", Ken Shoemake, Graphics Gems III,
+// pg. 124-132
+void ompl::random_utils::quaternion(double value[4])
+{
+ quaternion(&rState, value);
+}
+
+void ompl::random_utils::quaternion(rngState* state, double value[4])
+{
+ double x0 = uniform(state);
+ double r1 = sqrt(1.0 - x0), r2 = sqrt(x0);
+ double t1 = 2.0 * M_PI * uniform(state), t2 = 2.0 * M_PI * uniform(state);
+ double c1 = cos(t1), s1 = sin(t1);
+ double c2 = cos(t2), s2 = sin(t2);
+ value[0] = s1 * r1;
+ value[1] = c1 * r1;
+ value[2] = s2 * r2;
+ value[3] = c2 * r2;
+}
Modified: pkg/trunk/util/random_utils/src/test.cpp
===================================================================
--- pkg/trunk/util/random_utils/src/test.cpp 2008-08-21 01:05:27 UTC (rev 3394)
+++ pkg/trunk/util/random_utils/src/test.cpp 2008-08-21 01:11:49 UTC (rev 3395)
@@ -1,3 +1,39 @@
+/*********************************************************************
+* Software License Agreement (BSD License)
+*
+* Copyright (c) 2008, Willow Garage, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of the Willow Garage nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*********************************************************************/
+
+/** \Author Ioan Sucan */
+
#include <cstdio>
#include <cstdlib>
#include <cmath>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sf...@us...> - 2008-08-21 17:07:28
|
Revision: 3411
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3411&view=rev
Author: sfkwc
Date: 2008-08-21 17:07:37 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
licenses TBD->BSD
Modified Paths:
--------------
pkg/trunk/deprecated/rosControllers/manifest.xml
pkg/trunk/manip/arm_trajectory/manifest.xml
pkg/trunk/robot_control_loops/pr2_gazebo/manifest.xml
pkg/trunk/simulators/rosgazebo/manifest.xml
Modified: pkg/trunk/deprecated/rosControllers/manifest.xml
===================================================================
--- pkg/trunk/deprecated/rosControllers/manifest.xml 2008-08-21 16:32:04 UTC (rev 3410)
+++ pkg/trunk/deprecated/rosControllers/manifest.xml 2008-08-21 17:07:37 UTC (rev 3411)
@@ -1,7 +1,7 @@
<package>
<description>ROS wrapper[s] that does the communications for [Joint]Controllers.</description>
<author>John M. Hsu</author>
- <license>TBD</license>
+ <license>BSD</license>
<depend package="roscpp" />
<depend package="genericControllers" />
<depend package="pr2Controllers" />
Modified: pkg/trunk/manip/arm_trajectory/manifest.xml
===================================================================
--- pkg/trunk/manip/arm_trajectory/manifest.xml 2008-08-21 16:32:04 UTC (rev 3410)
+++ pkg/trunk/manip/arm_trajectory/manifest.xml 2008-08-21 17:07:37 UTC (rev 3411)
@@ -1,7 +1,7 @@
<package>
<description>A ROS node that sends out a sample trajectory for PR2 arm.</description>
<author>John M. Hsu</author>
- <license>TBD</license>
+ <license>BSD</license>
<depend package="roscpp" />
<depend package="std_msgs" />
<depend package="rosthread" />
Modified: pkg/trunk/robot_control_loops/pr2_gazebo/manifest.xml
===================================================================
--- pkg/trunk/robot_control_loops/pr2_gazebo/manifest.xml 2008-08-21 16:32:04 UTC (rev 3410)
+++ pkg/trunk/robot_control_loops/pr2_gazebo/manifest.xml 2008-08-21 17:07:37 UTC (rev 3411)
@@ -5,7 +5,7 @@
Start api interfaces for non-RT control in a ros node.
</description>
<author>John M. Hsu</author>
- <license>TBD</license>
+ <license>BSD</license>
<depend package="roscpp" />
<depend package="libpr2API" />
<depend package="genericControllers" />
Modified: pkg/trunk/simulators/rosgazebo/manifest.xml
===================================================================
--- pkg/trunk/simulators/rosgazebo/manifest.xml 2008-08-21 16:32:04 UTC (rev 3410)
+++ pkg/trunk/simulators/rosgazebo/manifest.xml 2008-08-21 17:07:37 UTC (rev 3411)
@@ -1,7 +1,7 @@
<package>
<description>A ROS node that wraps up the Gazebo robot simulator.</description>
<author>John M. Hsu</author>
- <license>TBD</license>
+ <license>BSD</license>
<depend package="roscpp" />
<depend package="gazebo" />
<depend package="gazebo_plugin" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pof...@us...> - 2008-08-21 20:00:39
|
Revision: 3420
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3420&view=rev
Author: poftwaresatent
Date: 2008-08-21 20:00:48 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
Updated the "trio" of E*/sfl/npm. The latter is now using GNU Automake
for ROS, the CMakeLists approach was simply too unstable (maintaining
two build systems is a pain).
Modified Paths:
--------------
pkg/trunk/3rdparty/estar/Makefile
pkg/trunk/3rdparty/libsunflower/Makefile
pkg/trunk/simulators/nepumuk/Makefile
Removed Paths:
-------------
pkg/trunk/simulators/nepumuk/CMakeLists.txt
Modified: pkg/trunk/3rdparty/estar/Makefile
===================================================================
--- pkg/trunk/3rdparty/estar/Makefile 2008-08-21 18:56:37 UTC (rev 3419)
+++ pkg/trunk/3rdparty/estar/Makefile 2008-08-21 20:00:48 UTC (rev 3420)
@@ -36,10 +36,15 @@
$(MAKE) -C $(BUILD_DIR) install
.PHONY: svn-all
-svn-all:
- test -d $(SVN_DIR) || svn co -r$(SVN_REV) $(SVN_URL) $(SVN_DIR)
+svn-all: checkout
$(MAKE) SOURCE_DIR=$(SVN_DIR) really-all
+checkout:
+ test -d $(SVN_DIR) || svn co -r$(SVN_REV) $(SVN_URL) $(SVN_DIR)
+
+update: checkout
+ test -d $(SVN_DIR) && svn up $(SVN_DIR)
+
.PHONY: tarball-all
tarball-all: $(SOURCE_DIR)
$(MAKE) really-all
Modified: pkg/trunk/3rdparty/libsunflower/Makefile
===================================================================
--- pkg/trunk/3rdparty/libsunflower/Makefile 2008-08-21 18:56:37 UTC (rev 3419)
+++ pkg/trunk/3rdparty/libsunflower/Makefile 2008-08-21 20:00:48 UTC (rev 3420)
@@ -16,7 +16,7 @@
all: tarball-all
-VERSION= r903
+VERSION= r910
TARBALL= libsunflower-$(VERSION).tar.gz
TARBALL_URL= http://downloads.sourceforge.net/libsunflower/$(TARBALL)
@@ -38,10 +38,15 @@
$(MAKE) -C $(BUILD_DIR) install
.PHONY: svn-all
-svn-all:
- test -d $(SVN_DIR) || svn co -r$(SVN_REV) $(SVN_URL) $(SVN_DIR)
+svn-all: checkout
$(MAKE) SOURCE_DIR=$(SVN_DIR) really-all
+checkout:
+ test -d $(SVN_DIR) || svn co -r$(SVN_REV) $(SVN_URL) $(SVN_DIR)
+
+update: checkout
+ test -d $(SVN_DIR) && svn up $(SVN_DIR)
+
.PHONY: tarball-all
tarball-all: $(SOURCE_DIR)
$(MAKE) really-all
Deleted: pkg/trunk/simulators/nepumuk/CMakeLists.txt
===================================================================
--- pkg/trunk/simulators/nepumuk/CMakeLists.txt 2008-08-21 18:56:37 UTC (rev 3419)
+++ pkg/trunk/simulators/nepumuk/CMakeLists.txt 2008-08-21 20:00:48 UTC (rev 3420)
@@ -1,146 +0,0 @@
-### Simplified CMake build file for ROSified nepumuk.
-
-# depends on:
-# - GL, GLU, GLUT
-# - libsunflower ros-pkg
-# - boost ros-pkg
-#
-# later (optional?) code will depend on:
-# - estar ros-pkg
-# - asl-mplan future ros-pkg
-# - asl-mcontrol future ros-pkg
-
-cmake_minimum_required(VERSION 2.6)
-include(rosbuild)
-
-rospack(nepumuk)
-
-SET (ROS_BUILD_TYPE Debug)
-SET (ROS_BUILD_STATIC_EXES false)
-SET (ROS_BUILD_SHARED_LIBS true)
-SET (ROS_BUILD_STATIC_LIBS false)
-
-IF (WIN32)
- MESSAGE (STATUS "Detected Microsoft Windows")
- SET (ROS_COMPILE_FLAGS "-DWIN32 -Wall -DNPM_HAVE_ROS")
-ELSE (WIN32)
- IF (APPLE)
- MESSAGE (STATUS "Detected Mac OS X")
- SET (ROS_COMPILE_FLAGS "-DOSX -Wall -DNPM_HAVE_ROS")
- ENDIF (APPLE)
-
- IF (CMAKE_SYSTEM_NAME MATCHES Linux)
- MESSAGE (STATUS "Detected Linux")
- SET (ROS_COMPILE_FLAGS "-DLINUX -Wall -DNPM_HAVE_ROS")
- ENDIF (CMAKE_SYSTEM_NAME MATCHES Linux)
-
- IF (CMAKE_SYSTEM_NAME MATCHES OpenBSD)
- MESSAGE (STATUS "Detected OpenBSD")
- SET (ROS_COMPILE_FLAGS "-DOPENBSD -Wall -DNPM_HAVE_ROS")
- ENDIF (CMAKE_SYSTEM_NAME MATCHES OpenBSD)
-ENDIF(WIN32)
-
-SET (ROS_LINK_FLAGS "")
-
-rospack_add_executable(nepumuk src/simul/nepumuk.cpp)
-rospack_add_executable(simpletest src/ros/test.cpp)
-
-
-
-SET (CMAKE_VERBOSE_MAKEFILE ON)
-
-INCLUDE (FindOpenGL)
-IF (OPENGL_FOUND)
- MESSAGE (STATUS "Found OpenGL")
-ELSE (OPENGL_FOUND)
- MESSAGE (FATAL_ERROR "OpenGL not found")
-ENDIF (OPENGL_FOUND)
-IF (OPENGL_GLU_FOUND)
- MESSAGE (STATUS "Found GLU")
-ELSE (OPENGL_GLU_FOUND)
- MESSAGE (FATAL_ERROR "GLU not found")
-ENDIF (OPENGL_GLU_FOUND)
-INCLUDE_DIRECTORIES (${OPENGL_INCLUDE_DIR})
-
-INCLUDE (FindGLUT)
-IF (GLUT_FOUND)
- MESSAGE (STATUS "Found GLUT")
-ELSE (GLUT_FOUND)
- MESSAGE (FATAL_ERROR "GLUT not found")
-ENDIF (GLUT_FOUND)
-INCLUDE_DIRECTORIES (${GLUT_INCLUDE_DIR})
-
-INCLUDE (FindThreads)
-IF (CMAKE_USE_PTHREADS_INIT)
- MESSAGE (STATUS "Found pthreads")
-ELSE (CMAKE_USE_PTHREADS_INIT)
- MESSAGE (FATAL_ERROR "Sorry for the moment libsunflower still seems to need pthreads...")
-ENDIF (CMAKE_USE_PTHREADS_INIT)
-
-
-rospack_add_library (npm
- src/common/BBox.cpp
- src/common/BicycleDrive.cpp
- src/common/BicycleDriveDrawing.cpp
- src/common/Camera.cpp
- src/common/CheatSheet.cpp
- src/common/DiffDrive.cpp
- src/common/DiffDriveDrawing.cpp
- src/common/Drawing.cpp
- src/common/Drive.cpp
- src/common/Globals.cpp
- src/common/GoalInstanceDrawing.cpp
- src/common/HAL.cpp
- src/common/HoloDrive.cpp
- src/common/HoloDriveDrawing.cpp
- src/common/Lidar.cpp
- src/common/Manageable.cpp
- src/common/Manager.cpp
- src/common/MapperRefDrawing.cpp
- src/common/MapperUpdateDrawing.cpp
- src/common/NoiseModel.cpp
- src/common/Object.cpp
- src/common/OdometryDrawing.cpp
- src/common/RobotClient.cpp
- src/common/RobotDescriptor.cpp
- src/common/RobotDrawing.cpp
- src/common/RobotServer.cpp
- src/common/RobotZoomCamera.cpp
- src/common/ScannerDrawing.cpp
- src/common/Sensor.cpp
- src/common/Sharp.cpp
- src/common/SharpDrawing.cpp
- src/common/SimpleImage.cpp
- src/common/StillCamera.cpp
- src/common/TrajectoryDrawing.cpp
- src/common/TraversabilityDrawing.cpp
- src/common/View.cpp
- src/common/World.cpp
- src/common/WorldCamera.cpp
- src/common/WorldDrawing.cpp
- src/common/trfct.cpp
- src/common/wrap_glu.cpp
- src/robox/BBDrawing.cpp
- src/robox/BLDrawing.cpp
- src/robox/DODrawing.cpp
- src/robox/DWDrawing.cpp
- src/robox/GridLayerCamera.cpp
- src/robox/GridLayerDrawing.cpp
- src/robox/MPDrawing.cpp
- src/robox/OCamera.cpp
- src/robox/ODrawing.cpp
- src/robox/RHDrawing.cpp
- src/robox/Robox.cpp
- src/visitor/Visitor.cpp
- src/ros/ROSbot.cpp
- src/simul/Interlock.cpp
- src/simul/RobotFactory.cpp
- src/simul/Simulator.cpp)
-
-INCLUDE_DIRECTORIES (.)
-
-TARGET_LINK_LIBRARIES (nepumuk npm sunflower
- ${GLUT_LIBRARIES}
- ${OPENGL_glu_LIBRARY}
- ${OPENGL_gl_LIBRARY}
- pthread)
Modified: pkg/trunk/simulators/nepumuk/Makefile
===================================================================
--- pkg/trunk/simulators/nepumuk/Makefile 2008-08-21 18:56:37 UTC (rev 3419)
+++ pkg/trunk/simulators/nepumuk/Makefile 2008-08-21 20:00:48 UTC (rev 3420)
@@ -19,52 +19,70 @@
all: tarball-all
-SVN_DIR= $(PWD)/nepumuk-svn
-SVN_REV= HEAD
-SVN_URL= https://libsunflower.svn.sourceforge.net/svnroot/libsunflower/trunk/nepumuk
+VERSION= r912
-VERSION= r903
-
TARBALL= nepumuk-$(VERSION).tar.gz
TARBALL_URL= http://downloads.sourceforge.net/libsunflower/$(TARBALL)
SOURCE_DIR= $(PWD)/nepumuk-$(VERSION)
UNPACK_CMD= tar xfz
+BUILD_DIR= $(PWD)/build
+INST_DIR= $(PWD)/local
+ESTAR_DIR= `rospack find estar`/local
+SFL_DIR= `rospack find libsunflower`/local
+BOOST_DIR= `rospack --cflags-only-I boost`
-SYMLINK= npm
-SYMTARGET= $(SOURCE_DIR)
+SVN_DIR= $(PWD)/nepumuk-svn
+SVN_REV= HEAD
+SVN_URL= https://libsunflower.svn.sourceforge.net/svnroot/libsunflower/trunk/nepumuk
+SIMULINKS= nepumuk rostest ros0.sh robots.ros0 layout.ros0 expodemo.sh robots.expo layout.expo
+
+
include $(shell rospack find mk)/download_unpack.mk
-.PHONY: really-all tarball-all svn-all checkout
-
+.PHONY: svn-all
svn-all: checkout
$(MAKE) SOURCE_DIR=$(SVN_DIR) really-all
+.PHONY: tarball-all
tarball-all: $(SOURCE_DIR)
$(MAKE) really-all
-rebuild: clean really-all
+rebuild: wipe really-all
-really-all: symlinks build/Makefile
- test -d build || mkdir build
- $(MAKE) -C build
+.PHONY: really-all
+really-all: $(SOURCE_DIR)/configure $(BUILD_DIR)/config.h
+ $(MAKE) -C $(BUILD_DIR) install
+ $(MAKE) symlinks
checkout:
test -d $(SVN_DIR) || svn co -r$(SVN_REV) $(SVN_URL) $(SVN_DIR)
+update: checkout
+ test -d $(SVN_DIR) && svn up $(SVN_DIR)
+
symlinks:
- $(MAKE) SYMLINK=src SYMTARGET=$(SOURCE_DIR) symlink
- $(MAKE) SYMLINK=npm SYMTARGET=$(SOURCE_DIR) symlink
- $(MAKE) SYMLINK=ros0.sh SYMTARGET=$(SOURCE_DIR)/simul/ros0.sh symlink
- $(MAKE) SYMLINK=robots.ros0 SYMTARGET=$(SOURCE_DIR)/simul/robots.ros0 symlink
- $(MAKE) SYMLINK=layout.ros0 SYMTARGET=$(SOURCE_DIR)/simul/layout.ros0 symlink
+ for foo in $(SIMULINKS); do \
+ test -L $$foo || ln -s $(INST_DIR)/bin/$$foo || exit 42; done
-symlink:
- test -L $(SYMLINK) || ln -s $(SYMTARGET) $(SYMLINK)
+$(SOURCE_DIR)/configure: $(SOURCE_DIR)/configure.ac $(SOURCE_DIR)/bootstrap-buildsystem.sh
+ cd $(SOURCE_DIR) && ./bootstrap-buildsystem.sh
-build/Makefile: CMakeLists.txt manifest.xml
- mkdir -p build
- cd build && `rospack find cmake`/cmake/bin/cmake -DCMAKE_TOOLCHAIN_FILE=`rospack find rosbuild`/rostoolchain.cmake ..
+$(BUILD_DIR)/config.h: $(SOURCE_DIR)/configure $(SOURCE_DIR)/config.h.in
+ test -d $(BUILD_DIR) || mkdir -p $(BUILD_DIR)
+ cd $(BUILD_DIR) && $(SOURCE_DIR)/configure --prefix=$(INST_DIR) \
+ --enable-ros \
+ --with-sfl=$(SFL_DIR) \
+ --with-estar=$(ESTAR_DIR) \
+ --with-boost=$(BOOST_DIR)
clean:
- rm -rf lib build npm ros0.sh robots.ros0 layout.ros0
+ - rm $(SIMULINKS)
+ $(MAKE) -C $(BUILD_DIR) clean
+
+distclean:
+ - rm $(SIMULINKS)
+ $(MAKE) -C $(BUILD_DIR) distclean
+
+wipe:
+ rm -rf $(BUILD_DIR) $(INST_DIR)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <is...@us...> - 2008-08-21 20:28:16
|
Revision: 3424
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3424&view=rev
Author: isucan
Date: 2008-08-21 20:28:21 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
printing goals added to ompl, multiple runs option in kinematic planning
Modified Paths:
--------------
pkg/trunk/motion_planning/kinematic_planning/manifest.xml
pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
pkg/trunk/motion_planning/ompl/code/ompl/base/General.h
pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h
pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp
pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp
pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv
pkg/trunk/robot_srvs/srv/KinematicPlanState.srv
Modified: pkg/trunk/motion_planning/kinematic_planning/manifest.xml
===================================================================
--- pkg/trunk/motion_planning/kinematic_planning/manifest.xml 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/kinematic_planning/manifest.xml 2008-08-21 20:28:21 UTC (rev 3424)
@@ -7,4 +7,5 @@
<depend package="robot_srvs" />
<depend package="planning_node_util" />
<depend package="ompl" />
+ <depend package="gtest" />
</package>
Modified: pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp
===================================================================
--- pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/kinematic_planning/src/kinematic_planning.cpp 2008-08-21 20:28:21 UTC (rev 3424)
@@ -112,7 +112,12 @@
planning_node_util::NodeCollisionModel(dynamic_cast<ros::node*>(this),
robot_model)
{
- advertise_service("plan_kinematic_path", &KinematicPlanning::plan);
+ advertise_service("plan_kinematic_path_state", &KinematicPlanning::plan);
+
+
+ double sphere[3] = {0.7, 0.5, 0.7 };
+ m_collisionSpace->addPointCloud(1, sphere, 0.2);
+
}
~KinematicPlanning(void)
@@ -125,7 +130,7 @@
{
if (m_models.find(req.model_id) == m_models.end())
{
- fprintf(stderr, "Cannot plan for '%s'. Model does not exist\n", req.model_id.c_str());
+ std::cerr << "Cannot plan for '" << req.model_id << "'. Model does not exist" << std::endl;
return false;
}
@@ -134,28 +139,35 @@
if (m->kmodel->stateDimension != req.start_state.get_vals_size())
{
- fprintf(stderr, "Dimension of start state expected to be %u but was received as %u\n", m->kmodel->stateDimension, req.start_state.get_vals_size());
+ std::cerr << "Dimension of start state expected to be " << m->kmodel->stateDimension << " but was received as " << req.start_state.get_vals_size() << std::endl;
return false;
}
-
+
const int dim = req.goal_state.get_vals_size();
if ((int)p.si->getStateDimension() != dim)
{
- fprintf(stderr, "Dimension of goal state expected to be %u but was received as %d\n", p.si->getStateDimension(), dim);
+ std::cerr << "Dimension of start goal expected to be " << p.si->getStateDimension() << " but was received as " << dim << std::endl;
return false;
}
+ if (req.times <= 0)
+ {
+ std::cerr << "Request specifies motion plan should be computed " << req.times << " times" << std::endl;
+ return false;
+ }
+
+
/* set the workspace volume for planning */
// only area or volume should go through... not sure what happens on really complicated models where
// we have both multiple planar and multiple floating joints...
static_cast<SpaceInformationXMLModel*>(p.si)->setPlanningArea(req.volumeMin.x, req.volumeMin.y,
req.volumeMax.x, req.volumeMax.y);
- static_cast<SpaceInformationXMLModel*>(p.si)->setPlanningVolume(req.volumeMin.x, req.volumeMin.y, req.volumeMin.z,
+ static_cast<SpaceInformationXMLModel*>(p.si)->setPlanningVolume(req.volumeMin.x, req.volumeMin.y, req.volumeMin.z,
req.volumeMax.x, req.volumeMax.y, req.volumeMax.z);
-
+
/* set the starting state */
- ompl::SpaceInformationKinematic::StateKinematic_t start = new ompl::SpaceInformationKinematic::StateKinematic(dim);
-
+ ompl::SpaceInformationKinematic::StateKinematic_t start = new ompl::SpaceInformationKinematic::StateKinematic(dim);
+
if (m->groupID >= 0)
{
/* set the pose of the whole robot */
@@ -168,6 +180,7 @@
}
else
{
+ /* the start state is the complete state */
for (int i = 0 ; i < dim ; ++i)
start->values[i] = req.start_state.vals[i];
}
@@ -186,41 +199,60 @@
p.si->printSettings();
printf("=======================================\n");
+
/* do the planning */
+ ompl::SpaceInformationKinematic::PathKinematic_t bestPath = NULL;
+ double bestDifference = 0.0;
+ double totalTime = 0.0;
+
m_collisionSpace->lock();
- ros::Time startTime = ros::Time::now();
- bool ok = p.mp->solve(req.allowed_time);
- double tsolve = (ros::Time::now() - startTime).to_double();
- printf("Motion planner spent %f seconds\n", tsolve);
-
- /* do path smoothing */
- if (ok)
+ for (int i = 0 ; i < req.times ; ++i)
{
ros::Time startTime = ros::Time::now();
- ompl::SpaceInformationKinematic::PathKinematic_t path = static_cast<ompl::SpaceInformationKinematic::PathKinematic_t>(goal->getSolutionPath());
- p.smoother->smoothVertices(path);
- double tsmooth = (ros::Time::now() - startTime).to_double();
- printf("Smoother spent %f seconds (%f seconds in total)\n", tsmooth, tsmooth + tsolve);
- if (req.interpolate)
- p.si->interpolatePath(path);
- }
+ bool ok = p.mp->solve(req.allowed_time);
+ double tsolve = (ros::Time::now() - startTime).to_double();
+ std::cout << (ok ? "[Success]" : "[Failure]") << " Motion planner spent " << tsolve << " seconds" << std::endl;
+ totalTime += tsolve;
+
+ /* do path smoothing */
+ if (ok)
+ {
+ ros::Time startTime = ros::Time::now();
+ ompl::SpaceInformationKinematic::PathKinematic_t path = static_cast<ompl::SpaceInformationKinematic::PathKinematic_t>(goal->getSolutionPath());
+ p.smoother->smoothVertices(path);
+ double tsmooth = (ros::Time::now() - startTime).to_double();
+ std::cout << " Smoother spent " << tsmooth << " seconds (" << (tsmooth + tsolve) << " seconds in total)" << std::endl;
+ if (req.interpolate)
+ p.si->interpolatePath(path);
+ if (bestPath == NULL || bestDifference > goal->getDifference() ||
+ (bestPath && bestDifference == goal->getDifference() && bestPath->states.size() > path->states.size()))
+ {
+ if (bestPath)
+ delete bestPath;
+ bestPath = path;
+ bestDifference = goal->getDifference();
+ goal->forgetSolutionPath();
+ std::cout << " Obtained better solution" << std::endl;
+ }
+ }
+ }
m_collisionSpace->unlock();
-
+ std::cout << std::endl << "Total planning time: " << totalTime << "; Average planning time: " << (totalTime / (double)req.times) << " (seconds)" << std::endl;
+
/* copy the solution to the result */
- if (ok)
+ if (bestPath)
{
- ompl::SpaceInformationKinematic::PathKinematic_t path = static_cast<ompl::SpaceInformationKinematic::PathKinematic_t>(goal->getSolutionPath());
- res.path.set_states_size(path->states.size());
- for (unsigned int i = 0 ; i < path->states.size() ; ++i)
+ res.path.set_states_size(bestPath->states.size());
+ for (unsigned int i = 0 ; i < bestPath->states.size() ; ++i)
{
res.path.states[i].set_vals_size(dim);
for (int j = 0 ; j < dim ; ++j)
- res.path.states[i].vals[j] = path->states[i]->values[j];
+ res.path.states[i].vals[j] = bestPath->states[i]->values[j];
}
- res.distance = goal->getDifference();
+ res.distance = bestDifference;
}
else
{
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/General.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/General.h 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/General.h 2008-08-21 20:28:21 UTC (rev 3424)
@@ -45,6 +45,8 @@
#include <climits>
#include <cmath>
+#include <iostream>
+
#include "ompl/base/util/types.h"
#include "ompl/base/util/time.h"
Modified: pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/ompl/code/ompl/base/SpaceInformation.h 2008-08-21 20:28:21 UTC (rev 3424)
@@ -278,6 +278,12 @@
return m_approximate;
}
+ /** Print information about the goal */
+ virtual void print(std::ostream &out = std::cout) const
+ {
+ out << "Goal memory address " << reinterpret_cast<const void*>(this) << std::endl;
+ }
+
protected:
/** solution path, if found */
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/SpaceInformationKinematic.h 2008-08-21 20:28:21 UTC (rev 3424)
@@ -106,7 +106,12 @@
}
virtual double distanceGoal(StateKinematic_t s) = 0;
-
+
+ virtual void print(std::ostream &out = std::cout) const
+ {
+ out << "Goal region, threshold = " << threshold << ", memory address = " << reinterpret_cast<const void*>(this) << std::endl;
+ }
+
double threshold;
};
@@ -131,6 +136,12 @@
return static_cast<SpaceInformationKinematic_t>(m_si)->distance(s, state);
}
+ virtual void print(std::ostream &out = std::cout) const
+ {
+ out << "Goal state, threshold = " << threshold << ", memory address = " << reinterpret_cast<const void*>(this) << ", state = ";
+ static_cast<SpaceInformationKinematic_t>(m_si)->printState(state, out);
+ }
+
StateKinematic_t state;
};
@@ -189,7 +200,7 @@
double resolution;
};
- virtual void printState(const StateKinematic_t state, FILE* out = stdout) const;
+ virtual void printState(const StateKinematic_t state, std::ostream &out = std::cout) const;
virtual void copyState(StateKinematic_t destination, const StateKinematic_t source)
{
memcpy(destination->values, source->values, sizeof(double) * m_stateDimension);
@@ -222,7 +233,7 @@
return (*m_stateValidityChecker)(static_cast<const State_t>(state));
}
- virtual void printSettings(FILE *out = stdout) const;
+ virtual void printSettings(std::ostream &out = std::cout) const;
virtual void setup(void)
{
Modified: pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp
===================================================================
--- pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/ompl/code/ompl/extension/samplingbased/kinematic/src/SpaceInformationKinematic.cpp 2008-08-21 20:28:21 UTC (rev 3424)
@@ -56,12 +56,18 @@
return dist;
}
-void ompl::SpaceInformationKinematic::printState(const StateKinematic_t state, FILE* out) const
+void ompl::SpaceInformationKinematic::printState(const StateKinematic_t state, std::ostream &out) const
{
- for (unsigned int i = 0 ; i < m_stateDimension ; ++i)
- fprintf(out, "%0.6f ", state->values[i]);
- fprintf(out, "\n");
+ if (state)
+ {
+ for (unsigned int i = 0 ; i < m_stateDimension ; ++i)
+ out << state->values[i] << " ";
+ out << std::endl;
+ }
+ else
+ out << "NULL" << std::endl;
}
+
void ompl::SpaceInformationKinematic::sample(StateKinematic_t state)
{
for (unsigned int i = 0 ; i < m_stateDimension ; ++i)
@@ -216,16 +222,19 @@
path->states.swap(newStates);
}
-void ompl::SpaceInformationKinematic::printSettings(FILE *out) const
+void ompl::SpaceInformationKinematic::printSettings(std::ostream &out) const
{
- fprintf(out, "Kinematic state space settings:\n");
- fprintf(out, " - dimension = %u\n", m_stateDimension);
- fprintf(out, " - start states:\n");
+ out << "Kinematic state space settings:" << std::endl;
+ out << " - dimension = " << m_stateDimension << std::endl;
+ out << " - start states:" << std::endl;
for (unsigned int i = 0 ; i < getStartStateCount() ; ++i)
- printState(dynamic_cast<const StateKinematic_t>(getStartState(i)), out);
- fprintf(out, " - goal = %p\n", reinterpret_cast<void*>(m_goal));
- fprintf(out, " - bounding box:\n");
+ printState(dynamic_cast<const StateKinematic_t>(getStartState(i)), out);
+ if (m_goal)
+ m_goal->print(out);
+ else
+ out << " - goal = NULL" << std::endl;
+ out << " - bounding box:" << std::endl;
for (unsigned int i = 0 ; i < m_stateDimension ; ++i)
- fprintf(out, "[%f, %f](%f) ", m_stateComponent[i].minValue, m_stateComponent[i].maxValue, m_stateComponent[i].resolution);
- fprintf(out, "\n");
+ out << "[" << m_stateComponent[i].minValue << ", " << m_stateComponent[i].maxValue << "](" << m_stateComponent[i].resolution << ") ";
+ out << std::endl;
}
Modified: pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp
===================================================================
--- pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/plan_kinematic_path/src/plan_kinematic_path.cpp 2008-08-21 20:28:21 UTC (rev 3424)
@@ -79,6 +79,7 @@
req.threshold = 0.01;
req.distance_metric = "L2Square";
req.interpolate = 1;
+ req.times = 10;
initialState(req.start_state);
@@ -103,13 +104,14 @@
req.threshold = 0.01;
req.distance_metric = "L2Square";
req.interpolate = 1;
+ req.times = 1;
initialState(req.start_state);
req.goal_state.set_vals_size(7);
for (unsigned int i = 0 ; i < req.goal_state.vals_size ; ++i)
req.goal_state.vals[i] = 0.0;
- req.goal_state.vals[0] = -1.0;
+ req.goal_state.vals[0] = 1.0;
req.allowed_time = 10.0;
@@ -128,6 +130,7 @@
req.threshold = 0.01;
req.distance_metric = "L2Square";
req.interpolate = 1;
+ req.times = 100;
initialState(req.start_state);
@@ -149,7 +152,7 @@
robot_srvs::KinematicPlanState::response res;
robot_msgs::NamedKinematicPath dpath;
- if (ros::service::call("plan_kinematic_path", req, res))
+ if (ros::service::call("plan_kinematic_path_state", req, res))
{
unsigned int nstates = res.path.get_states_size();
printf("Obtained %ssolution path with %u states, distance to goal = %f\n",
@@ -190,11 +193,11 @@
ros::init(argc, argv);
PlanKinematicPath plan;
-
+ /*
ros::Duration dur(0.1);
while (!plan.haveBasePos())
dur.sleep();
-
+ */
char test = (argc < 2) ? 'b' : argv[1][0];
switch (test)
Modified: pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp
===================================================================
--- pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/motion_planning/planning_world_viewer/src/planning_world_viewer.cpp 2008-08-21 20:28:21 UTC (rev 3424)
@@ -112,7 +112,9 @@
m_displayRobot = true;
m_displayObstacles = true;
m_checkCollision = false;
-
+
+ double sphere[3] = {0.7, 0.5, 0.7 };
+ m_collisionSpace->addPointCloud(1, sphere, 0.2);
}
~PlanningWorldViewer(void)
Modified: pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv
===================================================================
--- pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/robot_srvs/srv/KinematicPlanLinkPosition.srv 2008-08-21 20:28:21 UTC (rev 3424)
@@ -25,9 +25,13 @@
# No state in the produced motion plan will violate these constraints
robot_msgs/KinematicConstraint[] constraints
+
+# The number of times this plan is to be computed. Shortest solution
+# will be reported.
+int32 times
+
# Boolean flag: if true, the returned path will contain interpolated
# states as well
-
byte interpolate
# The maximum amount of time the motion planner is allowed to plan for
Modified: pkg/trunk/robot_srvs/srv/KinematicPlanState.srv
===================================================================
--- pkg/trunk/robot_srvs/srv/KinematicPlanState.srv 2008-08-21 20:28:18 UTC (rev 3423)
+++ pkg/trunk/robot_srvs/srv/KinematicPlanState.srv 2008-08-21 20:28:21 UTC (rev 3424)
@@ -24,13 +24,15 @@
# constraints is correct
robot_msgs/KinematicState goal_state
-
# No state in the produced motion plan will violate these constraints
robot_msgs/KinematicConstraint[] constraints
+# The number of times this plan is to be computed. Shortest solution
+# will be reported.
+int32 times
+
# Boolean flag: if true, the returned path will contain interpolated
# states as well
-
byte interpolate
# The maximum amount of time the motion planner is allowed to plan for
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hsu...@us...> - 2008-08-21 21:50:31
|
Revision: 3429
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3429&view=rev
Author: hsujohnhsu
Date: 2008-08-21 21:50:38 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
robot now works with teleop_base_keyboard and teleop_arm_keyboard again in new mechanism controller mode.
Modified Paths:
--------------
pkg/trunk/controllers/generic_controllers/include/generic_controllers/joint_position_controller.h
pkg/trunk/controllers/generic_controllers/src/joint_position_controller.cpp
pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
Modified: pkg/trunk/controllers/generic_controllers/include/generic_controllers/joint_position_controller.h
===================================================================
--- pkg/trunk/controllers/generic_controllers/include/generic_controllers/joint_position_controller.h 2008-08-21 21:34:20 UTC (rev 3428)
+++ pkg/trunk/controllers/generic_controllers/include/generic_controllers/joint_position_controller.h 2008-08-21 21:50:38 UTC (rev 3429)
@@ -161,6 +161,7 @@
// Services
bool setCommand(generic_controllers::SetCommand::request &req,
generic_controllers::SetCommand::response &resp);
+ void setCommand(double command);
double getCommand();
Modified: pkg/trunk/controllers/generic_controllers/src/joint_position_controller.cpp
===================================================================
--- pkg/trunk/controllers/generic_controllers/src/joint_position_controller.cpp 2008-08-21 21:34:20 UTC (rev 3428)
+++ pkg/trunk/controllers/generic_controllers/src/joint_position_controller.cpp 2008-08-21 21:50:38 UTC (rev 3429)
@@ -164,6 +164,12 @@
return true;
}
+void JointPositionControllerNode::setCommand(double command)
+{
+ c_->setCommand(command);
+}
+
+
// Return the current position command
double JointPositionControllerNode::getCommand()
{
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-21 21:34:20 UTC (rev 3428)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-21 21:50:38 UTC (rev 3429)
@@ -453,8 +453,8 @@
larm.forearmRollAngle = mc_.model_.getJoint("forearm_roll_left_joint")->position_;
larm.wristPitchAngle = mc_.model_.getJoint("wrist_flex_left_joint")->position_;
larm.wristRollAngle = mc_.model_.getJoint("gripper_roll_left_joint")->position_;
- //larm.gripperForceCmd = mc_.model_.getJoint("gripper_left_joint")->applied_effort_;
- //larm.gripperGapCmd = mc_.model_.getJoint("gripper_left_joint")->position_;
+ larm.gripperForceCmd = mc_.model_.getJoint("gripper_left_joint")->applied_effort_;
+ larm.gripperGapCmd = mc_.model_.getJoint("gripper_left_joint")->position_;
rosnode_->publish("left_pr2arm_pos", larm);
/* get right arm position */
rarm.turretAngle = mc_.model_.getJoint("shoulder_pan_right_joint")->position_;
@@ -464,8 +464,8 @@
rarm.forearmRollAngle = mc_.model_.getJoint("forearm_roll_right_joint")->position_;
rarm.wristPitchAngle = mc_.model_.getJoint("wrist_flex_right_joint")->position_;
rarm.wristRollAngle = mc_.model_.getJoint("gripper_roll_right_joint")->position_;
- //rarm.gripperForceCmd = mc_.model_.getJoint("gripper_right_joint")->applied_effort_;
- //rarm.gripperGapCmd = mc_.model_.getJoint("gripper_right_joint")->position_;
+ rarm.gripperForceCmd = mc_.model_.getJoint("gripper_right_joint")->applied_effort_;
+ rarm.gripperGapCmd = mc_.model_.getJoint("gripper_right_joint")->position_;
rosnode_->publish("right_pr2arm_pos", rarm);
//PublishFrameTransforms();
@@ -558,12 +558,9 @@
// controller::Controller* mc3 = mc_.getControllerByName( "gripper_left_controller" );
// dynamic_cast<controller::JointPositionController*>(mc3)->setCommand(0.2);
- // libTF::Pose3D::Vector cmd_vel;
- // cmd_vel.x = 1.0;
- // cmd_vel.y = 0.1;
- // cmd_vel.z = 0.1;
- // controller::Controller* bc = mc_.getControllerByName( "base_controller" );
- // dynamic_cast<controller::BaseController*>(bc)->setCommand(cmd_vel);
+ //controller::Controller* cc = mc_.getControllerByName( "base_controller" );
+ //controller::BaseControllerNode* bc = dynamic_cast<controller::BaseControllerNode*>(cc);
+ //bc->setCommand(0.0,0.0,0.5);
// -------------------------------------------------------------------------------------------------
// - -
@@ -875,9 +872,9 @@
rosnode_->advertise<std_msgs::Empty>("transform");
//rosnode_->advertise<std_msgs::Point3DFloat32>("object_position");
- //rosnode_->subscribe("cmd_vel", velMsg, &TestActuators::CmdBaseVelReceived);
- rosnode_->subscribe("cmd_leftarmconfig", leftarmMsg, &TestActuators::CmdLeftarmconfigReceived);
- rosnode_->subscribe("cmd_rightarmconfig", rightarmMsg, &TestActuators::CmdRightarmconfigReceived);
+ rosnode_->subscribe("cmd_vel", velMsg, &TestActuators::CmdBaseVelReceived, this);
+ rosnode_->subscribe("cmd_leftarmconfig", leftarmMsg, &TestActuators::CmdLeftarmconfigReceived,this);
+ rosnode_->subscribe("cmd_rightarmconfig", rightarmMsg, &TestActuators::CmdRightarmconfigReceived,this);
//rosnode_->subscribe("cmd_leftarm_cartesian", leftarmcartesianMsg, &TestActuators::CmdLeftarmcartesianReceived);
//rosnode_->subscribe("cmd_rightarm_cartesian", rightarmcartesianMsg, &TestActuators::CmdRightarmcartesianReceived);
@@ -897,14 +894,14 @@
controller::Controller* j6 = mc_.getControllerByName( "wrist_flex_left_controller" );
controller::Controller* j7 = mc_.getControllerByName( "gripper_roll_left_controller" );
controller::Controller* j8 = mc_.getControllerByName( "gripper_left_controller" );
- dynamic_cast<controller::JointPositionController*>(j1)->setCommand(leftarmMsg.turretAngle );
- dynamic_cast<controller::JointPositionController*>(j2)->setCommand(leftarmMsg.shoulderLiftAngle );
- dynamic_cast<controller::JointPositionController*>(j3)->setCommand(leftarmMsg.upperarmRollAngle );
- dynamic_cast<controller::JointPositionController*>(j4)->setCommand(leftarmMsg.elbowAngle );
- dynamic_cast<controller::JointPositionController*>(j5)->setCommand(leftarmMsg.forearmRollAngle );
- dynamic_cast<controller::JointPositionController*>(j6)->setCommand(leftarmMsg.wristPitchAngle );
- dynamic_cast<controller::JointPositionController*>(j7)->setCommand(leftarmMsg.wristRollAngle );
- dynamic_cast<controller::JointPositionController*>(j8)->setCommand(leftarmMsg.gripperGapCmd );
+ dynamic_cast<controller::JointPositionControllerNode*>(j1)->setCommand(leftarmMsg.turretAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j2)->setCommand(leftarmMsg.shoulderLiftAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j3)->setCommand(leftarmMsg.upperarmRollAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j4)->setCommand(leftarmMsg.elbowAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j5)->setCommand(leftarmMsg.forearmRollAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j6)->setCommand(leftarmMsg.wristPitchAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j7)->setCommand(leftarmMsg.wristRollAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j8)->setCommand(leftarmMsg.gripperGapCmd );
this->lock.unlock();
}
void
@@ -920,14 +917,14 @@
controller::Controller* j6 = mc_.getControllerByName( "wrist_flex_right_controller" );
controller::Controller* j7 = mc_.getControllerByName( "gripper_roll_right_controller" );
controller::Controller* j8 = mc_.getControllerByName( "gripper_right_controller" );
- dynamic_cast<controller::JointPositionController*>(j1)->setCommand(rightarmMsg.turretAngle );
- dynamic_cast<controller::JointPositionController*>(j2)->setCommand(rightarmMsg.shoulderLiftAngle );
- dynamic_cast<controller::JointPositionController*>(j3)->setCommand(rightarmMsg.upperarmRollAngle );
- dynamic_cast<controller::JointPositionController*>(j4)->setCommand(rightarmMsg.elbowAngle );
- dynamic_cast<controller::JointPositionController*>(j5)->setCommand(rightarmMsg.forearmRollAngle );
- dynamic_cast<controller::JointPositionController*>(j6)->setCommand(rightarmMsg.wristPitchAngle );
- dynamic_cast<controller::JointPositionController*>(j7)->setCommand(rightarmMsg.wristRollAngle );
- dynamic_cast<controller::JointPositionController*>(j8)->setCommand(rightarmMsg.gripperGapCmd );
+ dynamic_cast<controller::JointPositionControllerNode*>(j1)->setCommand(rightarmMsg.turretAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j2)->setCommand(rightarmMsg.shoulderLiftAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j3)->setCommand(rightarmMsg.upperarmRollAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j4)->setCommand(rightarmMsg.elbowAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j5)->setCommand(rightarmMsg.forearmRollAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j6)->setCommand(rightarmMsg.wristPitchAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j7)->setCommand(rightarmMsg.wristRollAngle );
+ dynamic_cast<controller::JointPositionControllerNode*>(j8)->setCommand(rightarmMsg.gripperGapCmd );
this->lock.unlock();
}
@@ -949,6 +946,9 @@
TestActuators::CmdBaseVelReceived()
{
this->lock.lock();
+ controller::Controller* cc = mc_.getControllerByName( "base_controller" );
+ controller::BaseControllerNode* bc = dynamic_cast<controller::BaseControllerNode*>(cc);
+ bc->setCommand(velMsg.vx,0.0,velMsg.vw);
this->lock.unlock();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hsu...@us...> - 2008-08-21 22:59:51
|
Revision: 3440
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3440&view=rev
Author: hsujohnhsu
Date: 2008-08-21 22:59:59 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
2dnav demo using new actuator plugins, mechanism controlls and base controller.
Modified Paths:
--------------
pkg/trunk/3rdparty/gazebo/setup.bash
pkg/trunk/3rdparty/gazebo/setup.tcsh
pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp
pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml
pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers_gazebo_test.xml
Added Paths:
-----------
pkg/trunk/robot_descriptions/gazebo_robot_description/pr2_test.xml
Modified: pkg/trunk/3rdparty/gazebo/setup.bash
===================================================================
--- pkg/trunk/3rdparty/gazebo/setup.bash 2008-08-21 22:57:17 UTC (rev 3439)
+++ pkg/trunk/3rdparty/gazebo/setup.bash 2008-08-21 22:59:59 UTC (rev 3440)
@@ -17,6 +17,7 @@
export GAZEBO_RESOURCE_PATH=$PR2MEDIA
export OGRE_RESOURCE_PATH=$OGRE_TOP/lib/OGRE
+export MC_RESOURCE_PATH=$PR2MEDIA
echo
echo Current GAZ_TOP is set to $GAZ_TOP
Modified: pkg/trunk/3rdparty/gazebo/setup.tcsh
===================================================================
--- pkg/trunk/3rdparty/gazebo/setup.tcsh 2008-08-21 22:57:17 UTC (rev 3439)
+++ pkg/trunk/3rdparty/gazebo/setup.tcsh 2008-08-21 22:59:59 UTC (rev 3440)
@@ -17,6 +17,7 @@
setenv GAZEBO_RESOURCE_PATH $PR2MEDIA
setenv OGRE_RESOURCE_PATH $OGRE_TOP/lib/OGRE
+setenv MC_RESOURCE_PATH $PR2MEDIA
echo
echo Current GAZ_TOP is set to $GAZ_TOP
Modified: pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp
===================================================================
--- pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp 2008-08-21 22:57:17 UTC (rev 3439)
+++ pkg/trunk/controllers/pr2_controllers/src/base_controller.cpp 2008-08-21 22:59:59 UTC (rev 3440)
@@ -285,7 +285,7 @@
if(odom_publish_counter_ > odom_publish_count_)
{
- //(ros::g_node)->publish("odom", odom_msg_);
+ (ros::g_node)->publish("odom", odom_msg_);
odom_publish_counter_ = 0;
}
@@ -423,6 +423,9 @@
node->advertise_service(prefix + "/set_command", &BaseControllerNode::setCommand, this);
node->advertise_service(prefix + "/get_actual", &BaseControllerNode::getCommand, this); //FIXME: this is actually get command, just returning command for testing.
+
+ node->advertise<std_msgs::RobotBase2DOdom>("odom");
+
return true;
}
Modified: pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml
===================================================================
--- pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml 2008-08-21 22:57:17 UTC (rev 3439)
+++ pkg/trunk/demos/2dnav-gazebo/2dnav-gazebo.xml 2008-08-21 22:59:59 UTC (rev 3440)
@@ -1,9 +1,7 @@
<launch>
<group name="wg">
- <include file="$(find wg_robot_description)/send.xml"/>
- <node pkg="gazebo" type="run-gazebo.sh" args="$(find gazebo_robot_description)/world/robot_rosgazebo.world" respawn="true" />
+ <include file="$(find gazebo_robot_description)/pr2_test.xml"/>
<node pkg="map_server" type="map_server" args="$(find gazebo_robot_description)/world/Media/materials/textures/map3.png 0.1" respawn="false" />
- <node pkg="pr2_gazebo" type="run-pr2_gazebo.sh" args="" respawn="true" />
<node pkg="amcl_player" type="amcl_player" args="scan:=base_scan" respawn="false" />
<node pkg="wavefront_player" type="wavefront_player" args="scan:=base_scan" respawn="false" />
<node pkg="nav_view" type="nav_view" respawn="true" />
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-21 22:57:17 UTC (rev 3439)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-21 22:59:59 UTC (rev 3440)
@@ -149,6 +149,38 @@
void TestActuators::LoadMC(XMLConfigNode *node)
{
+
+
+ //-----------------------------------------------------------------------------------------
+ //
+ // Read XML's and normalize const and const_blocks
+ //
+ //-----------------------------------------------------------------------------------------
+ TiXmlDocument *pr2_xml = new TiXmlDocument();
+ TiXmlDocument *controller_xml = new TiXmlDocument();
+ TiXmlDocument *transmission_xml = new TiXmlDocument();
+ TiXmlDocument *actuator_xml = new TiXmlDocument();
+
+ std::string pr2_xml_filename = getenv("MC_RESOURCE_PATH"); pr2_xml_filename += "/"; pr2_xml_filename += node->GetString("robot_filename","",1);
+ std::string controller_xml_filename = getenv("MC_RESOURCE_PATH"); controller_xml_filename += "/"; controller_xml_filename += node->GetString("controller_filename","",1);
+ std::string transmission_xml_filename = getenv("MC_RESOURCE_PATH"); transmission_xml_filename += "/"; transmission_xml_filename += node->GetString("transmission_filename","",1);
+ std::string actuator_xml_filename = getenv("MC_RESOURCE_PATH"); actuator_xml_filename += "/"; actuator_xml_filename += node->GetString("actuator_filename","",1);
+
+ std::cout << " pr2 robot xml file name: " << pr2_xml_filename << std::endl;
+ std::cout << " controller file name: " << controller_xml_filename << std::endl;
+ std::cout << " transmission file name: " << transmission_xml_filename << std::endl;
+ std::cout << " actuator file name: " << actuator_xml_filename << std::endl;
+
+ pr2_xml ->LoadFile(pr2_xml_filename);
+ controller_xml ->LoadFile(controller_xml_filename);
+ transmission_xml->LoadFile(transmission_xml_filename);
+ actuator_xml ->LoadFile(actuator_xml_filename);
+
+ urdf::normalizeXml( pr2_xml->RootElement() );
+ //urdf::normalizeXml( controller_xml->RootElement() );
+ //urdf::normalizeXml( transmission_xml->RootElement() );
+ //urdf::normalizeXml( actuator_xml->RootElement() );
+
//-------------------------------------------------------------------------------------------
//
// GET INFORMATION FROM PR2.XML FROM PARAM SERVER
@@ -161,45 +193,18 @@
//-------------------------------------------------------------------------------------------
// parse pr2.xml from filename specified
- pr2Description.loadFile(node->GetString("robot_filename","",1).c_str());
+ pr2Description.loadFile(pr2_xml_filename.c_str());
// get all links in pr2.xml
pr2Description.getLinks(pr2Links);
- std::cout << " pr2.xml link size: " << pr2Links.size() << std::endl;
+ std::cout << " pr2.xml contains " << pr2Links.size() << " links." << std::endl;
// as the name states
LoadFrameTransformOffsets();
-
//-----------------------------------------------------------------------------------------
//
- // Read XML's and normalize const and const_blocks
- //
- //-----------------------------------------------------------------------------------------
- TiXmlDocument *pr2_xml = new TiXmlDocument();
- TiXmlDocument *controller_xml = new TiXmlDocument();
- TiXmlDocument *transmission_xml = new TiXmlDocument();
- TiXmlDocument *actuator_xml = new TiXmlDocument();
-
- std::cout << " robot file name: " << node->GetString("robot_filename","",1) << std::endl;
- std::cout << " controller file name: " << node->GetString("controller_filename","",1) << std::endl;
- std::cout << " transmission file name: " << node->GetString("transmission_filename","",1) << std::endl;
- std::cout << " actuator file name: " << node->GetString("actuator_filename","",1) << std::endl;
-
- pr2_xml->LoadFile(node->GetString("robot_filename","",1));
- controller_xml->LoadFile(node->GetString("controller_filename","",1));
- transmission_xml->LoadFile(node->GetString("transmission_filename","",1));
- actuator_xml->LoadFile(node->GetString("actuator_filename","",1));
-
- urdf::normalizeXml( pr2_xml->RootElement() );
- //urdf::normalizeXml( controller_xml->RootElement() );
- //urdf::normalizeXml( transmission_xml->RootElement() );
- //urdf::normalizeXml( actuator_xml->RootElement() );
-
-
- //-----------------------------------------------------------------------------------------
- //
// parse for MechanismControl joints
//
//-----------------------------------------------------------------------------------------
Added: pkg/trunk/robot_descriptions/gazebo_robot_description/pr2_test.xml
===================================================================
--- pkg/trunk/robot_descriptions/gazebo_robot_description/pr2_test.xml (rev 0)
+++ pkg/trunk/robot_descriptions/gazebo_robot_description/pr2_test.xml 2008-08-21 22:59:59 UTC (rev 3440)
@@ -0,0 +1,7 @@
+<launch>
+ <group name="wg">
+ <include file="$(find wg_robot_description)/send_test.xml"/>
+ <node pkg="gazebo" type="run-gazebo.sh" args="$(find gazebo_robot_description)/world/robot_test.world" respawn="true" />
+ </group>
+</launch>
+
Modified: pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers_gazebo_test.xml
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers_gazebo_test.xml 2008-08-21 22:57:17 UTC (rev 3439)
+++ pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers_gazebo_test.xml 2008-08-21 22:59:59 UTC (rev 3440)
@@ -14,10 +14,10 @@
<include>gazebo_joints.xml</include>
- <robot_filename>./world/pr2_test.xml</robot_filename>
- <controller_filename>./world/controllers.xml</controller_filename>
- <actuator_filename>./world/actuators.xml</actuator_filename>
- <transmission_filename>./world/transmissions.xml</transmission_filename>
+ <robot_filename>pr2_test.xml</robot_filename>
+ <controller_filename>controllers.xml</controller_filename>
+ <actuator_filename>actuators.xml</actuator_filename>
+ <transmission_filename>transmissions.xml</transmission_filename>
<interface:audio name="test_actuators_dummy_iface" />
</controller:test_actuators>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jl...@us...> - 2008-08-21 23:34:37
|
Revision: 3443
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3443&view=rev
Author: jleibs
Date: 2008-08-21 23:34:47 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
Updates to tilting laser stack.
Modified Paths:
--------------
pkg/trunk/deprecated/etherdrive_old/src/etherdrive_node/etherdrive_node.cpp
pkg/trunk/drivers/cam/dc1394_cam_server/src/dc1394_cam_server/dc1394_cam_server.cpp
pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc
pkg/trunk/drivers/robot/pr2/tilting_laser/launch_tl
pkg/trunk/drivers/robot/pr2/tilting_laser/params.xml
pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp
Modified: pkg/trunk/deprecated/etherdrive_old/src/etherdrive_node/etherdrive_node.cpp
===================================================================
--- pkg/trunk/deprecated/etherdrive_old/src/etherdrive_node/etherdrive_node.cpp 2008-08-21 23:29:42 UTC (rev 3442)
+++ pkg/trunk/deprecated/etherdrive_old/src/etherdrive_node/etherdrive_node.cpp 2008-08-21 23:34:47 UTC (rev 3443)
@@ -60,7 +60,7 @@
for (int i = 0;i < 6;i++) {
ostringstream oss;
oss << "mot" << i;
- advertise<std_msgs::Actuator>(oss.str().c_str());
+ advertise<std_msgs::Actuator>(oss.str().c_str(), 1);
oss << "_cmd";
subscribe(oss.str().c_str(), mot_cmd[i], &EtherDrive_Node::mot_callback);
Modified: pkg/trunk/drivers/cam/dc1394_cam_server/src/dc1394_cam_server/dc1394_cam_server.cpp
===================================================================
--- pkg/trunk/drivers/cam/dc1394_cam_server/src/dc1394_cam_server/dc1394_cam_server.cpp 2008-08-21 23:29:42 UTC (rev 3442)
+++ pkg/trunk/drivers/cam/dc1394_cam_server/src/dc1394_cam_server/dc1394_cam_server.cpp 2008-08-21 23:34:47 UTC (rev 3443)
@@ -336,11 +336,11 @@
if (cd.cam_type == VIDERE)
{
- advertise<std_msgs::String>(cd.name + string("/cal_params"));
- advertise<std_msgs::ImageArray>(cd.name + string("/images"));
- advertise<std_msgs::PointCloudFloat32>(cd.name + string("/cloud"));
+ advertise<std_msgs::String>(cd.name + string("/cal_params"), 1);
+ advertise<std_msgs::ImageArray>(cd.name + string("/images"), 1);
+ advertise<std_msgs::PointCloudFloat32>(cd.name + string("/cloud"), 1);
} else {
- advertise<std_msgs::Image>(cd.name + string("/image"));
+ advertise<std_msgs::Image>(cd.name + string("/image"), 1);
}
cams_.push_back(cd);
Modified: pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc
===================================================================
--- pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc 2008-08-21 23:29:42 UTC (rev 3442)
+++ pkg/trunk/drivers/laser/hokuyourg_player/hokuyourg_player.cc 2008-08-21 23:34:47 UTC (rev 3443)
@@ -146,7 +146,7 @@
HokuyoNode() : ros::node("urglaser"), running(false), count(0)
{
- advertise<std_msgs::LaserScan>("scan");
+ advertise<std_msgs::LaserScan>("scan", 100);
advertise_service("~self_test", &HokuyoNode::SelfTest);
param("~min_ang", min_ang, -90.0);
Modified: pkg/trunk/drivers/robot/pr2/tilting_laser/launch_tl
===================================================================
--- pkg/trunk/drivers/robot/pr2/tilting_laser/launch_tl 2008-08-21 23:29:42 UTC (rev 3442)
+++ pkg/trunk/drivers/robot/pr2/tilting_laser/launch_tl 2008-08-21 23:34:47 UTC (rev 3443)
@@ -1,9 +1,4 @@
-#!/bin/bash
-if [ -z $1 ]; then
- ROS_MASTER_URI=http://localhost:11311
-else
- ROS_MASTER_URI=$1
-fi
+
echo Starting sensors with ROS_MASTER_URI=$ROS_MASTER_URI
`rospack find xmlparam`/xmlparam `rospack find tilting_laser`/params.xml
xterm -e `rospack find hokuyourg_player`/hokuyourg_player&
Modified: pkg/trunk/drivers/robot/pr2/tilting_laser/params.xml
===================================================================
--- pkg/trunk/drivers/robot/pr2/tilting_laser/params.xml 2008-08-21 23:29:42 UTC (rev 3442)
+++ pkg/trunk/drivers/robot/pr2/tilting_laser/params.xml 2008-08-21 23:34:47 UTC (rev 3443)
@@ -3,11 +3,12 @@
<double name="urglaser/max_ang">70</double>
<int name="urglaser/cluster">1</int>
<int name="urglaser/skip">0</int>
+ <string name="urglaser/frameid">FRAMEID_LASER2</string>
<double name="etherdrive/pulse_per_rad0">-9549.29659</double>
<string name="etherdrive/frame_id0">FRAMEID_TILT_STAGE</string>
<string name="etherdrive/parent_id0">FRAMEID_TILT_BASE</string>
<int name="etherdrive/rot_axis0">2</int>
<int name="tilting_laser/num_scans">400</int>
- <double name="tilting_laser/min_ang">-65.0</double>
- <double name="tilting_laser/max_ang">35.0</double>
+ <double name="tilting_laser/min_ang">30.0</double>
+ <double name="tilting_laser/max_ang">130.0</double>
</params>
Modified: pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp
===================================================================
--- pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp 2008-08-21 23:29:42 UTC (rev 3442)
+++ pkg/trunk/drivers/robot/pr2/tilting_laser/src/tilting_laser/tilting_laser.cpp 2008-08-21 23:34:47 UTC (rev 3443)
@@ -155,12 +155,12 @@
Tilting_Laser() : ros::node("tilting_laser"), tf(*this), full_cloud_cnt(0), sizes_ready(false), img_ind(-1), img_dir(1),last_ang(1000000), rate_err_down(0.0), rate_err_up(0.0), accum_angle(0.0), scan_received(false), count(0)
{
- advertise<PointCloudFloat32>("cloud");
- advertise<Empty>("shutter");
- advertise<PointCloudFloat32>("full_cloud");
- advertise<LaserImage>("laser_image");
- advertise<Image>("image");
- advertise<Actuator>("mot_cmd");
+ advertise<PointCloudFloat32>("cloud", 1);
+ advertise<Empty>("shutter", 1);
+ advertise<PointCloudFloat32>("full_cloud", 1);
+ advertise<LaserImage>("laser_image", 1);
+ advertise<Image>("image", 1);
+ advertise<Actuator>("mot_cmd", 100);
subscribe("scan", scans, &Tilting_Laser::scans_callback,40);
subscribe("mot", encoder, &Tilting_Laser::encoder_callback,40);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hsu...@us...> - 2008-08-22 00:51:43
|
Revision: 3456
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3456&view=rev
Author: hsujohnhsu
Date: 2008-08-22 00:51:53 +0000 (Fri, 22 Aug 2008)
Log Message:
-----------
kp_speed changed to match that of the hardware (10.0), and base controller is behaving better.
update some comments in test actuator.
Modified Paths:
--------------
pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-22 00:49:26 UTC (rev 3455)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-22 00:51:53 UTC (rev 3456)
@@ -898,31 +898,92 @@
this->lock.unlock();
}
+
void
+ TestActuators::CmdBaseVelReceived()
+ {
+ this->lock.lock();
+ controller::Controller* cc = mc_.getControllerByName( "base_controller" );
+ controller::BaseControllerNode* bc = dynamic_cast<controller::BaseControllerNode*>(cc);
+ bc->setCommand(velMsg.vx,0.0,velMsg.vw);
+ this->lock.unlock();
+ }
+
+
+
+
+
+ void
TestActuators::CmdLeftarmcartesianReceived()
{
this->lock.lock();
+
+ KDL::Frame f;
+ for(int i = 0; i < 9; i++) {
+ f.M.data[i] = cmd_leftarmcartesian.rot[i];
+ }
+ for(int i = 0; i < 3; i++) {
+ f.p.data[i] = cmd_leftarmcartesian.trans[i];
+ }
+
+ bool reachable;
+ //this->PR2Copy->SetArmCartesianPosition(PR2::PR2_LEFT_ARM,f, reachable);
+
this->lock.unlock();
}
void
TestActuators::CmdRightarmcartesianReceived()
{
this->lock.lock();
+
+ KDL::Frame f;
+ for(int i = 0; i < 9; i++) {
+ f.M.data[i] = cmd_rightarmcartesian.rot[i];
+ }
+ for(int i = 0; i < 3; i++) {
+ f.p.data[i] = cmd_rightarmcartesian.trans[i];
+ }
+
+ bool reachable;
+ //this->PR2Copy->SetArmCartesianPosition(PR2::PR2_RIGHT_ARM,f, reachable);
+
this->lock.unlock();
}
+ bool TestActuators::SetRightArmCartesian(rosgazebo::MoveCartesian::request &req, rosgazebo::MoveCartesian::response &res)
+ {
+ this->lock.lock();
+ KDL::Frame f;
+ for(int i = 0; i < 9; i++)
+ f.M.data[i] = req.e.rot[i];
- void
- TestActuators::CmdBaseVelReceived()
+ for(int i = 0; i < 3; i++)
+ f.p.data[i] = req.e.trans[i];
+
+ bool reachable;
+ this->PR2Copy->SetArmCartesianPosition(PR2::PR2_RIGHT_ARM,f,reachable);
+ res.reachable = (reachable==false) ? -1 : 0;
+
+ this->lock.unlock();
+ return true;
+ }
+
+ bool TestActuators::OperateRightGripper(rosgazebo::GripperCmd::request &req, rosgazebo::GripperCmd::response &res)
{
+ this->lock.lock();
+ this->PR2Copy->hw.SetJointServoCmd(PR2::ARM_R_GRIPPER_GAP, req.gap, 0);
+ this->lock.unlock();
+ return true;
+ }
+
+ bool TestActuators::reset_IK_guess(rosgazebo::VoidVoid::request &req, rosgazebo::VoidVoid::response &res)
+ {
this->lock.lock();
- controller::Controller* cc = mc_.getControllerByName( "base_controller" );
- controller::BaseControllerNode* bc = dynamic_cast<controller::BaseControllerNode*>(cc);
- bc->setCommand(velMsg.vx,0.0,velMsg.vw);
+ this->PR2Copy->GetArmJointPositionCmd(PR2::PR2_RIGHT_ARM, *(this->PR2Copy->right_arm_chain_->q_IK_guess));
this->lock.unlock();
+ return true;
}
-
void
TestActuators::PublishFrameTransforms()
{
@@ -941,11 +1002,12 @@
controller::BaseControllerNode* bc = dynamic_cast<controller::BaseControllerNode*>(cc);
bc->getOdometry(x,y,yaw,vx,vy,vyaw);
+ // FIXME: z, roll, pitch not accounted for
tfs->sendInverseEuler("FRAMEID_ODOM",
"base",
x,
y,
- 0, //z - base_center_offset_z, /* get infor from xml: half height of base box */
+ z, //z - base_center_offset_z, /* get infor from xml: half height of base box */
yaw,
pitch,
roll,
@@ -979,7 +1041,7 @@
"base",
base_torso_offset_x,
base_torso_offset_y,
- spine_height+base_torso_offset_z, /* FIXME: spine elevator not accounted for */
+ spine_height+base_torso_offset_z,
0.0,
0.0,
0.0,
Modified: pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml 2008-08-22 00:49:26 UTC (rev 3455)
+++ pkg/trunk/robot_descriptions/wg_robot_description/pr2/controllers.xml 2008-08-22 00:51:53 UTC (rev 3456)
@@ -5,7 +5,7 @@
<controller name="base_controller" topic="base_controller" type="BaseControllerNode">
<map name="velocity_control" flag="base_control">
- <elem key="kp_speed">1.0</elem>
+ <elem key="kp_speed">10.0</elem>
</map>
<controller name="caster_front_left_controller" topic="caster_front_left_controller" type="JointVelocityControllerNode">
<joint name="caster_front_left_joint" >
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hsu...@us...> - 2008-08-22 02:08:32
|
Revision: 3464
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3464&view=rev
Author: hsujohnhsu
Date: 2008-08-22 02:08:41 +0000 (Fri, 22 Aug 2008)
Log Message:
-----------
update models to use new hokuyo meshes.
Modified Paths:
--------------
pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2.xml
pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2_test.xml
Modified: pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp
===================================================================
--- pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-22 02:01:17 UTC (rev 3463)
+++ pkg/trunk/drivers/simulator/gazebo_plugin/src/test_actuators.cpp 2008-08-22 02:08:41 UTC (rev 3464)
@@ -912,7 +912,7 @@
-
+#if 0
void
TestActuators::CmdLeftarmcartesianReceived()
{
@@ -983,6 +983,7 @@
this->lock.unlock();
return true;
}
+#endif
void
TestActuators::PublishFrameTransforms()
@@ -1398,8 +1399,6 @@
timeMsg.rostime);
// tilt laser location
- double tmpPitch, tmpPitchRate;
- //this->PR2Copy->hw.GetJointServoCmd(PR2::HEAD_LASER_PITCH, &tmpPitch, &tmpPitchRate );
controller::Controller* tlc = mc_.getControllerByName( "tilt_laser_controller" );
double tilt_laser_angle = dynamic_cast<controller::JointPositionControllerNode*>(tlc)->getMeasuredPosition();
tfs->sendEuler("tilt_laser",
@@ -1419,6 +1418,8 @@
double tmpSteerFR, tmpVelFR;
double tmpSteerRL, tmpVelRL;
double tmpSteerRR, tmpVelRR;
+ //controller::Controller* bcsw = mc_.getControllerByName( "base_controller" );
+ //double tilt_laser_angle = dynamic_cast<controller::BaseControllerNode*>(bcsw)->getMeasuredPosition();
//this->PR2Copy->hw.GetJointServoCmd(PR2::CASTER_FL_STEER, &tmpSteerFL, &tmpVelFL );
//this->PR2Copy->hw.GetJointServoCmd(PR2::CASTER_FR_STEER, &tmpSteerFR, &tmpVelFR );
//this->PR2Copy->hw.GetJointServoCmd(PR2::CASTER_RL_STEER, &tmpSteerRL, &tmpVelRL );
Modified: pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2.xml
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2.xml 2008-08-22 02:01:17 UTC (rev 3463)
+++ pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2.xml 2008-08-22 02:08:41 UTC (rev 3464)
@@ -1657,7 +1657,7 @@
<elem key="material">Gazebo/PioneerBody</elem>
</map>
<geometry name="pr2_tilt_laser_mesh_file">
- <mesh filename="hokuyo" /> <!-- mesh specified using an obj file -->
+ <mesh filename="hok_tilt" /> <!-- mesh specified using an obj file -->
</geometry>
</visual>
@@ -1717,8 +1717,8 @@
<map name="gazebo_material" flag="gazebo">
<elem key="material">Gazebo/PioneerBody</elem>
</map>
- <geometry name="pr2_base_laser_mesh_file">
- <mesh filename="hokuyo" scale="0.5 0.5 0.5"/> <!-- mesh specified using an obj file -->
+ <geometry name="pr2_base_laser_geom">
+ <mesh scale="0.001 0.001 0.001"/> <!-- mesh specified using an obj file -->
</geometry>
</visual>
Modified: pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2_test.xml
===================================================================
--- pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2_test.xml 2008-08-22 02:01:17 UTC (rev 3463)
+++ pkg/trunk/robot_descriptions/wg_robot_description/pr2/pr2_test.xml 2008-08-22 02:08:41 UTC (rev 3464)
@@ -1657,7 +1657,7 @@
<elem key="material">Gazebo/PioneerBody</elem>
</map>
<geometry name="pr2_tilt_laser_mesh_file">
- <mesh filename="hokuyo" /> <!-- mesh specified using an obj file -->
+ <mesh filename="hok_tilt" /> <!-- mesh specified using an obj file -->
</geometry>
</visual>
@@ -1718,7 +1718,7 @@
<elem key="material">Gazebo/PioneerBody</elem>
</map>
<geometry name="pr2_base_laser_mesh_file">
- <mesh filename="hokuyo" scale="0.5 0.5 0.5"/> <!-- mesh specified using an obj file -->
+ <mesh scale="0.001 0.001 0.001"/> <!-- mesh specified using an obj file -->
</geometry>
</visual>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rob...@us...> - 2008-08-22 09:37:56
|
Revision: 3471
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3471&view=rev
Author: rob_wheeler
Date: 2008-08-22 09:38:02 +0000 (Fri, 22 Aug 2008)
Log Message:
-----------
More svn ignores
Property Changed:
----------------
pkg/trunk/3rdparty/Cg/
pkg/trunk/3rdparty/eml/
pkg/trunk/3rdparty/ffmpeg/
pkg/trunk/3rdparty/freeimage/
pkg/trunk/3rdparty/gazebo/
pkg/trunk/3rdparty/irrlicht/
pkg/trunk/3rdparty/kdl/
pkg/trunk/3rdparty/newmat10/
pkg/trunk/3rdparty/ogre/
pkg/trunk/3rdparty/ois/
pkg/trunk/3rdparty/opencv/
pkg/trunk/3rdparty/opende/
pkg/trunk/3rdparty/rtnet/
pkg/trunk/3rdparty/xenomai/
pkg/trunk/controllers/generic_controllers/src/
pkg/trunk/controllers/pr2_controllers/src/
pkg/trunk/deprecated/libKDL/bin/
pkg/trunk/deprecated/rosControllers/src/
pkg/trunk/drivers/input/joy/
pkg/trunk/drivers/robot/pr2/libpr2HW/
pkg/trunk/mechanism/
pkg/trunk/mechanism/mechanism_control/src/
pkg/trunk/pr2_msgs/
pkg/trunk/robot_control_loops/pr2_etherCAT/
pkg/trunk/robot_control_loops/pr2_gazebo/
pkg/trunk/robot_descriptions/gazebo_robot_description/
pkg/trunk/robot_descriptions/gazebo_robot_description/world/
pkg/trunk/robot_descriptions/wg_robot_description_parser/
pkg/trunk/robot_msgs/
pkg/trunk/simulators/rosgazebo/
pkg/trunk/simulators/rosgazebo/src/
pkg/trunk/unstable_msgs/
pkg/trunk/util/image_utils/src/create_chessboard/
pkg/trunk/util/kinematics/libKinematics/
pkg/trunk/util/kinematics/robot_kinematics/bin/
pkg/trunk/util/libTF/
pkg/trunk/util/math_utils/test/
pkg/trunk/util/rosTF/
pkg/trunk/util/rosTF/src/
pkg/trunk/visualization/irrlicht_viewer/
pkg/trunk/visualization/wx_camera_panel/bin/
pkg/trunk/visualization/wx_topic_display/bin/
pkg/trunk/visualization/wxpy_ros/tests/
Property changes on: pkg/trunk/3rdparty/Cg
___________________________________________________________________
Added: svn:ignore
+ Cg
Cg-2.0_May2008_x86.tgz
Property changes on: pkg/trunk/3rdparty/eml
___________________________________________________________________
Added: svn:ignore
+ eml
Property changes on: pkg/trunk/3rdparty/ffmpeg
___________________________________________________________________
Added: svn:ignore
+ ffmpeg
ffmpeg-latest
Property changes on: pkg/trunk/3rdparty/freeimage
___________________________________________________________________
Added: svn:ignore
+ freeimage-3.10.0
freeimage
Property changes on: pkg/trunk/3rdparty/gazebo
___________________________________________________________________
Added: svn:ignore
+ gazebo
Property changes on: pkg/trunk/3rdparty/irrlicht
___________________________________________________________________
Added: svn:ignore
+ irrlicht-1.4
irrlicht
Property changes on: pkg/trunk/3rdparty/kdl
___________________________________________________________________
Added: svn:ignore
+ kdl
Property changes on: pkg/trunk/3rdparty/newmat10
___________________________________________________________________
Added: svn:ignore
+ newmat
Property changes on: pkg/trunk/3rdparty/ogre
___________________________________________________________________
Added: svn:ignore
+ ogre-v1-4-8
ogre
Property changes on: pkg/trunk/3rdparty/ois
___________________________________________________________________
Added: svn:ignore
+ ois-cvs
ois
Property changes on: pkg/trunk/3rdparty/opencv
___________________________________________________________________
Added: svn:ignore
+ opencv-1.0.0
opencv
Property changes on: pkg/trunk/3rdparty/opende
___________________________________________________________________
Added: svn:ignore
+ opende
Property changes on: pkg/trunk/3rdparty/rtnet
___________________________________________________________________
Added: svn:ignore
+ rtnet-src
rtnet
Property changes on: pkg/trunk/3rdparty/xenomai
___________________________________________________________________
Added: svn:ignore
+ linux
xenomai
Property changes on: pkg/trunk/controllers/generic_controllers/src
___________________________________________________________________
Added: svn:ignore
+ generic_controllers
Property changes on: pkg/trunk/controllers/pr2_controllers/src
___________________________________________________________________
Added: svn:ignore
+ pr2_controllers
Property changes on: pkg/trunk/deprecated/libKDL/bin
___________________________________________________________________
Added: svn:ignore
+ pr2_kin_test
dynamics
Property changes on: pkg/trunk/deprecated/rosControllers/src
___________________________________________________________________
Added: svn:ignore
+ rosControllers
Property changes on: pkg/trunk/drivers/input/joy
___________________________________________________________________
Added: svn:ignore
+ joy
src
Property changes on: pkg/trunk/drivers/robot/pr2/libpr2HW
___________________________________________________________________
Added: svn:ignore
+ test_pr2HW
Property changes on: pkg/trunk/mechanism
___________________________________________________________________
Added: svn:ignore
+ svn-commit.tmp
Property changes on: pkg/trunk/mechanism/mechanism_control/src
___________________________________________________________________
Added: svn:ignore
+ mechanism_control
Property changes on: pkg/trunk/pr2_msgs
___________________________________________________________________
Added: svn:ignore
+ src
Property changes on: pkg/trunk/robot_control_loops/pr2_etherCAT
___________________________________________________________________
Added: svn:ignore
+ pr2_etherCAT
Property changes on: pkg/trunk/robot_control_loops/pr2_gazebo
___________________________________________________________________
Added: svn:ignore
+ pr2_gazebo
Property changes on: pkg/trunk/robot_descriptions/gazebo_robot_description
___________________________________________________________________
Added: svn:ignore
+ urdf2gazebo
Property changes on: pkg/trunk/robot_descriptions/gazebo_robot_description/world
___________________________________________________________________
Added: svn:ignore
+ pr2_xml_test.model
pr2_xml.model
pr2_xml_rosgazebo.model
pr2_xml_nolimit.model
Property changes on: pkg/trunk/robot_descriptions/wg_robot_description_parser
___________________________________________________________________
Added: svn:ignore
+ merge
parse
test_cpp_parser
Property changes on: pkg/trunk/robot_msgs
___________________________________________________________________
Added: svn:ignore
+ src
Property changes on: pkg/trunk/simulators/rosgazebo
___________________________________________________________________
Added: svn:ignore
+ groundtruthtransform
rosgazebo
Property changes on: pkg/trunk/simulators/rosgazebo/src
___________________________________________________________________
Added: svn:ignore
+ rosgazebo
Property changes on: pkg/trunk/unstable_msgs
___________________________________________________________________
Added: svn:ignore
+ src
Property changes on: pkg/trunk/util/image_utils/src/create_chessboard
___________________________________________________________________
Added: svn:ignore
+ create_chessboard
Property changes on: pkg/trunk/util/kinematics/libKinematics
___________________________________________________________________
Added: svn:ignore
+ test_PR2ik
Property changes on: pkg/trunk/util/kinematics/robot_kinematics/bin
___________________________________________________________________
Added: svn:ignore
+ robot_kinematics_test
Property changes on: pkg/trunk/util/libTF
___________________________________________________________________
Added: svn:ignore
+ simpletest
pose3d_unittest
test_interp
testMatrix
testtf
testMatrixQuaternion
Property changes on: pkg/trunk/util/math_utils/test
___________________________________________________________________
Added: svn:ignore
+ utest
Property changes on: pkg/trunk/util/rosTF
___________________________________________________________________
Added: svn:ignore
+ frameServer
viewTF
testServer
testClient
Property changes on: pkg/trunk/util/rosTF/src
___________________________________________________________________
Added: svn:ignore
+ rosTF
Property changes on: pkg/trunk/visualization/irrlicht_viewer
___________________________________________________________________
Added: svn:ignore
+ clouder
viewer
Property changes on: pkg/trunk/visualization/wx_camera_panel/bin
___________________________________________________________________
Added: svn:ignore
+ camera_test
Property changes on: pkg/trunk/visualization/wx_topic_display/bin
___________________________________________________________________
Added: svn:ignore
+ simpletest
Property changes on: pkg/trunk/visualization/wxpy_ros/tests
___________________________________________________________________
Added: svn:ignore
+ ros_panel.xrc.bak
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rob...@us...> - 2008-08-22 15:59:31
|
Revision: 3472
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=3472&view=rev
Author: rob_wheeler
Date: 2008-08-22 15:59:40 +0000 (Fri, 22 Aug 2008)
Log Message:
-----------
More svn:ignore goodness
Property Changed:
----------------
pkg/trunk/3rdparty/gazebo/
pkg/trunk/3rdparty/ogre/
pkg/trunk/controllers/pr2_controllers/
pkg/trunk/robot_descriptions/wg_robot_description/
pkg/trunk/util/string_utils/
Property changes on: pkg/trunk/3rdparty/gazebo
___________________________________________________________________
Modified: svn:ignore
- gazebo
+ gazebo
patched
Property changes on: pkg/trunk/3rdparty/ogre
___________________________________________________________________
Modified: svn:ignore
- ogre-v1-4-8
ogre
+ ogre-v1-*
ogre
Property changes on: pkg/trunk/controllers/pr2_controllers
___________________________________________________________________
Added: svn:ignore
+ testBaseController
Property changes on: pkg/trunk/robot_descriptions/wg_robot_description
___________________________________________________________________
Added: svn:ignore
+ test_update
Property changes on: pkg/trunk/util/string_utils
___________________________________________________________________
Added: svn:ignore
+ test_string_utils
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|