Skip to content

Commit e0de5be

Browse files
mpowelsonLevi-Armstrong
authored andcommitted
Move ManipulatorManager into Environment
1 parent 1a25119 commit e0de5be

File tree

44 files changed

+314
-231
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+314
-231
lines changed

tesseract/tesseract/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,13 @@ add_code_coverage_all_targets(EXCLUDE ${COVERAGE_EXCLUDE})
3636
tesseract_variables()
3737

3838
# Create target
39-
add_library(${PROJECT_NAME} src/tesseract.cpp src/manipulator_manager.cpp)
39+
add_library(${PROJECT_NAME} src/tesseract.cpp)
4040
target_link_libraries(${PROJECT_NAME} PUBLIC
4141
tesseract::tesseract_urdf
4242
tesseract::tesseract_scene_graph
4343
tesseract::tesseract_collision_bullet
4444
tesseract::tesseract_environment_kdl
4545
tesseract::tesseract_environment_ofkt
46-
tesseract::tesseract_kinematics_kdl
47-
tesseract::tesseract_kinematics_opw
4846
tesseract::tesseract_command_language
4947
console_bridge::console_bridge)
5048
target_compile_options(${PROJECT_NAME} PRIVATE ${TESSERACT_COMPILE_OPTIONS_PRIVATE})

tesseract/tesseract/include/tesseract/tesseract.h

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,8 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP
3737

3838
#include <tesseract/tesseract_init_info.h>
3939
#include <tesseract_environment/core/environment.h>
40-
#include <tesseract_scene_graph/srdf_model.h>
4140
#include <tesseract_scene_graph/utils.h>
4241
#include <tesseract_scene_graph/resource_locator.h>
43-
#include <tesseract/manipulator_manager.h>
4442
#include <tesseract_command_language/manipulator_info.h>
4543

4644
namespace tesseract
@@ -74,6 +72,7 @@ class Tesseract
7472

7573
bool isInitialized() const;
7674

75+
bool init(const tesseract_environment::Environment& env);
7776
bool init(tesseract_scene_graph::SceneGraph::Ptr scene_graph);
7877
bool init(tesseract_scene_graph::SceneGraph::Ptr scene_graph, tesseract_scene_graph::SRDFModel::Ptr srdf_model);
7978
bool init(const std::string& urdf_string, const tesseract_scene_graph::ResourceLocator::Ptr& locator);
@@ -85,8 +84,6 @@ class Tesseract
8584
const boost::filesystem::path& srdf_path,
8685
const tesseract_scene_graph::ResourceLocator::Ptr& locator);
8786

88-
bool init(const tesseract_environment::Environment& env, const ManipulatorManager& manipulator_manager);
89-
9087
bool init(const TesseractInitInfo::Ptr& init_info);
9188

