00001 #ifndef YOUBOT_JOINTDATA_H 00002 #define YOUBOT_JOINTDATA_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 <youbot_driver/generic/Units.hpp> 00055 00056 namespace youbot 00057 { 00058 00062 class JointData 00063 { 00064 }; 00068 class JointSensedData : public JointData 00069 { 00070 }; 00074 class JointComputedData : public JointSensedData 00075 { 00076 }; 00080 class JointSensedPWM : public JointSensedData 00081 { 00082 public: 00083 signed int pwm; 00084 00085 JointSensedPWM(); 00086 00087 JointSensedPWM(const signed int& value); 00088 00089 }; 00093 class JointSensedAngle : public JointSensedData 00094 { 00095 public: 00096 quantity<plane_angle> angle; 00097 00098 JointSensedAngle(); 00099 00100 JointSensedAngle(const quantity<plane_angle>& value); 00101 00102 }; 00106 class JointSensedEncoderTicks : public JointSensedData 00107 { 00108 public: 00109 signed int encoderTicks; 00110 00111 JointSensedEncoderTicks(); 00112 00113 JointSensedEncoderTicks(const signed int& value); 00114 00115 }; 00119 class JointSensedVelocity : public JointSensedData 00120 { 00121 public: 00122 quantity<si::angular_velocity> angularVelocity; 00123 00124 JointSensedVelocity(); 00125 00126 JointSensedVelocity(const quantity<si::angular_velocity>& value); 00127 00128 }; 00132 class JointSensedRoundsPerMinute : public JointSensedData 00133 { 00134 public: 00135 int rpm; 00136 00137 JointSensedRoundsPerMinute(); 00138 00139 JointSensedRoundsPerMinute(const int value); 00140 00141 }; 00145 class JointSensedCurrent : public JointSensedData 00146 { 00147 public: 00148 quantity<si::current> current; 00149 00150 JointSensedCurrent(); 00151 00152 JointSensedCurrent(const quantity<si::current>& value); 00153 00154 }; 00158 class JointSensedTorque : public JointComputedData 00159 { 00160 public: 00161 quantity<si::torque> torque; 00162 00163 JointSensedTorque(); 00164 00165 JointSensedTorque(const quantity<si::torque>& value); 00166 00167 }; 00171 class JointDataSetpoint : public JointData 00172 { 00173 }; 00177 class JointComputedSetpoint : public JointDataSetpoint 00178 { 00179 }; 00183 class JointAngleSetpoint : public JointDataSetpoint 00184 { 00185 public: 00186 quantity<plane_angle> angle; 00187 00188 JointAngleSetpoint(); 00189 00190 JointAngleSetpoint(const quantity<plane_angle>& value); 00191 00192 }; 00196 class JointVelocitySetpoint : public JointDataSetpoint 00197 { 00198 public: 00199 quantity<angular_velocity> angularVelocity; 00200 00201 JointVelocitySetpoint(); 00202 00203 JointVelocitySetpoint(const quantity<angular_velocity>& value); 00204 00205 }; 00209 class JointRoundsPerMinuteSetpoint : public JointDataSetpoint 00210 { 00211 public: 00212 int rpm; 00213 00214 JointRoundsPerMinuteSetpoint(); 00215 00216 JointRoundsPerMinuteSetpoint(const int value); 00217 00218 }; 00222 class JointCurrentSetpoint : public JointDataSetpoint 00223 { 00224 public: 00225 quantity<si::current> current; 00226 00227 JointCurrentSetpoint(); 00228 00229 JointCurrentSetpoint(const quantity<si::current>& value); 00230 00231 }; 00235 class JointTorqueSetpoint : public JointComputedSetpoint 00236 { 00237 public: 00238 quantity<si::torque> torque; 00239 00240 JointTorqueSetpoint(); 00241 00242 JointTorqueSetpoint(const quantity<si::torque>& value); 00243 00244 }; 00248 class JointPWMSetpoint : public JointDataSetpoint 00249 { 00250 public: 00251 int pwm; 00252 00253 JointPWMSetpoint(); 00254 00255 JointPWMSetpoint(const int value); 00256 00257 }; 00261 class JointEncoderSetpoint : public JointDataSetpoint 00262 { 00263 public: 00264 signed int encoderTicks; 00265 00266 JointEncoderSetpoint(); 00267 00268 JointEncoderSetpoint(const signed int& value); 00269 00270 }; 00274 class JointControllerComputedData : public JointSensedData 00275 { 00276 }; 00280 class JointRampGeneratorVelocity : public JointControllerComputedData 00281 { 00282 public: 00283 quantity<si::angular_velocity> angularVelocity; 00284 00285 JointRampGeneratorVelocity(); 00286 00287 JointRampGeneratorVelocity(const quantity<si::angular_velocity>& value); 00288 00289 }; 00290 00291 } // namespace youbot 00292 #endif