diff --git a/Demos/CommonRigidBodySetup.h b/Demos/CommonRigidBodySetup.h index 0520b038d..41507db05 100644 --- a/Demos/CommonRigidBodySetup.h +++ b/Demos/CommonRigidBodySetup.h @@ -70,14 +70,15 @@ struct CommonRigidBodySetup : public CommonPhysicsSetup //cleanup in the reverse order of creation/initialization //remove the rigidbodies from the dynamics world and delete them - int i; - for (i = m_dynamicsWorld->getNumConstraints() - 1; i >= 0; i--) - { - m_dynamicsWorld->removeConstraint(m_dynamicsWorld->getConstraint(i)); - } + if (m_dynamicsWorld) { + int i; + for (i = m_dynamicsWorld->getNumConstraints() - 1; i >= 0; i--) + { + m_dynamicsWorld->removeConstraint(m_dynamicsWorld->getConstraint(i)); + } for (i = m_dynamicsWorld->getNumCollisionObjects() - 1; i >= 0; i--) { btCollisionObject* obj = m_dynamicsWorld->getCollisionObjectArray()[i]; diff --git a/Demos3/AllBullet2Demos/BulletDemoEntries.h b/Demos3/AllBullet2Demos/BulletDemoEntries.h index b03fe08fe..9f1ae4450 100644 --- a/Demos3/AllBullet2Demos/BulletDemoEntries.h +++ b/Demos3/AllBullet2Demos/BulletDemoEntries.h @@ -15,6 +15,7 @@ #include "../bullet2/ChainDemo/ChainDemo.h" #include "../../Demos/CcdPhysicsDemo/CcdPhysicsSetup.h" #include "../../Demos/ConstraintDemo/ConstraintPhysicsSetup.h" +#include "../ImportURDFDemo/ImportUrdfSetup.h" static BulletDemoInterface* MyCcdPhysicsDemoCreateFunc(SimpleOpenGL3App* app) @@ -35,6 +36,11 @@ static BulletDemoInterface* MyConstraintCreateFunc(SimpleOpenGL3App* app) return new BasicDemo(app, physicsSetup); } +static BulletDemoInterface* MyImportUrdfCreateFunc(SimpleOpenGL3App* app) +{ + CommonPhysicsSetup* physicsSetup = new ImportUrdfDemo(); + return new BasicDemo(app, physicsSetup); +} struct BulletDemoEntry { @@ -54,7 +60,8 @@ static BulletDemoEntry allDemos[]= { 1, "CcdDemo", MyCcdPhysicsDemoCreateFunc }, { 1, "Kinematic", MyKinematicObjectCreateFunc }, { 1, "Constraints", MyConstraintCreateFunc }, - + { 1, "URDF", MyImportUrdfCreateFunc }, + /* {1,"ChainDemo",ChainDemo::MyCreateFunc}, // {0, "Stress tests", 0 }, diff --git a/Demos3/AllBullet2Demos/CMakeLists.txt b/Demos3/AllBullet2Demos/CMakeLists.txt index 850ef5ba4..965e634ea 100644 --- a/Demos3/AllBullet2Demos/CMakeLists.txt +++ b/Demos3/AllBullet2Demos/CMakeLists.txt @@ -27,7 +27,7 @@ SET(App_AllBullet2Demos_SRCS ../bullet2/BasicDemo/BasicDemo.cpp ../bullet2/BasicDemo/BasicDemo.h # the next few demos are not converted to 'newer' structure yet -# target is to convert all Bullet 2 demos in new structure, but need to settle down on features +# target is to convert all Bullet 2 demos in new structure but need to settle down on features # ../bullet2/BasicDemo/HingeDemo.cpp # ../bullet2/BasicDemo/HingeDemo.h # ../bullet2/ChainDemo/ChainDemo.cpp @@ -38,9 +38,30 @@ SET(App_AllBullet2Demos_SRCS # ../bullet2/LuaDemo/LuaDemo.h ../GpuDemos/gwenUserInterface.cpp ../GpuDemos/gwenUserInterface.h + ../ImportURDFDemo/ImportURDFSetup.cpp + ../ImportURDFDemo/ImportURDFSetup.h ../../btgui/Timing/b3Clock.cpp ../../btgui/Timing/b3Clock.h - + ../../btgui/urdf/urdfdom/urdf_parser/src/pose.cpp + ../../btgui/urdf/urdfdom/urdf_parser/src/model.cpp + ../../btgui/urdf/urdfdom/urdf_parser/src/link.cpp + ../../btgui/urdf/urdfdom/urdf_parser/src/joint.cpp + ../../btgui/urdf/urdfdom/urdf_parser/include/urdf_parser/urdf_parser.h + ../../btgui/urdf/urdfdom_headers/urdf_exception/include/urdf_exception/exception.h + ../../btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/pose.h + ../../btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/model.h + ../../btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/link.h + ../../btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/joint.h + ../../btgui/tinyxml/tinystr.cpp + ../../btgui/tinyxml/tinyxml.cpp + ../../btgui/tinyxml/tinyxmlerror.cpp + ../../btgui/tinyxml/tinyxmlparser.cpp + ../../btgui/urdf/boost_replacement/lexical_cast.h + ../../btgui/urdf/boost_replacement/shared_ptr.h + ../../btgui/urdf/boost_replacement/printf_console.cpp + ../../btgui/urdf/boost_replacement/printf_console.h + ../../btgui/urdf/boost_replacement/string_split.cpp + ../../btgui/urdf/boost_replacement/string_split.h ${BULLET_PHYSICS_SOURCE_DIR}/build3/bullet.rc ) diff --git a/Demos3/ImportURDFDemo/ImportURDFSetup.cpp b/Demos3/ImportURDFDemo/ImportURDFSetup.cpp new file mode 100644 index 000000000..e20b8d5f6 --- /dev/null +++ b/Demos3/ImportURDFDemo/ImportURDFSetup.cpp @@ -0,0 +1,133 @@ +#include "ImportURDFSetup.h" + +ImportUrdfDemo::ImportUrdfDemo() +{ + +} + +ImportUrdfDemo::~ImportUrdfDemo() +{ + +} + + + + +#include "urdf/urdfdom/urdf_parser/include/urdf_parser/urdf_parser.h" +#include +#include + +using namespace urdf; + +void printTree(my_shared_ptr link,int level = 0) +{ + level+=2; + int count = 0; + for (std::vector >::const_iterator child = link->child_links.begin(); child != link->child_links.end(); child++) + { + if (*child) + { + for(int j=0;jname << std::endl; + // first grandchild + printTree(*child,level); + } + else + { + for(int j=0;jname << " has a null child!" << *child << std::endl; + } + } + +} + + +#define MSTRINGIFY(A) #A + + +const char* urdf_char = MSTRINGIFY( + + + + + + + + + + + + + + + + + + + + + ); + +const char* urdf_char2 = MSTRINGIFY( + + + + + + + + + + + ); + +int main2(int argc, char** argv) +{ + + std::string xml_string; + + if (argc < 2){ + std::cerr << "No URDF file name provided, using a dummy test URDF" << std::endl; + + xml_string = std::string(urdf_char); + + } else + { + + + std::fstream xml_file(argv[1], std::fstream::in); + while ( xml_file.good() ) + { + std::string line; + std::getline( xml_file, line); + xml_string += (line + "\n"); + } + xml_file.close(); + } + + my_shared_ptr robot = parseURDF(xml_string); + if (!robot){ + std::cerr << "ERROR: Model Parsing the xml failed" << std::endl; + return -1; + } + std::cout << "robot name is: " << robot->getName() << std::endl; + + // get info from parser + std::cout << "---------- Successfully Parsed XML ---------------" << std::endl; + // get root link + my_shared_ptr root_link=robot->getRoot(); + if (!root_link) return -1; + + std::cout << "root Link: " << root_link->name << " has " << root_link->child_links.size() << " child(ren)" << std::endl; + + + // print entire tree + printTree(root_link); + return 0; +} + + +void ImportUrdfDemo::initPhysics(GraphicsPhysicsBridge& gfxBridge) +{ + main2(0,0); +} \ No newline at end of file diff --git a/Demos3/ImportURDFDemo/ImportURDFSetup.h b/Demos3/ImportURDFDemo/ImportURDFSetup.h new file mode 100644 index 000000000..043c6f438 --- /dev/null +++ b/Demos3/ImportURDFDemo/ImportURDFSetup.h @@ -0,0 +1,16 @@ +#ifndef IMPORT_URDF_SETUP_H +#define IMPORT_URDF_SETUP_H + + +#include "../../Demos/CommonRigidBodySetup.h" + +class ImportUrdfDemo : public CommonRigidBodySetup +{ +public: + ImportUrdfDemo(); + virtual ~ImportUrdfDemo(); + + virtual void initPhysics(GraphicsPhysicsBridge& gfxBridge); +}; + +#endif //IMPORT_URDF_SETUP_H diff --git a/btgui/urdf/urdfdom/urdf_parser/include/urdf_parser/urdf_parser.h b/btgui/urdf/urdfdom/urdf_parser/include/urdf_parser/urdf_parser.h index b4bf6082a..336af0fa3 100644 --- a/btgui/urdf/urdfdom/urdf_parser/include/urdf_parser/urdf_parser.h +++ b/btgui/urdf/urdfdom/urdf_parser/include/urdf_parser/urdf_parser.h @@ -40,7 +40,7 @@ #include #include -#include +#include "tinyxml/tinyxml.h" //#include @@ -49,7 +49,7 @@ #endif //M_PI -#include +#include diff --git a/btgui/urdf/urdfdom/urdf_parser/src/joint.cpp b/btgui/urdf/urdfdom/urdf_parser/src/joint.cpp index 3852fe08f..bde0c5f73 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/joint.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/joint.cpp @@ -35,22 +35,22 @@ /* Author: John Hsu */ #include -#include +#include #ifdef URDF_USE_BOOST #include #else -#include +#include #endif -#include +#include #ifdef URDF_USE_CONSOLE_BRIDGE #include #else - #include "printf_console.h" + #include "urdf/boost_replacement/printf_console.h" #endif -#include -#include +#include +#include namespace urdf{ diff --git a/btgui/urdf/urdfdom/urdf_parser/src/link.cpp b/btgui/urdf/urdfdom/urdf_parser/src/link.cpp index e28906c3c..a224146b3 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/link.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/link.cpp @@ -35,22 +35,22 @@ /* Author: Wim Meeussen */ -#include -#include +#include +#include //#include //#include #ifdef URDF_USE_BOOST #include #else -#include +#include #endif #include -#include +#include #ifdef URDF_USE_CONSOLE_BRIDGE #include #else -#include "printf_console.h" +#include "urdf/boost_replacement/printf_console.h" #endif diff --git a/btgui/urdf/urdfdom/urdf_parser/src/model.cpp b/btgui/urdf/urdfdom/urdf_parser/src/model.cpp index 8819c739e..7c9d7e9c7 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/model.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/model.cpp @@ -35,11 +35,11 @@ /* Author: Wim Meeussen */ //#include #include -#include "urdf_parser/urdf_parser.h" +#include "urdf/urdfdom/urdf_parser/include/urdf_parser/urdf_parser.h" #ifdef URDF_USE_CONSOLE_BRIDGE #include #else - #include "printf_console.h" + #include "urdf/boost_replacement/printf_console.h" #endif namespace urdf{ diff --git a/btgui/urdf/urdfdom/urdf_parser/src/pose.cpp b/btgui/urdf/urdfdom/urdf_parser/src/pose.cpp index 6b78e1da9..e90247c0e 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/pose.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/pose.cpp @@ -35,7 +35,7 @@ /* Author: Wim Meeussen, John Hsu */ -#include +#include #include #include //#include @@ -44,11 +44,11 @@ #ifdef URDF_USE_CONSOLE_BRIDGE #include #else -#include "printf_console.h" +#include "urdf/boost_replacement/printf_console.h" #endif -#include -#include +#include +#include namespace urdf{ diff --git a/btgui/urdf/urdfdom/urdf_parser/src/twist.cpp b/btgui/urdf/urdfdom/urdf_parser/src/twist.cpp index 211782564..4980e17de 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/twist.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/twist.cpp @@ -35,7 +35,7 @@ /* Author: John Hsu */ -#include +#include #include #include #include diff --git a/btgui/urdf/urdfdom/urdf_parser/src/urdf_model_state.cpp b/btgui/urdf/urdfdom/urdf_parser/src/urdf_model_state.cpp index 4cb60f892..f30b8456e 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/urdf_model_state.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/urdf_model_state.cpp @@ -35,7 +35,7 @@ /* Author: John Hsu */ -#include +#include #include #include #include diff --git a/btgui/urdf/urdfdom/urdf_parser/src/urdf_sensor.cpp b/btgui/urdf/urdfdom/urdf_parser/src/urdf_sensor.cpp index 58db5cdbe..85a886d3f 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/urdf_sensor.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/urdf_sensor.cpp @@ -35,7 +35,7 @@ /* Author: John Hsu */ -#include +#include #include #include #include diff --git a/btgui/urdf/urdfdom/urdf_parser/src/world.cpp b/btgui/urdf/urdfdom/urdf_parser/src/world.cpp index f858b259d..ddc27c5f3 100644 --- a/btgui/urdf/urdfdom/urdf_parser/src/world.cpp +++ b/btgui/urdf/urdfdom/urdf_parser/src/world.cpp @@ -35,8 +35,8 @@ /* Author: Wim Meeussen */ -#include -#include +#include +#include #include #include #include diff --git a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/joint.h b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/joint.h index 0cfb80fc7..cd889dcec 100644 --- a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/joint.h +++ b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/joint.h @@ -43,10 +43,10 @@ #include #define my_shared_ptr my_shared_ptr #else -#include +#include #endif -#include "urdf_model/pose.h" +#include namespace urdf{ diff --git a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/link.h b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/link.h index 649516469..67a1647ec 100644 --- a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/link.h +++ b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/link.h @@ -46,7 +46,7 @@ #include #include #else - #include + #include #endif #include "joint.h" diff --git a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/model.h b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/model.h index b40fdb53d..5bd11a6d6 100644 --- a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/model.h +++ b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/model.h @@ -40,9 +40,9 @@ #include #include //#include -#include +#include -#include +#include namespace urdf { diff --git a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/pose.h b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/pose.h index 1f99efb3c..93183c8f8 100644 --- a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/pose.h +++ b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/pose.h @@ -49,11 +49,11 @@ #include #include #else - #include - #include + #include + #include #endif //URDF_USE_BOOST -#include +#include #include namespace urdf{ diff --git a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/twist.h b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/twist.h index ba57e4c0c..5560de34a 100644 --- a/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/twist.h +++ b/btgui/urdf/urdfdom_headers/urdf_model/include/urdf_model/twist.h @@ -41,7 +41,7 @@ #include #include #include -#include +#include namespace urdf{