YouBotBase.hpp
Go to the documentation of this file.
00001 #ifndef YOUBOT_YOUBOTBASE_H
00002 #define YOUBOT_YOUBOTBASE_H
00003 
00004 /****************************************************************
00005  *
00006  * Copyright (c) 2011
00007  * All rights reserved.
00008  *
00009  * Hochschule Bonn-Rhein-Sieg
00010  * University of Applied Sciences
00011  * Computer Science Department
00012  *
00013  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00014  *
00015  * Author:
00016  * Jan Paulus, Nico Hochgeschwender, Michael Reckhaus, Azamat Shakhimardanov
00017  * Supervised by:
00018  * Gerhard K. Kraetzschmar
00019  *
00020  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00021  *
00022  * This sofware is published under a dual-license: GNU Lesser General Public 
00023  * License LGPL 2.1 and BSD license. The dual-license implies that users of this
00024  * code may choose which terms they prefer.
00025  *
00026  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00027  *
00028  * Redistribution and use in source and binary forms, with or without
00029  * modification, are permitted provided that the following conditions are met:
00030  *
00031  *     * Redistributions of source code must retain the above copyright
00032  *       notice, this list of conditions and the following disclaimer.
00033  *     * Redistributions in binary form must reproduce the above copyright
00034  *       notice, this list of conditions and the following disclaimer in the
00035  *       documentation and/or other materials provided with the distribution.
00036  *     * Neither the name of the Hochschule Bonn-Rhein-Sieg nor the names of its
00037  *       contributors may be used to endorse or promote products derived from
00038  *       this software without specific prior written permission.
00039  *
00040  * This program is free software: you can redistribute it and/or modify
00041  * it under the terms of the GNU Lesser General Public License LGPL as
00042  * published by the Free Software Foundation, either version 2.1 of the
00043  * License, or (at your option) any later version or the BSD license.
00044  *
00045  * This program is distributed in the hope that it will be useful,
00046  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00047  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00048  * GNU Lesser General Public License LGPL and the BSD license for more details.
00049  *
00050  * You should have received a copy of the GNU Lesser General Public
00051  * License LGPL and BSD license along with this program.
00052  *
00053  ****************************************************************/
00054 #include <vector>
00055 #include <sstream>
00056 #include <string>
00057 #include <youbot_driver/generic/Logger.hpp>
00058 #include <youbot_driver/generic/Units.hpp>
00059 #include <youbot_driver/generic/Time.hpp>
00060 #include <youbot_driver/generic/ConfigFile.hpp>
00061 #include <youbot_driver/generic/Exceptions.hpp>
00062 #include <youbot_driver/youbot/YouBotJoint.hpp>
00063 #include <youbot_driver/youbot/YouBotJointParameter.hpp>
00064 #include <youbot_driver/base-kinematic/FourSwedishWheelOmniBaseKinematic.hpp>
00065 #include <youbot_driver/base-kinematic/FourSwedishWheelOmniBaseKinematicConfiguration.hpp>
00066 #include <youbot_driver/youbot/EthercatMaster.hpp>
00067 #include <youbot_driver/youbot/EthercatMasterInterface.hpp>
00068 #include <youbot_driver/youbot/EthercatMasterWithThread.hpp>
00069 #include <youbot_driver/youbot/EthercatMasterWithoutThread.hpp>
00070 #include <boost/ptr_container/ptr_vector.hpp>
00071 #include <boost/scoped_ptr.hpp>
00072 namespace youbot
00073 {
00074 
00076 #define BASEJOINTS 4
00077 
00078 
00079 
00080 class YouBotBase
00081 {
00082 public:
00083   YouBotBase(const std::string name, const std::string configFilePath);
00084 
00085   virtual ~YouBotBase();
00086 
00088   void doJointCommutation();
00089 
00092   YouBotJoint& getBaseJoint(const unsigned int baseJointNumber);
00093 
00098   void getBasePosition(quantity<si::length>& longitudinalPosition, quantity<si::length>& transversalPosition,
00099                        quantity<plane_angle>& orientation);
00100 
00105   void setBasePosition(const quantity<si::length>& longitudinalPosition,
00106                        const quantity<si::length>& transversalPosition, const quantity<plane_angle>& orientation);
00107 
00112   void getBaseVelocity(quantity<si::velocity>& longitudinalVelocity, quantity<si::velocity>& transversalVelocity,
00113                        quantity<si::angular_velocity>& angularVelocity);
00114 
00119   void setBaseVelocity(const quantity<si::velocity>& longitudinalVelocity,
00120                        const quantity<si::velocity>& transversalVelocity,
00121                        const quantity<si::angular_velocity>& angularVelocity);
00122 
00124   FourSwedishWheelOmniBaseKinematic youBotBaseKinematic;
00125 
00129   virtual void setJointData(const std::vector<JointAngleSetpoint>& JointData);
00130 
00134   virtual void getJointData(std::vector<JointSensedAngle>& data);
00135 
00139   virtual void setJointData(const std::vector<JointVelocitySetpoint>& JointData);
00140 
00144   virtual void getJointData(std::vector<JointSensedVelocity>& data);
00145 
00149   virtual void setJointData(const std::vector<JointCurrentSetpoint>& JointData);
00150 
00154   virtual void getJointData(std::vector<JointSensedCurrent>& data);
00155 
00159   virtual void setJointData(const std::vector<JointTorqueSetpoint>& JointData);
00160 
00164   virtual void getJointData(std::vector<JointSensedTorque>& data);
00165 
00166 private:
00167   YouBotBase(const YouBotBase & source);
00168 
00169   YouBotBase & operator=(const YouBotBase & source);
00170 
00172   void commutationFirmware200();
00173 
00175   void commutationFirmware148();
00176 
00177   void initializeJoints();
00178 
00179   void initializeKinematic();
00180 
00181   boost::scoped_ptr<ConfigFile> configfile;
00182 
00183   boost::ptr_vector<YouBotJoint> joints;
00184 
00185   int controllerType;
00186 
00187   int alternativeControllerType;
00188 
00189   EthercatMasterInterface& ethercatMaster;
00190 
00191   EthercatMasterWithThread* ethercatMasterWithThread;
00192 
00193   std::vector<std::string> supportedFirmwareVersions;
00194 
00195   std::string actualFirmwareVersionAllJoints;
00196 
00197 };
00198 
00199 } // namespace youbot
00200 #endif


youbot_driver
Author(s): Jan Paulus
autogenerated on Mon Oct 6 2014 09:08:01