nao_driver.cpp
Go to the documentation of this file.
00001 
00023 #include <iostream>
00024 #include "nao_dcm_driver/nao.h"
00025 #include <alcommon/albroker.h>
00026 #include <alcommon/albrokermanager.h>
00027 
00028 using std::string;
00029 using std::cerr;
00030 using std::endl;
00031 
00032 int main( int argc, char** argv )
00033 {
00034     int pport = 9559;
00035     string pip = "127.0.0.1";
00036     ros::init(argc, argv, "nao_dcm_driver");
00037     ros::NodeHandle n;
00038     ros::NodeHandle n_p("~");
00039     if(!ros::master::check())
00040     {
00041         cerr<<"Could not contact master!\nQuitting... "<<endl;
00042         return -1;
00043     }
00044     // A broker needs a name, an IP and a port:
00045     string broker_name = "Nao Driver Broker";
00046     // FIXME: would be a good idea to look for a free port first
00047     int broker_port = 54000;
00048     // listen port of the broker (here an anything)
00049     string broker_ip = "0.0.0.0";
00050 
00051     // Load Params from Parameter Server
00052 
00053     n_p.param("RobotIP", pip, string("127.0.0.1"));
00054 //    n_p.param("RobotIP", pip, string("10.0.132.254"));
00055     n_p.param("RobotPort", pport,9559);
00056     n_p.param("DriverBrokerPort", broker_port, 54000);
00057     n_p.param("DriverBrokerIP", broker_ip, string("0.0.0.0"));
00058 
00059     // Create your own broker
00060     boost::shared_ptr<AL::ALBroker> broker;
00061     try
00062     {
00063         broker = AL::ALBroker::createBroker(broker_name,broker_ip,broker_port,pip,pport,0);
00064 
00065         // Workaround because stiffness does not work well via DCM
00066         AL::ALProxy tempMotion("ALMotion", pip, pport);
00067         tempMotion.callVoid("setStiffnesses","Body",1.0f);
00068     }
00069     catch(...)
00070     {
00071         ROS_ERROR("Failed to connect to Broker at %s:%d!",pip.c_str(),pport);
00072         return -1;
00073     }
00074 
00075     // Deal with ALBrokerManager singleton (add your broker into NAOqi)
00076     AL::ALBrokerManager::setInstance(broker->fBrokerManager.lock());
00077     AL::ALBrokerManager::getInstance()->addBroker(broker);
00078 
00079     // Now it's time to load your module
00080     boost::shared_ptr<Nao> nao = AL::ALModule::createModule<Nao>(broker, "Nao");
00081     nao->connect(n);
00082     if(!nao->connected())
00083     {
00084         ROS_ERROR("Could not connect to Nao robot!");
00085         AL::ALBrokerManager::getInstance()->killAllBroker();
00086         AL::ALBrokerManager::kill();
00087         return -1;
00088     }
00089     // Run the spinner in a separate thread to prevent lockups
00090     ros::AsyncSpinner spinner(1);
00091     spinner.start();
00092     if(broker->isModulePresent("Nao"))
00093         ROS_INFO("Nao Module loaded succesfully!");
00094     else
00095     {
00096         ROS_ERROR("Nao Module is not loaded!");
00097         return -1;
00098     }
00099 
00100     // Run Nao Driver Loop
00101     nao->run();
00102 
00103     AL::ALBrokerManager::getInstance()->killAllBroker();
00104     AL::ALBrokerManager::kill();
00105     spinner.stop();
00106     ROS_INFO( "Quitting... " );
00107     return 0;
00108 }


nao_dcm_driver
Author(s): Konstantinos Chatzilygeroudis
autogenerated on Wed Oct 19 2016 03:58:50