From 4778866f1ca3b22ac01f6ce2a1e1fa3783e2b58b Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Tue, 15 Mar 2016 02:39:57 +0100 Subject: [PATCH] sensor refactoring moved Camera and Ray sensor classes into own headers --- urdf_sensor/include/urdf_sensor/camera.h | 79 +++++++++++++ .../include/urdf_sensor/{sensor.h => ray.h} | 109 +----------------- urdf_sensor/include/urdf_sensor/types.h | 52 ++++++++- 3 files changed, 130 insertions(+), 110 deletions(-) create mode 100644 urdf_sensor/include/urdf_sensor/camera.h rename urdf_sensor/include/urdf_sensor/{sensor.h => ray.h} (57%) diff --git a/urdf_sensor/include/urdf_sensor/camera.h b/urdf_sensor/include/urdf_sensor/camera.h new file mode 100644 index 0000000..4f40ac6 --- /dev/null +++ b/urdf_sensor/include/urdf_sensor/camera.h @@ -0,0 +1,79 @@ +/********************************************************************* +* Software License Agreement (BSD License) +* +* Copyright (c) 2008, Willow Garage, Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following +* disclaimer in the documentation and/or other materials provided +* with the distribution. +* * Neither the name of the Willow Garage nor the names of its +* contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +*********************************************************************/ + +/* Author: John Hsu */ + +/* example + + + + + 1.5708 + + + + + +*/ + +#ifndef URDF_SENSOR_CAMERA_H +#define URDF_SENSOR_CAMERA_H + +namespace urdf { + +class Camera : public SensorBase +{ +public: + Camera() { this->clear(); }; + unsigned int width, height; + /// format is optional: defaults to R8G8B8), but can be + /// (L8|R8G8B8|B8G8R8|BAYER_RGGB8|BAYER_BGGR8|BAYER_GBRG8|BAYER_GRBG8) + std::string format; + double hfov; + double near; + double far; + + void clear() + { + hfov = 0; + width = 0; + height = 0; + format.clear(); + near = 0; + far = 0; + } +}; + +} +#endif diff --git a/urdf_sensor/include/urdf_sensor/sensor.h b/urdf_sensor/include/urdf_sensor/ray.h similarity index 57% rename from urdf_sensor/include/urdf_sensor/sensor.h rename to urdf_sensor/include/urdf_sensor/ray.h index dc25c06..6ac4d31 100644 --- a/urdf_sensor/include/urdf_sensor/sensor.h +++ b/urdf_sensor/include/urdf_sensor/ray.h @@ -36,14 +36,6 @@ /* example - - - - 1.5708 - - - - @@ -56,63 +48,12 @@ */ +#ifndef URDF_SENSOR_RAY_H +#define URDF_SENSOR_RAY_H +namespace urdf { -#ifndef URDF_SENSOR_H -#define URDF_SENSOR_H - -#include -#include -#include -#include "urdf_model/pose.h" -#include "urdf_model/joint.h" -#include "urdf_model/link.h" -#include "urdf_model/types.h" -#include "urdf_sensor/types.h" - -namespace urdf{ - -class SensorBase { -public: - enum {VISUAL, FORCE, TACTILE, IMU, GYRO, ACCELERATION, GPS} sensor_type; - virtual ~SensorBase(void) - { - } -}; - -class VisualSensor : public SensorBase -{ -public: - enum {CAMERA, RAY, DEPTH} type; - virtual ~VisualSensor(void) - { - } -}; - -class Camera : public VisualSensor -{ -public: - Camera() { this->clear(); }; - unsigned int width, height; - /// format is optional: defaults to R8G8B8), but can be - /// (L8|R8G8B8|B8G8R8|BAYER_RGGB8|BAYER_BGGR8|BAYER_GBRG8|BAYER_GRBG8) - std::string format; - double hfov; - double near; - double far; - - void clear() - { - hfov = 0; - width = 0; - height = 0; - format.clear(); - near = 0; - far = 0; - }; -}; - -class Ray : public VisualSensor +class Ray : public SensorBase { public: Ray() { this->clear(); }; @@ -136,48 +77,8 @@ class Ray : public VisualSensor vertical_resolution = 1; vertical_min_angle = 0; vertical_max_angle = 0; - }; + } }; - -class Sensor -{ -public: - Sensor() { this->clear(); }; - - /// sensor name must be unique - std::string name; - - /// update rate in Hz - double update_rate; - - /// transform from parent frame to optical center - /// with z-forward and x-right, y-down - Pose origin; - - /// sensor - SensorBaseSharedPtr sensor; - - /// Parent link element name. A pointer is stored in parent_link_. - std::string parent_link_name; - - LinkSharedPtr getParent() const - {return parent_link_.lock();}; - - void setParent(LinkSharedPtr parent) - { this->parent_link_ = parent; } - - void clear() - { - this->name.clear(); - this->sensor.reset(); - this->parent_link_name.clear(); - this->parent_link_.reset(); - }; - -private: - LinkWeakPtr parent_link_; - -}; } #endif diff --git a/urdf_sensor/include/urdf_sensor/types.h b/urdf_sensor/include/urdf_sensor/types.h index df00f79..13d0b25 100644 --- a/urdf_sensor/include/urdf_sensor/types.h +++ b/urdf_sensor/include/urdf_sensor/types.h @@ -32,20 +32,60 @@ * POSSIBILITY OF SUCH DAMAGE. *********************************************************************/ -/* Author: Steve Peters */ +/* Author: Robert Haschke */ #ifndef URDF_SENSOR_TYPES_H #define URDF_SENSOR_TYPES_H -#include +#include "urdf_model/types.h" +#include "urdf_model/pose.h" +namespace urdf { -namespace urdf{ +URDF_TYPEDEF_CLASS_POINTER(Sensor); +URDF_TYPEDEF_CLASS_POINTER(SensorBase); +URDF_TYPEDEF_CLASS_POINTER(Camera); +URDF_TYPEDEF_CLASS_POINTER(Ray); -class SensorBase; +class SensorBase +{ +public: + virtual void clear() = 0; + virtual ~SensorBase(void) {} +}; -// typedef shared pointers -typedef boost::shared_ptr SensorBaseSharedPtr; +/** Sensor class is wrapper comprising generic sensor information + * like name, update rate, sensor frame (parent link + origin transform) + * TODO: think about mergin with SensorBase + */ +class Sensor +{ +public: + Sensor() { this->clear(); }; + + /// sensor name must be unique + std::string name_; + + /// update rate in Hz + double update_rate_; + + /// name of parent link this sensor is attached to + std::string parent_link_; + + /// transform from parent frame sensor frame + Pose origin_; + + /// sensor + SensorBaseSharedPtr sensor_; + + void clear() + { + name_.clear(); + parent_link_.clear(); + origin_.clear(); + sensor_.reset(); + } +}; }