Fawkes API
Fawkes Development Version
|
00001 00002 /*************************************************************************** 00003 * robot.h - Fawkes to OpenRAVE Robot Handler 00004 * 00005 * Created: Mon Sep 20 14:50:34 2010 00006 * Copyright 2010 Bahram Maleki-Fard, AllemaniACs RoboCup Team 00007 * 00008 ****************************************************************************/ 00009 00010 /* This program is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2 of the License, or 00013 * (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 * GNU Library General Public License for more details. 00019 * 00020 * Read the full text in the LICENSE.GPL file in the doc directory. 00021 */ 00022 00023 #ifndef __PLUGINS_OPENRAVE_ROBOT_H 00024 #define __PLUGINS_OPENRAVE_ROBOT_H 00025 00026 #include "types.h" 00027 00028 #include <openrave/openrave.h> 00029 #include <vector> 00030 00031 namespace fawkes { 00032 #if 0 /* just to make Emacs auto-indent happy */ 00033 } 00034 #endif 00035 00036 class Logger; 00037 class OpenRaveManipulator; 00038 class OpenRaveEnvironment; 00039 00040 /** OpenRAVE Robot class */ 00041 class OpenRaveRobot 00042 { 00043 public: 00044 OpenRaveRobot(fawkes::Logger* logger = 0); 00045 OpenRaveRobot(const std::string& filename, fawkes::OpenRaveEnvironment* env, fawkes::Logger* logger = 0); 00046 virtual ~OpenRaveRobot(); 00047 00048 // build/load robot parts 00049 virtual void load(const std::string& filename, fawkes::OpenRaveEnvironment* env); 00050 virtual void set_ready(); 00051 virtual void set_offset(float trans_x, float trans_y, float trans_z); 00052 virtual void calibrate(float device_trans_x, float device_trans_y, float device_trans_z); 00053 virtual void set_manipulator(fawkes::OpenRaveManipulator* manip, bool display_movements = false); 00054 virtual void update_manipulator(); 00055 virtual void update_model(); 00056 00057 virtual bool attach_object(OpenRAVE::KinBodyPtr object); 00058 virtual bool attach_object(const std::string& name, fawkes::OpenRaveEnvironment* env); 00059 virtual bool release_object(OpenRAVE::KinBodyPtr object); 00060 virtual bool release_object(const std::string& name, fawkes::OpenRaveEnvironment* env); 00061 virtual bool release_all_objects(); 00062 00063 virtual bool set_target_rel(float trans_x, float trans_y, float trans_z, bool is_extension=false); 00064 virtual bool set_target_straight(float trans_x, float trans_y, float trans_z); 00065 virtual bool set_target_quat(float trans_x, float trans_y, float trans_z, float quat_w, float quat_x, float quat_y, float quat_z, bool no_offset = false); 00066 virtual bool set_target_axis_angle(float trans_x, float trans_y, float trans_z, float angle, float axisX, float axisY, float axisZ, bool no_offset = false); 00067 virtual bool set_target_euler(euler_rotation_t type, float trans_x, float trans_y, float trans_z, float phi, float theta, float psi, bool no_offset = false); 00068 virtual bool set_target_ikparam(OpenRAVE::IkParameterization ik_param); 00069 virtual void set_target_plannerparams(std::string& params); 00070 virtual void set_target_angles( std::vector<float>& angles ); // just temporary 00071 00072 virtual bool set_target_object_position(float trans_x, float trans_y, float trans_z, float rot_x); 00073 00074 virtual OpenRAVE::RobotBasePtr get_robot_ptr() const; 00075 virtual target_t get_target() const; 00076 virtual OpenRaveManipulator* get_manipulator() const; 00077 virtual OpenRAVE::PlannerBase::PlannerParametersPtr get_planner_params() const; 00078 virtual std::vector< std::vector<OpenRAVE::dReal> >* get_trajectory() const; 00079 virtual std::vector< std::vector<float> >* get_trajectory_device() const; 00080 00081 virtual bool display_planned_movements() const; 00082 00083 virtual OpenRAVE::ModuleBasePtr get_basemanip() const; 00084 00085 private: 00086 void init(); 00087 bool set_target_transform(OpenRAVE::Vector& trans, OpenRAVE::Vector& rotQuat, bool no_offset = false); 00088 bool set_target_euler(OpenRAVE::Vector& trans, std::vector<float>& rotations, bool no_offset = false); 00089 OpenRAVE::IkParameterization get_5dof_ikparam(OpenRAVE::Transform& trans); 00090 00091 fawkes::Logger* __logger; 00092 00093 std::string __name; 00094 OpenRAVE::RobotBasePtr __robot; 00095 OpenRAVE::RobotBase::ManipulatorPtr __arm; 00096 OpenRaveManipulator* __manip; 00097 target_t __target; 00098 00099 00100 OpenRAVE::ModuleBasePtr __mod_basemanip; 00101 00102 OpenRAVE::PlannerBase::PlannerParametersPtr __planner_params; 00103 std::vector< std::vector<OpenRAVE::dReal> >* __traj; 00104 00105 float __trans_offset_x; 00106 float __trans_offset_y; 00107 float __trans_offset_z; 00108 00109 bool __display_planned_movements; 00110 }; 00111 00112 } // end of namespace fawkes 00113 00114 #endif