9289
/** @brief Clone the Tesseract and all of the internals
@@ -102,8 +99,10 @@ class Tesseract
10299
tesseract_environment::Environment::Ptr getEnvironment();
103100
tesseract_environment::Environment::ConstPtr getEnvironment() const;
104101

105-
ManipulatorManager::Ptr getManipulatorManager();
106-
ManipulatorManager::ConstPtr getManipulatorManager() const;
102+
DEPRECATED("Please use getEnvironment->getManipulatorManager()")
103+
tesseract_environment::ManipulatorManager::Ptr getManipulatorManager();
104+
DEPRECATED("Please use getEnvironment->getManipulatorManager()")
105+
tesseract_environment::ManipulatorManager::ConstPtr getManipulatorManager() const;
107106

108107
/**
109108
* @brief Find tool center point provided in the manipulator info
@@ -132,7 +131,6 @@ class Tesseract
132131
private:
133132
bool initialized_;
134133
tesseract_environment::Environment::Ptr environment_;
135-
ManipulatorManager::Ptr manipulator_manager_;
136134
TesseractInitInfo::Ptr init_info_;
137135
std::vector<FindTCPCallbackFn> find_tcp_cb_;
138136

tesseract/tesseract/include/tesseract/tesseract_init_info.h

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
3131
#include <boost/filesystem.hpp>
3232
TESSERACT_COMMON_IGNORE_WARNINGS_POP
3333

34-
#include <tesseract/manipulator_manager.h>
3534
#include <tesseract_environment/core/environment.h>
3635
#include <tesseract_scene_graph/resource_locator.h>
3736
#include <tesseract_scene_graph/graph.h>
@@ -48,7 +47,7 @@ enum class TesseractInitType
4847
URDF_STRING_SRDF_STRING,
4948
URDF_PATH,
5049
URDF_PATH_SRDF_PATH,
51-
ENVIRONMENT_MANIPULATOR_MANAGER
50+
ENVIRONMENT
5251
};
5352

5453
/** @brief Used to store information about how a given Tesseract was initialized. See the Tesseract init methods.
@@ -79,19 +78,12 @@ struct TesseractInitInfo
7978
tesseract_scene_graph::SRDFModel::Ptr srdf_model;
8079

8180
/**
82-
* @brief Used when InitType is ENVIRONMENT_MANIPULATOR_MANAGER
81+
* @brief Used when InitType is ENVIRONMENT
8382
*
8483
* This store a clone of the environment
8584
*/
8685
tesseract_environment::Environment::Ptr environment;
8786

88-
/**
89-
* @brief Used when InitType is ENVIRONMENT_MANIPULATOR_MANAGER
90-
*
91-
* This stores a clone of the manipulator manager
92-
*/
93-
tesseract::ManipulatorManager::Ptr manipulator_manager;
94-
9587
/** @brief Used when InitType is URDF_STRING and URDF_STRING_SRDF_STRING*/
9688
std::string urdf_string;
9789
/** @brief Used when InitType is URDF_STRING_SRDF_STRING*/

tesseract/tesseract/src/tesseract.cpp

Lines changed: 18 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,6 @@ bool Tesseract::init(tesseract_scene_graph::SceneGraph::Ptr scene_graph)
6666
auto srdf = std::make_shared<tesseract_scene_graph::SRDFModel>();
6767
srdf->getName() = scene_graph->getName();
6868

69-
manipulator_manager_ = std::make_shared<ManipulatorManager>();
70-
if (!manipulator_manager_->init(environment_, srdf))
71-
{
72-
CONSOLE_BRIDGE_logError("Failed to initialize manipulator manager.");
73-
return false;
74-
}
75-
7669
registerDefaultContactManagers();
7770

7871
initialized_ = true;
@@ -92,19 +85,12 @@ bool Tesseract::init(tesseract_scene_graph::SceneGraph::Ptr scene_graph,
9285

9386
// Construct Environment from Scene Graph
9487
environment_ = std::make_shared<tesseract_environment::Environment>();
95-
if (!environment_->init<tesseract_environment::OFKTStateSolver>(*scene_graph))
88+
if (!environment_->init<tesseract_environment::OFKTStateSolver>(*scene_graph, srdf_model))
9689
{
9790
CONSOLE_BRIDGE_logError("Failed to initialize environment.");
9891
return false;
9992
}
10093

101-
manipulator_manager_ = std::make_shared<ManipulatorManager>();
102-
if (!manipulator_manager_->init(environment_, std::make_shared<tesseract_scene_graph::SRDFModel>(*srdf_model)))
103-
{
104-
CONSOLE_BRIDGE_logError("Failed to initialize manipulator manager.");
105-
return false;
106-
}
107-
10894
registerDefaultContactManagers();
10995

11096
initialized_ = true;
@@ -135,16 +121,6 @@ bool Tesseract::init(const std::string& urdf_string, const tesseract_scene_graph
135121
return false;
136122
}
137123

138-
auto srdf = std::make_shared<tesseract_scene_graph::SRDFModel>();
139-
srdf->getName() = scene_graph->getName();
140-
141-
manipulator_manager_ = std::make_shared<ManipulatorManager>();
142-
if (!manipulator_manager_->init(environment_, srdf))
143-
{
144-
CONSOLE_BRIDGE_logError("Failed to initialize manipulator manager.");
145-
return false;
146-
}
147-
148124
registerDefaultContactManagers();
149125

150126
initialized_ = true;
@@ -183,19 +159,12 @@ bool Tesseract::init(const std::string& urdf_string,
183159

184160
// Construct Environment
185161
environment_ = std::make_shared<tesseract_environment::Environment>();
186-
if (!environment_->init<tesseract_environment::OFKTStateSolver>(*scene_graph))
162+
if (!environment_->init<tesseract_environment::OFKTStateSolver>(*scene_graph, srdf))
187163
{
188164
CONSOLE_BRIDGE_logError("Failed to initialize environment.");
189165
return false;
190166
}
191167

192-
manipulator_manager_ = std::make_shared<ManipulatorManager>();
193-
if (!manipulator_manager_->init(environment_, srdf))
194-
{
195-
CONSOLE_BRIDGE_logError("Failed to initialize manipulator manager.");
196-
return false;
197-
}
198-
199168
registerDefaultContactManagers();
200169

201170
initialized_ = true;
@@ -227,16 +196,6 @@ bool Tesseract::init(const boost::filesystem::path& urdf_path,
227196
return false;
228197
}
229198

230-
auto srdf = std::make_shared<tesseract_scene_graph::SRDFModel>();
231-
srdf->getName() = scene_graph->getName();
232-
233-
manipulator_manager_ = std::make_shared<ManipulatorManager>();
234-
if (!manipulator_manager_->init(environment_, srdf))
235-
{
236-
CONSOLE_BRIDGE_logError("Failed to initialize manipulator manager.");
237-
return false;
238-
}
239-
240199
registerDefaultContactManagers();
241200

242201
initialized_ = true;
@@ -275,34 +234,24 @@ bool Tesseract::init(const boost::filesystem::path& urdf_path,
275234

276235
// Construct Environment
277236
environment_ = std::make_shared<tesseract_environment::Environment>();
278-
if (!environment_->init<tesseract_environment::OFKTStateSolver>(*scene_graph))
237+
if (!environment_->init<tesseract_environment::OFKTStateSolver>(*scene_graph, srdf))
279238
{
280239
CONSOLE_BRIDGE_logError("Failed to initialize environment.");
281240
return false;
282241
}
283242

284-
manipulator_manager_ = std::make_shared<ManipulatorManager>();
285-
if (!manipulator_manager_->init(environment_, srdf))
286-
{
287-
CONSOLE_BRIDGE_logError("Failed to initialize manipulator manager.");
288-
return false;
289-
}
290-
291243
registerDefaultContactManagers();
292244

293245
initialized_ = true;
294246
return true;
295247
}
296248

297-
bool Tesseract::init(const tesseract_environment::Environment& env, const ManipulatorManager& manipulator_manager)
249+
bool Tesseract::init(const tesseract_environment::Environment& env)
298250
{
299251
clear();
300252
init_info_ = std::make_shared<TesseractInitInfo>();
301-
init_info_->type = TesseractInitType::ENVIRONMENT_MANIPULATOR_MANAGER;
253+
init_info_->type = TesseractInitType::ENVIRONMENT;
302254
init_info_->environment = env.clone();
303-
init_info_->manipulator_manager = manipulator_manager.clone(init_info_->environment);
304-
environment_ = env.clone();
305-
manipulator_manager_ = manipulator_manager.clone(environment_);
306255
initialized_ = true;
307256
return initialized_;
308257
}
@@ -329,8 +278,8 @@ bool Tesseract::init(const TesseractInitInfo::Ptr& init_info)
329278
case TesseractInitType::URDF_PATH_SRDF_PATH:
330279
init(init_info->urdf_path, init_info->srdf_path, init_info->resource_locator);
331280
break;
332-
case TesseractInitType::ENVIRONMENT_MANIPULATOR_MANAGER:
333-
init(*init_info->environment, *init_info->manipulator_manager);
281+
case TesseractInitType::ENVIRONMENT:
282+
init(*init_info->environment);
334283
break;
335284
default:
336285
CONSOLE_BRIDGE_logError("Unsupported TesseractInitInfo type.");
@@ -346,10 +295,6 @@ Tesseract::Ptr Tesseract::clone() const
346295
if (environment_)
347296
clone->environment_ = environment_->clone();
348297

349-
if (clone->environment_)
350-
if (manipulator_manager_)
351-
clone->manipulator_manager_ = manipulator_manager_->clone(clone->environment_);
352-
353298
clone->init_info_ = init_info_;
354299
clone->initialized_ = initialized_;
355300
clone->find_tcp_cb_ = find_tcp_cb_;
@@ -372,8 +317,14 @@ const tesseract_scene_graph::ResourceLocator::Ptr& Tesseract::getResourceLocator
372317
tesseract_environment::Environment::Ptr Tesseract::getEnvironment() { return environment_; }
373318
tesseract_environment::Environment::ConstPtr Tesseract::getEnvironment() const { return environment_; }
374319

375-
ManipulatorManager::Ptr Tesseract::getManipulatorManager() { return manipulator_manager_; }
376-
ManipulatorManager::ConstPtr Tesseract::getManipulatorManager() const { return manipulator_manager_; }
320+
tesseract_environment::ManipulatorManager::Ptr Tesseract::getManipulatorManager()
321+
{
322+
return environment_->getManipulatorManager();
323+
}
324+
tesseract_environment::ManipulatorManager::ConstPtr Tesseract::getManipulatorManager() const
325+
{
326+
return environment_->getManipulatorManager();
327+
}
377328

378329
/** @brief registerDefaultContactManagers */
379330
bool Tesseract::registerDefaultContactManagers()
@@ -399,7 +350,6 @@ void Tesseract::clear()
399350
{
400351
initialized_ = false;
401352
environment_ = nullptr;
402-
manipulator_manager_ = nullptr;
403353
init_info_ = nullptr;
404354
find_tcp_cb_.clear();
405355
}
@@ -409,7 +359,7 @@ Eigen::Isometry3d Tesseract::findTCP(const tesseract_planning::ManipulatorInfo&
409359
if (manip_info.tcp.empty())
410360
return Eigen::Isometry3d::Identity();
411361

412-
auto composite_mi_fwd_kin = manipulator_manager_->getFwdKinematicSolver(manip_info.manipulator);
362+
auto composite_mi_fwd_kin = environment_->getManipulatorManager()->getFwdKinematicSolver(manip_info.manipulator);
413363
if (composite_mi_fwd_kin == nullptr)
414364
throw std::runtime_error("findTCP: Manipulator '" + manip_info.manipulator + "' does not exist!");
415365

@@ -418,8 +368,8 @@ Eigen::Isometry3d Tesseract::findTCP(const tesseract_planning::ManipulatorInfo&
418368
{
419369
// Check Manipulator Manager for TCP
420370
const std::string& tcp_name = manip_info.tcp.getString();
421-
if (manipulator_manager_->hasGroupTCP(manip_info.manipulator, tcp_name))
422-
return manipulator_manager_->getGroupsTCP(manip_info.manipulator, tcp_name);
371+
if (environment_->getManipulatorManager()->hasGroupTCP(manip_info.manipulator, tcp_name))
372+
return environment_->getManipulatorManager()->getGroupsTCP(manip_info.manipulator, tcp_name);
423373

424374
// Check Environment for links and calculate TCP
425375
tesseract_environment::EnvState::ConstPtr env_state = environment_->getCurrentState();

tesseract/tesseract/test/tesseract_unit.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,6 @@ TEST(TesseractUnit, TesseractURDFPathSRDFPathLocatorInitUnit) // NOLINT
8484
{
8585
}
8686

87-
TEST(TesseractUnit, TesseractEnvironmentManipulatorManagerInitUnit) // NOLINT
88-
{
89-
}
90-
9187
TEST(TesseractUnit, TesseractInitInfoInitUnit) // NOLINT
9288
{
9389
}

tesseract/tesseract_environment/CMakeLists.txt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ find_package(Eigen3 REQUIRED)
1010
find_package(orocos_kdl REQUIRED)
1111
find_package(console_bridge REQUIRED)
1212
find_package(tesseract_collision REQUIRED)
13+
find_package(tesseract_kinematics REQUIRED)
1314
find_package(tesseract_scene_graph REQUIRED)
1415
find_package(tesseract_common REQUIRED)
1516
find_package(cmake_common_scripts REQUIRED)
@@ -33,8 +34,13 @@ add_code_coverage_all_targets(EXCLUDE ${COVERAGE_EXCLUDE})
3334
tesseract_variables()
3435

3536
# Create interface for core
36-
add_library(${PROJECT_NAME}_core src/core/environment.cpp)
37-
target_link_libraries(${PROJECT_NAME}_core PUBLIC tesseract::tesseract_common tesseract::tesseract_collision_core tesseract::tesseract_scene_graph)
37+
add_library(${PROJECT_NAME}_core src/core/environment.cpp src/manipulator_manager/manipulator_manager.cpp)
38+
target_link_libraries(${PROJECT_NAME}_core PUBLIC
39+
tesseract::tesseract_common
40+
tesseract::tesseract_collision_core
41+
tesseract::tesseract_scene_graph
42+
tesseract::tesseract_kinematics_kdl
43+
tesseract::tesseract_kinematics_opw)
3844
target_compile_options(${PROJECT_NAME}_core PRIVATE ${TESSERACT_COMPILE_OPTIONS_PRIVATE})
3945
target_compile_options(${PROJECT_NAME}_core PUBLIC ${TESSERACT_COMPILE_OPTIONS_PUBLIC})
4046
target_compile_definitions(${PROJECT_NAME}_core PUBLIC ${TESSERACT_COMPILE_DEFINITIONS})
@@ -76,7 +82,7 @@ target_include_directories(${PROJECT_NAME}_ofkt PUBLIC
7682
target_include_directories(${PROJECT_NAME}_ofkt SYSTEM PUBLIC
7783
${EIGEN3_INCLUDE_DIRS})
7884

79-
configure_package(NAMESPACE tesseract TARGETS ${PROJECT_NAME}_core ${PROJECT_NAME}_kdl ${PROJECT_NAME}_ofkt)
85+
configure_package(NAMESPACE tesseract TARGETS ${PROJECT_NAME}_core ${PROJECT_NAME}_kdl ${PROJECT_NAME}_ofkt)
8086

8187
# Mark cpp header files for installation
8288
install(DIRECTORY include/${PROJECT_NAME}

tesseract/tesseract_environment/include/tesseract_environment/core/commands.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,13 +288,11 @@ class AddSceneGraphCommand : public Command
288288
std::string prefix_;
289289
};
290290

291-
class TESSERACT_ENVIRONMENT_CORE_PUBLIC ChangeJointLimitsCommand : public Command
291+
class ChangeJointLimitsCommand : public Command
292292
{
293293
public:
294294
ChangeJointLimitsCommand(std::string joint_name, tesseract_scene_graph::JointLimits joint_limits)
295-
: Command(CommandType::CHANGE_JOINT_LIMITS)
296-
, joint_name_(std::move(joint_name))
297-
, joint_limits_(std::move(joint_limits))
295+
: Command(CommandType::CHANGE_JOINT_LIMITS), joint_name_(std::move(joint_name)), joint_limits_(joint_limits)
298296
{
299297
}
300298
const std::string& getJointName() const { return joint_name_; }

0 commit comments

Comments
 (0)